Как запустить qemu прямо в консоли (* не * в curses или SDL)

18

Кажется, я помню возможность запуска qemu только с вывода эмулятора терминала, с отключенным графическим окном. И здесь я не имею в виду интерфейс ncurses, который хорош, но я хочу, чтобы вывод перетекал прямо в мой терминал, чтобы упростить вырезание и вставку.

Я пытался:

qemu -nographic binary.img # simply no display
qemu -curses binary.img # nice text output, but not directly flowing in the terminal
qemu -noframe -curses binary.img # same as above
qemu -nographic -curses binary.img

Я предполагаю, что приемлемый обходной путь был бы для меня, чтобы иметь возможность изменить размер консоли curses, чтобы соответствовать терминалу, который я использую. Прямо сейчас это раздражает, потому что это не соответствует размеру терминала ...

qemu -curses  binary.img



           SeaBIOS (version 1.7.0-20120603_194846-gandalf)



           iPXE (http://ipxe.org) 00:03.0 C900 PCI2.10 PnP PMM+07FC86A0+07F886A0 C900


           Booting from Hard Disk...
           [...]

Обратите внимание, как на дисплее с отступом 12 пробелов? Раздражает. :)

anarcat
источник
Использовать 80-колоночный терминал?
Майкл Хэмптон
Я мог бы поклясться, что был способ дать этому потоку правильно, возможно, я не помню это правильно ...
anarcat
1
Интересно, не следует ли объединить это с stackoverflow.com/questions/19565116/… и / или stackoverflow.com/questions/18098455/…
anarcat
связанные: stackoverflow.com/questions/6710555/…
Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件

Ответы:

18

Старый вопрос, но он все еще может заинтересовать людей.

Короткий ответ:

qemu -nographic -serial mon:stdio -append 'console=ttyS0' binary.img

ttyS0действует на большинстве ПК. это было бы что-то другое в системе ARM.

Затем последовательный порт и QEMU мультиплексируются на вашем выходе. Вы можете переключаться между ними с помощью ctrl-A + C + ENTER.

Длинный ответ: проверьте этот блог , это круто.

Фред
источник
1
Казалось бы, работать без серийного для меня.
Сиро Сантилли 新疆 15 中心 法轮功 六四 事件
да, похоже, в последней версии qemu по-прежнему интересно узнать, можно ли также мультиплексировать консоль serial + qemu на stdio
Фред
1
К сожалению, это не перенаправляет вывод BIOS, включая вывод int 0x10, используемый кодом реального режима; вы начинаете получать вывод только после того, как ядро ​​Linux загрузится достаточно, чтобы открыть последовательный порт.
Давид Дано
@ DavidGiven Я полагаю, это вопрос того, что код BIOS (который является SeaBIOS, а не собственно qemu) на самом деле делает с «выводом» 0x10.
ДепрессияДаниэль
Вы можете также добавить console=ttyS0к GRUB_CMDLINE_LINUX_DEFAULTв /etc/grub(не забудьте позвонить update-grubпосле) для того , чтобы автоматически иметь место.
Стив
3

Установите SGABIOS - ISTR, чтобы последние версии Qemu использовали его автоматически при запуске с -nographic.

sendmoreinfo
источник
как ни странно, в Debian это, похоже, не упаковано, поэтому я сомневаюсь, что это было то, что я использовал ...
anarcat
1

Вы можете обновить GRUB, чтобы передать необходимые параметры ядру. Я использую Ubuntu 18.04, и я сделал следующее:

Обновление grub в гостевой ОС:

  • sudoedit /etc/default/grub
  • Изменить GRUB_CMDLINE_LINUX=""наGRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,9600n8"
  • бегать sudo update-grub

Перезагрузите гостевую ОС, используя следующее:

qemu-system-x86_64 \
  -drive file=ubuntu-18.04-live-server-amd64.img.qcow2,format=qcow2 \
  -nographic \
  -m 4G \
;

Я рекомендую добавить -nic user,hostfwd=tcp:127.0.0.1:2222-:22или аналогичную опцию, так как это позволит подключиться через ssh, ssh -p 2222 localhostчто дает немного более приятный интерфейс, чем у консоли.

Параметры консоли скопированы из удаленного последовательного HOWTO tldp

юлианский
источник
вопрос был не в том, как настроить grub, а скорее в qemu. но я считаю, что, как говорится в первом ответе, это -nographicправильно. спасибо за ваш вклад! :)
anarcat