So starten Sie qemu direkt in der Konsole (* nicht * in curses oder SDL)


18

Ich erinnere mich, dass ich qemu nur mit der Ausgabe des Terminal-Emulators starten konnte und das Grafikfenster deaktiviert war. Und hier meine ich nicht mit der ncurses-Schnittstelle, die ist schön, aber ich möchte, dass die Ausgabe direkt in mein Terminal fließt, um das Ausschneiden und Einfügen zu vereinfachen.

Ich habe versucht:

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

Ich denke, eine akzeptable Problemumgehung wäre, wenn ich die Größe der Curses-Konsole an das von mir verwendete Terminal anpassen könnte. Im Moment ist es ärgerlich, weil es nicht zur Terminalgröße passt ...

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

Beachten Sie, wie die Anzeige 12 Stellen eingerückt ist? Nervig. :)


Verwenden Sie ein 80-Spalten-Terminal?
Michael Hampton

Ich hätte schwören können, dass es eine Möglichkeit gibt, dies richtig fließen zu lassen, vielleicht kann ich mich nicht an dieses Recht erinnern ...
anarcat


Antworten:


18

Alte Frage, aber es könnte immer noch Menschen interessieren.

Kurzantwort:

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

ttyS0Gültig auf den meisten PCs. Auf dem ARM-System wäre das etwas anderes.

Dann werden die serielle Schnittstelle und die QEMU an Ihrem Ausgang gemultiplext. Sie können mit zwischen ihnen wechseln ctrl-A + C + ENTER.

Lange Antwort: Schau in diesem Blog nach , es ist großartig.


1
Schien für mich ohne Serien zu arbeiten.
Ciro Santilli

Ja, es scheint so, als ob es auf dem neuesten QEMU immer noch interessant ist, zu lernen, wie man auch serielle + QEMU-Konsolen auf STDIO multiplexen kann
Fred,

1
Leider leitet dies keine BIOS-Ausgabe um, einschließlich der vom Real-Mode-Code verwendeten int 0x10-Ausgabe. Sie erhalten erst dann eine Ausgabe, wenn der Linux-Kernel genügend hochgefahren ist, um die serielle Schnittstelle zu öffnen.
David Given

@DavidGiven Ich nehme an, das ist eine Frage dessen , was der BIOS - Code (die SeaBIOS ist, nicht Qemu im eigentlichen Sinne ) tatsächlich funktioniert mit dem 0x10 „Ausgang“.
DepressedDaniel

Sie können auch console=ttyS0zu GRUB_CMDLINE_LINUX_DEFAULTin hinzufügen /etc/grub(stellen Sie sicher, dass Sie danach anrufen update-grub), damit es automatisch stattfindet.
Steve

3

Installieren Sie SGABIOS - ISTR, das von den aktuellen Qemu - Versionen automatisch verwendet wird, wenn Sie mit ausgeführt werden -nographic.


Seltsamerweise scheint das nicht in Debian
gepackt

1

Sie können GRUB aktualisieren, um die erforderlichen Optionen an den Kernel zu übergeben. Ich benutze Ubuntu 18.04 und habe folgendes gemacht:

Update grub im Gastbetriebssystem:

  • sudoedit /etc/default/grub
  • Wechseln Sie GRUB_CMDLINE_LINUX=""zuGRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,9600n8"
  • Lauf sudo update-grub

Starten Sie das Gastbetriebssystem folgendermaßen neu:

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

Ich empfehle auch das Hinzufügen -nic user,hostfwd=tcp:127.0.0.1:2222-:22oder ähnliches als Option. Dadurch wird die SSH-Konnektivität aktiviert, über ssh -p 2222 localhostdie eine etwas schönere Benutzeroberfläche als über die Konsole bereitgestellt wird.

Die Konsolenoptionen werden aus dem seriellen HOWTO von tldp kopiert


Die Frage war nicht wirklich, wie man grub konfiguriert, sondern eher qemu. aber ich glaube, wie die erste antwort sagt, -nographicist das richtig. danke für dein contirbution! :)
anarcat
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.