QEMU Guide (Español)

From ParabolaWiki
Jump to: navigation, search
Summary
KVM
QEMU

1 Acerca de este artículo

Este artículo responde algunas dudas acerca de como crear y ejecutar máquinas virtuales QEMU (VM) desde Parabola y cómo obtener un mejor rendimiento durante el uso de nuestras VM. En nuestros ejemplos usaremos una cpu con dos núcleos y soporte kvm.

Nota: los binarios qemu-system-* (por ejemplo qemu-system-i386 o qemu-system-x86_64, dependiendo de la arquitectura emulada) se usan para ejecutar el sistema virtualizado.

2 Algunos consejos a tener en cuenta antes de usar QEMU

La opción -cpu host fue usada para lograr que QEMU emulase la CPU de un máquina anfitriona en particular. Si no hace esto, tratará de emular una CPU más genérica . Si la máquina anfitriona tiene múltiples CPUs, asígnele a la máquina hospedada la opción -smp, en nuestro caso igual a 2, de acuerdo al número de núcleos que estamos usando. Asegúrese de asignar suficiente memoria a la máquina virtual. Por defecto, QEMU solamente asigna 128MB para cada máquina virtual. Use la opción -m option para asignar más memoria. Por ejemplo, -m 512 corre una máquina virtual con 512MiB de memoria en nuestro caso. Consulte here por más detalles more details.

Nota: Lea los siguientes pasos antes de comenzar para saber si su máquina posee soporte para kvm

3 Cómo crear la imagen (ejemplo: 10 Gb)

$ qemu-img create -f raw distro_image.img 10G
Nota: Lea los siguientes pasos here para más detalles.

4 Para instalar una distro desde una imagen

$ qemu-system-i386 -enable-kvm -machine type=pc,accel=kvm -cpu host -smp 2 -m 512 -vga std -soundhw all -usb -usbdevice tablet -net nic -net user -hda distro_image.img -cdrom ~/distro.iso -boot d

5 Uso de máquinas virtuales (conexión en modo usuario)

Aquí tenemos un ejemplo de cómo abrir una VM:

$ qemu-system-i386 -enable-kvm -machine type=pc,accel=kvm -cpu host -smp 2 -m 512 -vga std -soundhw all -usb -usbdevice tablet -net nic -net user -hda distro_image.img

Sin embargo, si desea especificar la dirección hospedada visible a la anfitriona para usar direcciones estáticas en su VM, la bandera -net user posee importantes opciones. La opción net configura la dirección IP que la hospedada verá. Opcionalmente especifica la máscara de red, ya sea en la forma a.b.c.d o como número de bits más altos válidos. Por defecto es 10.0.2.0/24. La opción host especifica la dirección visible a la máquina hospedada de la anfitriona. Por defecto es la segunda IP en la red de la máquina hospedada, por ejemplo x.x.x.2. La opción dns especifica la dirección visible de la máquina hospedada del servidor vde nombres virtual. La dirección debe ser diferente de la dirección de la anfitriona. Por defecto es la tercera IP en la red de la hospedada, por ejemplo x.x.x.3.

Aquí mostramos un ejemplo:

$ qemu-system-i386 -enable-kvm -machine type=pc,accel=kvm -cpu host -smp 2 -m 512 -vga std -soundhw all -usb -usbdevice tablet -net nic -net user,net=192.168.0.0/24,host=192.168.0.2,dns=192.168.0.1 -hda distro_image.img
Nota: La máscara de red en la bandera -net user puede ser diferente a su máscara de red en su máquina. Por ejemplo, una máquina real podría ser 192.168.0.0/24 y la hospedada 10.0.2.0/24. Consulte la documentación sobre QEMU de la bandera -net user por más detalles.

6 Uso de máquinas virtuales para servidores de uso desde SO hospedados (conexión en modo bridge usando qemu-bridge-helper)

Lo siguiente describe cómo hacer un bridge con una máquina virtual para una interface anfitriona tal como eth0, la configuración más común. Esta configuración hace que parezca que la máquina virtual está localizada directamente en una red externa, o en el mismo segmento Ethernet como una máquina anfitriona físicamente real.

Un bridge es una pieza de software usada para unir dos o más segmentos de red. Un bridge se comporta como un selector de red virtual, que funciona transparentemente (las otras máquinas no necesitan saber o preocuparse de su existencia). Se le puedea conectar cualquier dispositivo real (por ejemplo eth0) o virtual (por ejemplo tap0).

Este artículo explica cómo crear un bridge que contenga al menos un dispositivo ethernet.

6.1 Instalación

Instale el paquete netctl desde los repositorios oficiales.

Instale el paquete bridge-utils desde los repositorios oficiales.

6.2 Configuración (Parabola como máquina anfitriona)

  • Cargue el módulo tun y configúrelo para que sea cargado al reiniciar. Consulte Kernel modules por detalles.
  • Agregue al grupo kvm su usuario para obtener permisos para usar el modo bridge.
# gpasswd -a your_user kvm
  • Cree el tap. Recuerde nombrar su brigde como tap0, o cámbiele el nombre en los scripts de más abajo.
# cp -a /etc/netctl/examples/tuntap /etc/netctl/examples/tap0
  • Cree el bridge. Recuerede nombrar a su bridge como br0, o cámbiele el nombre en los scripts de más abajo.
# cp -a /etc/netctl/examples/bridge /etc/netctl/examples/br0
  • En este ejemplo. editamos nuestro eth0, creamos un bridge llamado br0 que tiene un adaptador Ethernet real eth0 y un dispositivo tap tap0 conectado. Incluso creamos manualmente tap desde netctl también.
/etc/netctl/eth0
Connection=ethernet
Description='Ethernet connection'
Interface=eth0
IP=no
IP6=no
/etc/netctl/tap0
Description='Tuntap connection'
Interface=tap0
Connection=tuntap
Mode='tap'
User='nobody'
Group='nobody'
/etc/netctl/br0
Description="Static bridge connection"
Interface=br0
Connection=bridge
BindsToInterfaces=(eth0 tap0)
IP=static
IP6=static
Address='192.168.0.100/24'
Address6='fd06:dc06:1ab2::100/48'
Gateway='192.168.0.1'
Gateway6='fd06:dc06:1ab2::1'
Hostname=your_hostname
DNS=('192.168.0.1' 'fd06:dc06:1ab2::1')
DNSDomain=your_domain_name.org
DNSSearch=your_domain_name.org

Incluso, como usamos una IP estática, también editamos /etc/resolv.conf.

/etc/resolv.conf
# Generated by resolvconf
domain your_domain_name.org
nameserver 192.168.0.1
nameserver fd06:dc06:1ab2::1
Nota: El nombre de dominio es opcional
  • Puede establecer un bridge entre cualquier combinación de dispositivos de red editando la opción BindsToInterfaces.
  • Si algunos de los dispositivos (por ejemplo eth0, tap0) están habilitados dhcpcd, deshabilite y detenga el demonio {ic|dhcpcd@eth0.service}}. O configure IP=no a los perfiles netctl.
  • Reinicie /etc/netctl/eth0, yhabilite e inicie /etc/netctl/tap0 y /etc/netctl/br0, respectivamente.
  • Copie /etc/qemu/bridge.conf.sample a /etc/qemu/bridge.conf. Modifique /etc/qemu/bridge.conf para que contenga los nombres de todos los bridges a usar por parte de QEMU:
/etc/qemu/bridge.conf
allow br0
  • Finalmente, tipee el siguiente comando para usar QEMU en modo bridge.
$ qemu-system-i386 -enable-kvm -machine type=pc,accel=kvm -cpu host -smp 2 -m 512 -vga std -soundhw all -usb -usbdevice tablet -net nic -net bridge -hda distro_image.img

6.3 Configuración (Parabola como máquina hospedada)

Después de ingresar en nuestra máquina hospedada, editemos eth0

/etc/netctl/eth0
Connection=ethernet
Description='Ethernet connection'
Interface=eth0
IP=static
IP6=static
Address='192.168.0.101/24'
Address6='fd06:dc06:1ab2::101/48'
Gateway='192.168.0.1'
Gateway6='fd06:dc06:1ab2::1'
Hostname=your_hostname_guest
DNS=('192.168.0.1' 'fd06:dc06:1ab2::1')
DNSDomain=your_domain_name.org
DNSSearch=your_domain_name.org

Incluso cuando usemos una IP estática, debemos editar también /etc/resolv.conf.

/etc/resolv.conf
# Generated by resolvconf
domain your_domain_name.org
nameserver 192.168.0.1
nameserver fd06:dc06:1ab2::1

7 Máquinas virtuales con soporte de drivers vmware

El siguiente ejemplo es muy útil si desea mejorar el rendimiento del video.

Nota: Lea las siguientes instrucciones en [1] y [2] para obtener más información acerca de drivers vmware
$ export SDL_VIDEO_X11_DGAMOUSE=0 && qemu-system-i386 -enable-kvm -machine type=pc,accel=kvm -cpu host -smp 2 -m 512 -vga vmware -soundhw all -usb -usbdevice tablet -net nic,model=virtio -net user -hda distro_image.img

7.1 Configuración del monitor para vmware

Nota: Este paso es OPCIONAL y no se debería hacer a menos que sepa lo que está haciendo.

Primero, cree un nuevo achivo de configuración en el sistema hospedado tal como /etc/X11/xorg.conf.d/10-monitor.conf.

Inserte el siguiente código dentro del archivo de configuración mencionado más arriba:

/etc/X11/xorg.conf.d/
Section "Monitor"
    Identifier    "Monitor0"
    HorizSync 1.0 - 10000.0
    VertRefresh 1.0 - 10000.0
EndSection

Section "Device"
    Identifier    "Device0"
    Driver        "vmware" #Choose the driver used for this monitor
EndSection

Section "Screen"
    Identifier    "Screen0"  #Collapse Monitor and Device section to Screen section
    Device        "Device0"
    Monitor       "Monitor0"
    DefaultDepth  24 #Choose the depth (16||24)
    SubSection "Display"
        Viewport 0 0
        Depth       24
        Modes     "1600x1200" #Choose the resolution
    EndSubSection
EndSection 

8 Máquina virtual con drivers vmware y soporte a virtio

Usando drivers virtio, mejorará el rendimiento y reducirá la sobrecarga de su VM.

$ export SDL_VIDEO_X11_DGAMOUSE=0 && qemu-system-i386 -enable-kvm -machine type=pc,accel=kvm -cpu host -smp 2 -m 512 -vga vmware -soundhw all -usb -usbdevice tablet -net nic,model=virtio -net user -boot order=c -drive file=distro_image.img,if=virtio
Advertencia: Siga los instrucciones para vmware en la nota previa e incluso las señaladas aquí here antes de usarla

9 Cómo habilitar el dispositivo USB en máquinas virtuales

Antes de habilitarlo, necesitará conocer la identificación del USB, en nuestro caso es un pendrive:

$ lsusb
Bus 005 Device 002: ID 0951:1607 Kingston Technology DataTraveler 100
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Nuestro ID es 0951:1607, entonces el parámetro -usbdevice debe ser:

-usbdevice host:0951:1607

Aquí hay un ejemplo:

$ export SDL_VIDEO_X11_DGAMOUSE=0 && qemu-system-i386 -enable-kvm -machine type=pc,accel=kvm -cpu host -smp 2 -m 512 -vga vmware -soundhw all -usb -usbdevice table,host:0951:1607 -net nic,model=virtio -net user -boot order=c -drive file=distro_image.img,if=virtio

10 Consejos para la emulación

Las siguientes combinaciones de teclas son muy útiles en qemu:

 ctrl-alt-f      alterna pantalla completa
 ctrl-alt-n      cambia a consola virtual 'n'
 ctrl-alt        alterna captura de teclado y mouse