Tutorial: Instalando ReactOS en QEMU, automatizando comandos
En la tercera parte del tutorial ya vimos como arrancar una maquina virtual muy basica y correr ReactOS en ella, pues bien ahora es momento de automatizar esta tarea de modo que no sea necesario escribir el mismo comando una y otra vez en cada ocasion que necesitemos arrancar nuestra maquina virtual.
Para lograr automatizar los comandos con los que vamos a invocar a QEMU, procederemos a crear un sencillo pero poderoso script en lenguaje batch, que nos permitira configurar no solo una, sino tantas maquinas virtuales distintas como se nos ocurra, incluso varias versiones de una misma maquina virtual con diferentes opciones, sin mas que agregar, manos a la obra.
El script tendra por nombre qemu-launcher.bat y lo guardaremos preferiblemente en C:\VMs
Comenzaremos de manera muy sencilla declarando unas cuantas variables globales, estas variables son ovbiamente las rutas hacia las carpetas que previamente hemos creado en nuestro disco duro.
@ECHO OFF
SET QEMU_PATH=C:\Qemu-2.6.0-windows
SET VMS_PATH=C:\VMs
SET ISO_PATH=%VMS_PATH%\ISO
SET QCOW_PATH=%VMS_PATH%\QCOW
SET LOGS_PATH=%VMS_PATH%\LOGS
Lo siguiente sera especificar los sistemas que necesitaremos emular con QEMU.
SET QEMU_I386=qemu-system-i386w
SET QEMU_AMD64=qemu-system-x86_64w
El siguiente paso es capturar el primer parametro con el que invocaremos al script, eso se logra usando la variable magica %1.
SET VM_NAME=%1
A continuacion viene la seccion del codigo donde declararemos las opciones individuales de cada maquina virtual que necesitemos crear. Como podran darse cuenta, hemos especificado un disco duro, una unidad optica y un archivo de texto que almacenara el registro de depuracion de ReactOS.
IF "%VM_NAME%" == "reactos" (
SET HDA_IMAGE=reactos.qcow2
SET CDROM_IMAGE=reactos-livecd-dbg.iso
SET LOG_FILE=debug.txt
)
Ahora viene una seccion que en resumidas cuentas, se encarga de verificar que las variables no tengan valores nulos, de lo contrario esa determinada opcion no se agregara al comando de ejecucion final. Ademas adjuntara las opciones de arranque, y dispositivos varios como el adaptador de red y la tarjeta grafica.
IF NOT DEFINED QEMU_SYSTEM (
SET QEMU_SYSTEM=%QEMU_I386%
SET QEMU_CPU=qemu32
)
SET QEMU_CMD="%QEMU_SYSTEM% -name %VM_NAME% -M pc -cpu %QEMU_CPU% -L bios -m 256"
IF DEFINED HDA_IMAGE (
SET QEMU_CMD=%QEMU_CMD%" -hda %QCOW_PATH%\%HDA_IMAGE%"
)
IF DEFINED HDB_IMAGE (
SET QEMU_CMD=%QEMU_CMD%" -hdb %QCOW_PATH%\%HDB_IMAGE%"
)
IF DEFINED CDROM_IMAGE (
SET QEMU_CMD=%QEMU_CMD%" -cdrom %ISO_PATH%\%CDROM_IMAGE%"
)
IF NOT DEFINED BOOT_ORDER (
SET BOOT_ORDER=dc
)
SET QEMU_CMD=%QEMU_CMD%" -boot order="%BOOT_ORDER%
SET QEMU_CMD=%QEMU_CMD%" -net nic,model=rtl8139 -net user -vga std"
IF DEFINED LOG_FILE (
SET QEMU_CMD=%QEMU_CMD%" -serial file:%LOGS_PATH%\%LOG_FILE%"
)
Antes de ejecutar el comando necesitamos quitar las comillas dobles al inicio y al final de la cadena de texto, este snippet de codigo que encontre en ss64.com hara el trabajo.
SET QEMU_CMD=###%QEMU_CMD%###
SET QEMU_CMD=%QEMU_CMD:"###=%
SET QEMU_CMD=%QEMU_CMD:###"=%
Y para finalizar, ejecutamos el comando completo usando el sub-comando START.
START "%VM_NAME%" /D %QEMU_PATH% %QEMU_CMD%
El codigo completo de este script se encuentra disponible en Pastebin para su descarga.
Ahora vamos a la carpeta donde guardamos el script y le hacemos click derecho > Enviar a > Escritorio (crear acceso directo), luego en el acceso directo que acabamos de crear en el escritorio, le hacemos click derecho > propiedades > en el campo Destino situamos el cursor al final del texto y agregamos textualmente el nombre de la maquina virtual (por ejemplo: reactos) y presionamos el boton OK. De ahora en adelante al hacer doble click en dicho acceso directo, ejecutaremos inmediatamente la maquina virtual en cuestion.
Agregar mas maquinas virtuales es muy facil, tan solo hay que agregarlas bajo la ultima configuracion, a modo de ejemplo:
IF "%VM_NAME%" == "winxp" (
SET HDA_IMAGE=windows_xp.qcow
SET CDROM_IMAGE=XPLite.iso
SET BOOT_ORDER=dc
)
Hasta aqui llega este tutorial, espero de mi parte que toda la informacion te haya sido util y puedas darle a tope con los testeos de ReactOS.