Jak uruchomić qemu bezpośrednio w konsoli (* nie * w curses lub SDL)


18

Wydaje mi się, że pamiętam, że mogłem uruchomić qemu tylko z wyjściem emulatora terminala, przy wyłączonym oknie graficznym. I tutaj nie mam na myśli interfejsu ncurses, który jest fajny, ale chcę, aby wyjście przepływało bezpośrednio do mojego terminala, aby ułatwić wycinanie i wklejanie.

Próbowałem:

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

Wydaje mi się, że akceptowalnym obejściem będzie zmiana rozmiaru konsoli curses, tak aby pasowała do terminalu, którego używam. W tej chwili jest to denerwujące, ponieważ nie pasuje do rozmiaru terminala ...

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...
           [...]

Zauważ, jak wcięcie wyświetlacza ma 12 spacji? Denerwujący. :)


Używać terminalu z 80 kolumnami?
Michael Hampton

Mógłbym przysiąc, że istnieje sposób, aby pozwolić temu płynąć poprawnie, może nie pamiętam tego dobrze ...
anarcat

1
zastanawiam się, czy nie powinno się to łączyć z stackoverflow.com/questions/19565116/… i / lub stackoverflow.com/questions/18098455/…
anarcat

Odpowiedzi:


18

Stare pytanie, ale wciąż może interesować ludzi.

Krótka odpowiedź:

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

ttyS0ważne na większości komputerów. w systemie ARM byłoby inaczej.

Następnie port szeregowy i QEMU są multipleksowane na wyjściu. Możesz przełączać się między nimi za pomocą ctrl-A + C + ENTER.

Długa odpowiedź: sprawdź tego bloga , jest niesamowity.


1
Wydawało mi się, że pracuję bez numeru seryjnego.
Ciro Santilli 21 改造 中心 法轮功 六四 事件

tak, wygląda na to, że na najnowszym qemu nadal ciekawie jest dowiedzieć się, że można również multipleksować konsolę szeregową + qemu na standardowym interfejsie
Fred

1
Niestety nie przekierowuje to żadnego wyjścia BIOS-u, w tym wyjścia 0x10 używanego przez kod trybu rzeczywistego; zaczniesz uzyskiwać dane wyjściowe dopiero po uruchomieniu jądra Linux na tyle, aby otworzyć port szeregowy.
David Biorąc pod uwagę

@DavidGiven przypuszczam, że jest to kwestia tego, co faktycznie robi kod BIOS (który jest SeaBIOS, a nie qemu właściwy) z „wyjściem” 0x10.
Depressed

Można również dodać console=ttyS0do GRUB_CMDLINE_LINUX_DEFAULTw /etc/grub(upewnij się, aby zadzwonić update-grubpo) za to odbywać automatycznie.
Steve

3

Zainstaluj SGABIOS - ISTR, że najnowsze wersje Qemu używają go automatycznie po uruchomieniu -nographic.


co dziwne, wydaje się, że nie jest to zapakowane w Debianie, więc wątpię, że tego właśnie
używałem

1

Możesz zaktualizować GRUB, aby przekazać wymagane opcje do jądra. Używam Ubuntu 18.04 i wykonałem następujące czynności:

Zaktualizuj grub w systemie-gościu:

  • sudoedit /etc/default/grub
  • Zmień GRUB_CMDLINE_LINUX=""naGRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,9600n8"
  • biegać sudo update-grub

Uruchom ponownie system operacyjny gościa za pomocą:

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

Polecam również dodanie -nic user,hostfwd=tcp:127.0.0.1:2222-:22lub podobnego jako opcji, umożliwi to łączność ssh, dzięki ssh -p 2222 localhostktórej interfejs jest nieco ładniejszy niż konsola.

Opcje konsoli są kopiowane ze zdalnego seryjnego tldp HOWTO


pytanie tak naprawdę nie dotyczyło konfiguracji gruba, ale więcej qemu. ale uważam, że jak mówi pierwsza odpowiedź, -nographicjest to poprawne. dzięki za wasze zarażenie! :)
anarcat
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.