Я недавно обнаружил, что qemu-kvm
имеет очень многообещающий -curses
вариант, который вместо запуска X-окна будет показывать хороший вывод ncurses от гостя, подходящий для управления гостевым Linux из командной строки (или, что более удовлетворительно, в рамках сеанса экрана, или даже через ssh).
Итак, я попробовал это и обнаружил, что мой гость Arch Linux переходит в «Графический режим», что делает эту функцию бесполезной. Из того, что мне удалось выяснить, проблема в том, что гостевое ядро инициализирует фреймбуфер, чтобы обеспечить разрешение символов выше 80x60 (и красивую графику). Итак, я пошел на охоту, чтобы найти способ предотвратить запуск фреймбуфера гостевым ядром. Я пробовал различные параметры ядра, nomodeset
, fb=false
, vga=0x0FF
, vga=ask
(и впоследствии выбрав VGA
а не VESA
режим), безрезультатно: каждый раз qemu-kvm -curses
сообщает, что гостевая система находится в «графическом режиме» (после начальных загрузочных меню), и я не могу взаимодействовать с гостем из терминала командной строки на хосте.
Есть ли простой способ сохранить гостевое ядро в том же режиме, в котором оно запускается (без фреймбуфера), без изменения параметра сборки ядра? Если нет, то какие параметры сборки ядра мне следует изменить, чтобы скомпилировать ядро без поддержки фреймбуфера? Есть ли лучший способ получить вход в виртуальную машину с терминала на хосте в чисто текстовом режиме (например, подходящий для запуска в сеансе экрана на хосте), не прибегая к запуску sshd на гостевой машине?
Итак, базовый модуль, который необходимо отключить, это fbcon
, однако ядро Arch не компилирует его как модуль, поэтому помещает его в черный список. По-прежнему можно определить и отключить конкретный драйвер, который fbcon
запускается, но такой драйвер не указан lsmod
, так qemu-kvm
драйвер компилируется в Arch. Отключить fbcon
сам по себе, вы должны использовать свой собственный странный синтаксис опции загрузки:
fbcon=map:99
где 99
это просто какое-то произвольно большое число, превышающее количество устройств фреймбуфера в системе (обычно 1-2).
Видеть fbcon.txt для получения дополнительной информации.
vga16fb.modeset=0
работал у меня в прошлом (в Ubuntu). Также в Ubuntu работало занесение в черный список всех модулей фреймбуфера (включая vga16fb).
Попробуйте запустить его так:
TERM=dumb qemu-kvm -curses ...