Назад | Перейти на главную страницу

QEMU-KVM Linux виртуализация из командной строки

Я недавно обнаружил, что 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 ...