Як запустити qemu безпосередньо в консолі (* не * в лайках або 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 пробілів? Дратівливий. :)


Використовувати термінал на 80 стовпців?
Майкл Хемптон

Я міг би присягнути, що існував спосіб дозволити цьому текти належним чином, можливо, я не пам’ятаю цього права ...
anarcat

1
Цікаво , якщо це не повинно бути об'єднано з stackoverflow.com/questions/19565116 / ... і / або stackoverflow.com/questions/18098455 / ...
anarcat

Відповіді:


18

Старе питання, але це все ще може зацікавити людей.

Короткий відгук:

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

ttyS0дійсний на більшості ПК. це було б щось інше в системі ARM.

Потім послідовний порт і QEMU мультиплексуються на вашому виході. Ви можете перемикатися між ними за допомогою ctrl-A + C + ENTER.

Довга відповідь: перевірити цей блог , це приголомшливо.


1
Здавалося, працює для мене без серіалу.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

так, так здається, на останньому qemu все ще цікаво дізнатися, що ви також можете мультиплексувати серійні + qemu консолі на stdio
Фред

1
На жаль, це не перенаправляє жоден вихід BIOS, включаючи вихід 0x10 int, використовуваний кодом реального режиму; ви починаєте отримувати вихід лише після того, як ядро ​​Linux завантажиться достатньо, щоб відкрити послідовний порт.
Девід Даний

@DavidGiven Я вважаю, що це питання того, що насправді робить код BIOS (який є SeaBIOS, а не qemu належним чином) з 0x10 "виведенням".
ДепресіяДаніель

Ви можете також додати console=ttyS0до GRUB_CMDLINE_LINUX_DEFAULTв /etc/grub(не забудьте зателефонувати update-grubпісля) для того , щоб автоматично мати місце.
Стів

3

Встановіть SGABIOS - ISTR, що останні версії Qemu використовують його автоматично при запуску -nographic.


як не дивно, це, здається, не упаковано в Debian, тому я сумніваюся, що це я використовував ...
anarcat

1

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

Оновити груб у гостьовій ОС:

  • 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.