Cómo iniciar qemu directamente en la consola (* no * en maldiciones o SDL)


18

Creo recordar haber podido iniciar qemu solo con la salida del emulador de terminal, con la ventana gráfica deshabilitada. Y aquí no me refiero a la interfaz ncurses, esa es buena, pero quiero que la salida fluya directamente a mi terminal, para que cortar y pegar sea más fácil.

Yo he tratado:

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

Supongo que una solución aceptable sería poder cambiar el tamaño de la consola curses para que se ajuste al terminal que estoy usando. En este momento es molesto porque no se ajusta al tamaño del terminal ...

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

Observe cómo la pantalla tiene sangría de 12 espacios? Molesto. :)


¿Usar un terminal de 80 columnas?
Michael Hampton

Podría haber jurado que había una manera de dejar que esto fluyera correctamente, tal vez no lo recuerdo bien ...
anarcat

1
Me pregunto si esto no debería fusionarse con stackoverflow.com/questions/19565116/… y / o stackoverflow.com/questions/18098455/…
anarcat

Respuestas:


18

Antigua pregunta, pero aún podría interesar a la gente.

Respuesta corta:

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

ttyS0válido en la mayoría de las PC. Sería algo diferente en el sistema ARM.

Luego, el puerto serie y la QEMU se multiplexan en su salida. Puedes cambiar entre ellos con ctrl-A + C + ENTER.

Respuesta larga: mira este blog , es increíble.


1
Parecía trabajar sin serial para mí.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

sí, parece que en el último qemu todavía es interesante saber que también puedes multiplexar en serie + consola qemu en stdio
Fred

1
Desafortunadamente, esto no redirige ninguna salida del BIOS, incluida la salida int 0x10 utilizada por el código en modo real; solo comienza a obtener salida una vez que el kernel de Linux se inicia lo suficiente como para abrir el puerto serie.
David dado el

@DavidGiven Supongo que es una cuestión de lo que el código del BIOS (que es SeaBIOS, no qemu apropiado) realmente hace con la "salida" 0x10.
DepressedDaniel

También puede agregar console=ttyS0a GRUB_CMDLINE_LINUX_DEFAULTen /etc/grub(asegúrese de llamar update-grubdespués) para que ésta se produzca de forma automática.
Steve

3

Instale SGABIOS - ISTR que las versiones recientes de Qemu lo usan automáticamente cuando se ejecuta con -nographic.


Por extraño que parezca, eso no parece estar empaquetado en Debian, así que dudo que esto sea lo que estaba usando ...
anarcat

1

Puede actualizar GRUB para pasar las opciones requeridas al kernel. Estoy usando Ubuntu 18.04 e hice lo siguiente:

Actualizar grub en el SO invitado:

  • sudoedit /etc/default/grub
  • Cambiar GRUB_CMDLINE_LINUX=""aGRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,9600n8"
  • correr sudo update-grub

Reinicie el SO huésped usando lo siguiente:

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

Recomiendo agregar -nic user,hostfwd=tcp:127.0.0.1:2222-:22o similar como una opción también, esto habilitará la conectividad ssh a través de la ssh -p 2222 localhostcual se obtiene una interfaz un poco mejor que la consola.

Las opciones de la consola se copian del COMO serial remoto de tldp


La pregunta no era realmente cómo configurar grub, sino más qemu. pero creo que, como dice la primera respuesta, eso -nographices correcto. gracias por tu contirbution! :)
anarcat
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.