QEMU Guide (Español)
Summary |
---|
KVM |
QEMU |
Contents
- 1 Acerca de este artículo
- 2 Algunos consejos a tener en cuenta antes de usar QEMU
- 3 Cómo crear la imagen (ejemplo: 10 Gb)
- 4 Para instalar una distro desde una imagen
- 5 Uso de máquinas virtuales (conexión en modo usuario)
- 6 Uso de máquinas virtuales para servidores de uso desde SO hospedados (conexión en modo bridge usando qemu-bridge-helper)
- 7 Máquinas virtuales con soporte de drivers vmware
- 8 Máquina virtual con drivers vmware y soporte a virtio
- 9 Cómo habilitar el dispositivo USB en máquinas virtuales
- 10 Consejos para la emulación
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.
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.
3 Cómo crear la imagen (ejemplo: 10 Gb)
$ qemu-img create -f raw distro_image.img 10G
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
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
- 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
- Reinicie /etc/netctl/eth0
7 Máquinas virtuales con soporte de drivers vmware
El siguiente ejemplo es muy útil si desea mejorar el rendimiento del video.
$ 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
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
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