Ir al contenido

QEMU/Monitor

De Wikilibros, la colección de libros de texto de contenido libre.

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

[editar]

ayuda

[editar]
  • 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

(qemu) help info

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

[editar]
  • 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

[editar]

change

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

(qemu) info block
ide0-hd0: type=hd removable=0 file=/path/to/winxp.img
ide0-hd1: type=hd removable=0 file=/path/to/pagefile.raw
ide1-hd1: type=hd removable=0 file=/path/to/testing_data.img
ide1-cd0: type=cdrom removable=1 locked=0 file=/dev/sr0 ro=1 drv=host_device
floppy0: type=floppy removable=1 locked=0 [not inserted]
sd0: type=floppy removable=1 locked=0 [not inserted]
(qemu) change ide1-cd0 /path/to/my.iso
(qemu) change ide1-cd0 /dev/sr0 host_device

eject

[editar]
  • 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

[editar]

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

[editar]

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

[editar]

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

mouse_button

[editar]

mouse_set index

[editar]

sendkey keys

[editar]

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

[editar]

screendump

[editar]
  • screendump nombre_fichero

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

wavcapture

[editar]

stopcapture

[editar]

Máquina virtual

[editar]

commit

[editar]
  • 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

[editar]
  • quit or q

Sale de QEMU inmediatamente.

savevm

[editar]
  • 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

[editar]
  • 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

[editar]

Elimina la máquina virtual etiquetada 'nombre'.

stop

[editar]

Suspende la ejecución de la máquina virtual

cont

[editar]

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

system_reset

[editar]

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

[editar]

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

[editar]
  • log opción

logfile

[editar]
  • logfile nombre_fichero

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

gdbserver

[editar]

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

shell$ gdb qemuKernelFile
(gdb) target remote localhost:1234

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

[editar]

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:

(qemu) xp /3i $eip

Ejemplo - Muestra las últimas 20 palabras en la pila de un procesador x86:

(qemu) xp /20wx $esp

print

[editar]

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.

(qemu) print 16
0x10
(qemu) print 16 + 0x10
0x20
(qemu) print $eax
0xc02e4000
(qemu) print $eax + 2
0xc02e4000
(qemu) print ($eax + 2) * 2
0x805c8004
(qemu) print 0x80000000 * 2
0

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

sum

[editar]

memsave

[editar]

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

Enlaces

[editar]

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