Как использовать qemu для запуска ОС без графического интерфейса на терминале? - PullRequest
18 голосов
/ 15 июля 2011

Я хочу запускать некоторые программы на высокопроизводительном компьютере (с 8-ядерным процессором) в моем отделе. Теперь я использую эту машину с ssh используя терминал. На машине установлен Red Hat Linux. Но мои программы должны работать на Solaris. Я использую Nexenta Solaris для x86.

Можно ли использовать qemu для запуска Nexenta Solaris на этой машине через терминал. Мне нужно убедить администратора, что это возможно, иначе он не установит qemu на эту машину и, следовательно, разрешит мне использовать Solaris через виртуальную машину. Также обратите внимание, что я не использую графический интерфейс с Nexenta Solaris, просто командную строку. На моей машине я использую VMware для ее запуска.

Ответы [ 3 ]

30 голосов
/ 19 июля 2011

Вы можете скомпилировать qemu для себя и установить его в свой домашний каталог. Не будет никакого ускорителя qemu в режиме ядра, но qemu будет работать и скорость будет довольно высокой.

В Qemu есть два варианта запуска без графического интерфейса: http://wiki.qemu.org/download/qemu-doc.html

Параметры отображения:

-nographic - Обычно QEMU использует SDL для отображения выхода VGA. С помощью этой опции вы можете полностью отключить графический вывод, чтобы QEMU было простым приложением командной строки. Эмулируемый последовательный порт перенаправляется на консоль. Следовательно, вы все равно можете использовать QEMU для отладки ядра Linux с помощью последовательной консоли.

-curses - Обычно QEMU использует SDL для отображения выхода VGA. С помощью этой опции QEMU может отображать выход VGA в текстовом режиме, используя интерфейс curses / ncurses. В графическом режиме ничего не отображается.

Также он может отправлять графический вывод на другую машину по протоколу VNC (опция -vnc)

7 голосов

-append 'console=ttyS0'

Эта опция также была необходима для ядра Linux, кроме -nographic, упомянутого osgx как в:

qemu-system-x86_64 -append 'console=ttyS0' \
                   -initrd rootfs.cpio.gz \
                   -kernel bzImage \
                   -nographic \
                   -serial mon:stdio \

Теперь вы можете сделатьследующее:

console=ttyS0 говорит ядру использовать последовательный порт вместо дисплея.Последовательный порт передает символы между хостом и гостем вместо пикселей на дисплее, и тогда QEMU может отображать эти символы на терминале.

-serial mon:stdio является необязательным в этой минимальной команде, но обычно это хорошаяИдея иметь вокруг.Например, это улучшает поведение, если вы также хотите добавить удобную -monitor telnet позже:

Это легко проверить с помощью Buildroot qemu_x86_64_defconfig.Я создал , это очень автономная и автоматизированная установка , которая позволяет вам легко попробовать это

Протестировано на Ubuntu 18.04, QEMU 2.11.1.

3 голосов
/ 03 февраля 2017

Я боролся с этим некоторое время и наконец понял, как заставить его работать на меня:

Вам нужно установить SGABIOS.Интересно, что этот BIOS не включен в пакет debian qemu, поэтому вам нужно установить его (как суперпользователь):

apt install sgabios  

Затем при запуске qemu используйте опцию -device, чтобы указать виртуальной машине использоватьsga output

qemu-system-i386 -nographic -device sga discimage.bin

Вуаля!отлично работает над ssh как с монитором, так и с выводом текста через stdio.Вы можете получить доступ к монитору qemu с помощью Ca c.

cheers, ben

...