solaris - requisitos - ¿Cómo usar qemu para ejecutar un sistema operativo que no sea gui en el terminal?
qemu ubuntu (3)
Quiero ejecutar algunos programas en la computadora de alto rendimiento (con procesador de 8 núcleos) en mi departamento. Ahora uso esa máquina con ssh usando terminal. La máquina tiene instalado Red Hat Linux. Pero mis programas necesitan ejecutarse en Solaris. Yo uso Nexenta Solaris para x86.
¿Se puede usar qemu para ejecutar Nexenta Solaris en esa máquina a través de la terminal? Necesito convencer al administrador de que puede hacerlo, de lo contrario no instalará qemu en esa máquina y, por lo tanto, me permitirá usar Solaris a través de una máquina virtual. También tenga en cuenta que no uso GUI con Nexenta Solaris, solo línea de comandos. En mi máquina, uso VMware para ejecutarlo.
Luché contra esto por un tiempo y finalmente descubrí cómo hacerlo funcionar para mí:
Necesitas tener instalado SGABIOS. Curiosamente, este BIOS no está incluido en el paquete debian qemu, por lo que necesita instalarlo (como superusuario):
apt install sgabios
Luego, cuando ejecute qemu use la opción -device para decirle a la máquina virtual que use la salida sga
qemu-system-i386 -nographic -device sga discimage.bin
Voila! funciona perfectamente sobre ssh con el monitor y la salida de texto enviados a través de stdio. Puede acceder al monitor qemu con Ca c.
saludos ben
Puede compilar qemu para usted mismo e instalarlo en su directorio de inicio. No habrá un acelerador de qemu en modo kernel, pero el qemu funcionará y la velocidad será bastante alta.
Qemu tiene dos opciones para comenzar sin gui: http://wiki.qemu.org/download/qemu-doc.html
Opciones de pantalla:
-nographic
: normalmente, QEMU utiliza SDL para mostrar la salida VGA. Con esta opción, puede deshabilitar totalmente la salida gráfica para que QEMU sea una aplicación de línea de comandos simple. El puerto serie emulado se redirige a la consola. Por lo tanto, aún puede usar QEMU para depurar un kernel de Linux con una consola serie.
-curses
- Normalmente, QEMU usa SDL para mostrar la salida VGA. Con esta opción, QEMU puede mostrar la salida VGA cuando está en modo de texto usando una interfaz de curses / ncurses. Nada se muestra en modo gráfico.
También puede enviar salida gráfica a otra máquina a través del protocolo VNC (opción -vnc
)
-append ''console=ttyS0''
Esa opción también era necesaria para el kernel de Linux, además de -nographic
mencionado por osgx como en:
qemu-system-x86_64 -append ''console=ttyS0'' /
-initrd rootfs.cpio.gz /
-kernel bzImage /
-nographic /
-serial mon:stdio /
Ahora puedes hacer lo siguiente:
- Ctrl + AX: salir de qemu, ver: https://superuser.com/questions/1087859/how-to-quit-the-qemu-monitor-when-not-using-a-gui
- Ctrl + C: se pasa al invitado
console=ttyS0
le dice al kernel que use un puerto serie en lugar de la pantalla. El puerto serie envía caracteres entre el host y el invitado, en lugar de píxeles en una pantalla, y luego QEMU puede mostrar esos caracteres en el terminal.
-serial mon:stdio
es opcional en este comando mínimo, pero generalmente es una buena idea tenerlo cerca. Por ejemplo, mejora el comportamiento si también desea agregar un práctico -monitor telnet
más adelante:
- ¿Cómo ejecutar qemu con -nographic y -monitor pero aún así poder enviar Ctrl + C al invitado y salir con Ctrl + AX?
- https://unix.stackexchange.com/questions/167165/how-to-pass-ctrl-c-to-the-guest-when-running-qemu-with-nographic
Esto se puede probar fácilmente con Buildroot qemu_x86_64_defconfig
. Creé que esta es una configuración altamente autónoma y automatizada que le permite probar esto fácilmente
Probado en Ubuntu 18.04, QEMU 2.11.1.