# QEMU/Monitor

Cuando QEMU se está ejecutando, proporciona una consola de monitorización para interactuar con QEMU. A través de varios comandos, el monitor permite inspeccionar el sistema operativo guest (invitado), cambiar medios extraíbles y dispositivos USB, capturar pantallas, grabar audios, y controlar varios aspectos de la máquina virtual.
Al monitor se accede desde el mismo QEMU dejando pulsadas las teclas Ctrl y Alt (o la combinación de teclas que capture el ratón) y pulsando Shift-2. Una vez en el monitor Shift-1 vuelve de nuevo al sistema operativo invitado. Escribiendo help o ? el monitor muestra una lista de todos los comandos. Como alternativa, el monitor se puede redirigir usando la opción en la línea de comandos -monitor <dev> Usando -monitor stdio stdio se enviara el monitor a la salida estándar, esto es muy útil cuando se está usando qemu desde la línea de comandos.

## Ayuda e información
### ayuda

* help [comando] or ? [comando]
Sin argumentos, el comando help muestra todos los comandos disponibles. Para mas detalle acerca de algún comando, escribir help comando, por ejemplo
En una pantalla pequeña / Ventana MV, la lista de los comandos se desplegara en la pantalla demasiado rápido para poder leerla. Para poder desplazarse de tal manera que se pueda leer la lista completa, dejar pulsada la tecla control y pulsar RePág y AvPág.

### información

* info opción
Muestra información de algunos aspectos del sistema operativo guest. Las opciones disponibles son:
* block – dispositivos por bloques, como discos duros, disquetes, cdrom
* blockstats – estadísticas de lectura y escritura en dispositivos por bloques
* capture – activar captura (de sonido)
* history – historial de la consola de comandos
* irq – estadísticas de las interrupciones (si está compilado en QEMU)
* jit – estadísticas del compilador en tiempo de ejecución de QEMU
* kqemu – si el modulo del nucleo kqemu está siendo utilizado
* mem – muestra los mapeos activos de memoria virtual
* mice – ratón del guest que está recibiendo eventos
* network – dispositivos de red y VLANs
* pci – dispositivos PCI que se están emulando
* pcmcia – dispositivos de tarjeta PCMCIA
* pic – estado de i8259 (PIC)
* profile – información del gestor de perfiles interno (si está compilado en QEMU)
* registers – los registros de la CPU
* snapshots – muestra las capturas de pantalla de la MV
* tlb – muestra la TLB (Translation Lookaside Buffer), esto es, tablas de traducción de direcciones entre la memoria física y la virtual,
* usb – USB dispositivos USB en el concentrador virtual USB
* usbhost – dispositivos USB en el sistema operativo host
* uuid – Identificador único de la MV
* version – número de versión de QEMU
* vnc – información VNC

## Dispositivos
### change

* change dispositivo configuración
El comando change permite cambiar medios extraíbles (como CD-ROMs), cambiar las opciones de un VNC y cambiar la contraseña usada en un VNC..
Cuando se necesita en una unidad de CD o DVD, o cambiar entre distintos ficheros .iso, hay que encontrar el nombre de la unidad de CD o DVD usando info y usar después change para realizar el cambio.

### eject

* eject [-f] dispositivo
Usar el comando eject para liberar un dispositivo o fichero conectado a un dispositivo de medios extraíbles especificado.El parámetro -f se puede usar para forzar la expulsión si inicialmente falla

### usb_add

Añadir un fichero del host como si fuera un dispositivo flash USB (se necesita crear por adelantado el fichero en el anfitrión: dd if=/dev/zero of=/tmp/disk.usb bs=1024k count=32)
usb_add disk:/tmp/disk.usb

### usb_del

usar info usb para conseguir la lista de dispositivos usb
(qemu)info usb Device 0.1, Speed 480 Mb/s, Product XXXXXX Device 0.2, Speed 12 Mb/s, Product XXXXX
(qemu)usb_del 0.2
Esto borra el dispositivo

### mouse_move

Envia eventos del movimiento del ratón al guest. mouse_move dx dy [dz] -- nvia eventos de movimientos del ratón. Ejemplo: [qemu]mouse_move -20 20

### sendkey keys

Se puede emular eventos de teclado a través del comando sendkey. La sintaxis es: sendkeys tecla. Para obtener una lista de las teclas, escribir sendkey [tab]. Ejemplos:
* sendkey a
* sendkey shift-a
* sendkey ctrl-u
* sendkey ctrl-alt-f1
A partir de QEMU 0.12.5 hay:
| shift | shift_r | alt | alt_r | altgr | altgr_r |
| ctrl | ctrl_r | menu | esc | 1 | 2 |
| 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 0 | minus | equal | backspace | tab |
| q | w | e | r | t | y |
| u | i | o | p | ret | a |
| s | d | f | g | h | j |
| k | l | z | x | c | v |
| b | n | m | comma | dot | slash |
| asterisk | spc | caps_lock | f1 | f2 | f3 |
| f4 | f5 | f6 | f7 | f8 | f9 |
| f10 | num_lock | scroll_lock | kp_divide | kp_multiply | kp_subtract |
| kp_add | kp_enter | kp_decimal | sysrq | kp_0 | kp_1 |
| kp_2 | kp_3 | kp_4 | kp_5 | kp_6 | kp_7 |
| kp_8 | kp_9 | < | f11 | f12 | print |
| home | pgup | pgdn | end | left | up |
| down | right | insert | delete |

## Capturas de sonido e imagen
### screendump

* screendump nombre_fichero
Captura una pantalla y la guarda en un fichero de imagen PPM.

### stopcapture
## Máquina virtual
### commit

* commit dispositivo or commit all
Cuando se está ejecutando QEMU con la opción -snapshot, confirma los cambios al dispositivo, o a todos los dispositivos.

### quit

* quit or q
Sale de QEMU inmediatamente.

### savevm

* savevm nombre
Guarda la máquina virtual con la etiqueta 'nombre'. No todos los sistemas de ficheros soportan esto, .raw por ejemplo no lo hace pero qcow2 sí.

### loadvm

* loadvm nombre
Carga la máquina virtual etiquetada 'nombre'. Esto también se puede hacer desde la linea de comandos: -loadvm nombre
Con el comando info snapshots, se puede solicitar una lista de las máquinas virtuales disponibles.

### delvm

Elimina la máquina virtual etiquetada 'nombre'.

### stop

Suspende la ejecución de la máquina virtual

### cont

Deshace un comando anterior de stop - continúa la ejecución de la máquina virtual.

### system_reset

Esto tiene un efecto similar al botón físico de reset de un PC. Atención: los sistemas de ficheros podrían quedar en un estado corrupto.

### system_powerdown

Esto tiene un efecto similar al boton físico de encendido en un PC moderno. La máquina virtual una petición de apagado ACPI y normalmente se apagará correctamente.

### log

* log opción

### logfile

* logfile nombre_fichero
Escribe los registros al fichero especificado en vez de en la ruta por defecto, /tmp/qemu.log .

### gdbserver

Inicia una sesión de depuración remota para el depurador GNU (gdb). Para conectarlo desde la máquina host, ejecutar los siguientes comandos:

### x

x /formato dirección
Muestra el contenido de la memoria en la dirección virtual especificada en el formato especificado.
Remitirse a la sección xp para detalles sobre format y address.

### xp

xp /formato dirección
Muestra el contenido de la memoria en la dirección física especificada en el formato especificado.
formato: se usa para especificar el formato de salida de la memoria mostrada. El formato se desglosa en: /[count][data_format][size]
* count: número o ítem a mostrar (base 10)
* data_format: 'x' para hexadecimal, 'd' para decimal, 'u' para decimal sin signo, 'o' para octal, 'c' para carácter e 'i' para instrucciones del procesador (desensamblador)
* size: 'b' para 8 bits, 'h' para 16 bits, 'w' para 32 bits o 'g' para 64 bits. En un x86 'h' y 'w' pueden seleccionar instrucciones en formato de código desensamblador.
dirección:
* Dirección directa, por ejemplo: 0x20000
* Registro, por ejemplo: $eip
Ejemplo - Muestra 3 instrucciones en un procesador x86 comenzando por la instrucción actual:
Ejemplo - Muestra las últimas 20 palabras en la pila de un procesador x86:

### print

Print (or p), evalúa e imprime la expresión que se le de. El resultado será impreso en hexadecimal, pero en decimal también se puede escribir en la expresión. Si el resultado desborda dará un resultado incorrecto. Para usar el valor de un registro de la CPU usar $<nombre registro>.
El nombre del registro deberá estar en minúsculas. Se pueden ver los registros con el comando info registers.
Ejemplo de qemu simulando un i386.
Mas información sobres los nombres de registros de la arquitectura específica se pueden encontrar en el fichero fuente de qemu de más abajo
http://git.qemu.org/?p=qemu.git;a=blob;f=monitor.c;h=1266ba06fb032cb0e7c9dbaa1b6d22cd9047c6b4;hb=HEAD#l3044

### memsave

Uso: memsave <address> <size> <filename>

## Enlaces

Monitor en la documentación de QEMU: http://wiki.qemu.org/download/qemu-doc.html#pcsys_005fmonitor