Vous êtes sur la page 1sur 58

Installing KVM

KVM only works if your CPU has hardware virtualization support either Intel VT-x or
AMD-V. To determine whether your CPU includes these features, run the following
command:

egrep -c (svm|vmx) /proc/cpuinfo

A 0 indicates that your CPU doesnt support hardware virtualization, while a 1 or more
indicates that it does. You may still have to enable hardware virtualization support in
your computers BIOS, even if this command returns a 1 or more.

Use the following command to install KVM and supporting packages. Virt-Manager is a
graphical application for managing your virtual machines you can use the kvm
command directly, but libvirt and Virt-Manager simplify the process.

sudo apt-get install qemu-kvm libvirt-bin bridge-utils virt-


manager

Only the root user and users in the libvirtd group have permission to use KVM virtual
machines. Run the following command to add your user account to the libvirtd group:

sudo adduser name libvirtd

After running this command, log out and log back in. Run this command after logging
back in and you should see an empty list of virtual machines. This indicates that
everything is working correctly.

virsh -c qemu:///system list


Creating Virtual Machines

Once youve got KVM installed, the easiest way to use it is with the Virtual Machine
Manager application. Youll find it in your Dash.

Click the Create New Virtual Machine button on the toolbar and the Virtual Machine
Manager will walk you through selecting an installation method, configuring your virtual
machines virtual hardware, and installing your guest operating system of choice.
The process will by familiar if youve ever used VirtualBox, VMware, or another virtual
machine application. You can install from a disc, ISO image, or even a network
location.
To assign more than 2GB of memory to a virtual machine, youll need a 64-bit Linux
kernel. Systems running 32-bit kernels can assign a maximum of 2 GB of RAM to a
virtual machine.
By default, KVM gives you NAT-like bridged networking your virtual machine wont
appear on the network as its own device, but it will have network access through the
host operating system. If youre running server software in your virtual machine and
want it accessible from other devices on the network, youll have to tweak the
networking settings.
After selecting your installation method, Virt-Manager will boot the guest operating
system in a window. Install the guest operating system as you would on a physical
machine.
Managing Virtual Machines

The Virtual Machine Manager window displays a list of your installed virtual machines.
Right-click virtual machines in the window to perform actions, including starting,
shutting down, cloning, or migrating them.

You can view information about the virtual machine and configure its virtual hardware
by clicking the i-shaped toolbar icon in the virtual machines window.
Qu es KVM?

KVM (Kernel Virtual Machine) es un mdulo del kernel Linux que permite
que los programas en espacio usuario utilicen las caractersticas de
virtualizacin por hardware ofrecidas por diferentes procesadores. En la
actualidad, soporta procesadores AMD e Intel (x86 y x86_64), PPC 440,
PPC 970, S/390, y ARM (Cortex A15).

Qu es QEMU?

QEMU es un emulador de mquinas y virtualizador genrico open source.


Cuando se usa como emulador de mquinas, QEMU puede ejecutar
sistemas operativos y programas compilados para una arquitectura (por
ejemplo un sistema ARM) en una mquina diferente (por ejemplo una
PC), tal como lo demostr en el artculo Emular Raspberry Pi con QEMU y
KVM en CentOS 6. Al utilizar traduccin dinmica, alcanza muy buena
performance.

Cuando se utiliza como virtualizador, QEMU alcanza casi la performance


nativa ya que ejecuta el cdigo guest directamente en el CPU host.
QEMU soporta virtualizacin cuando se ejecuta bajo el hipervisor Xen o a
travs del mdulo del kernel KVM en Linux. Cuando se usa con KVM,
QEMU puede virtualizar sistemas guest x86, PowerPC y S390, entre
otros.

QEMU aprovecha KVM cuando ejecuta una arquitectura guest que


coincide con la arquitectura host. Por ejemplo, cuando se utiliza qemu-
system-x86 sobre un procesador x86 compatible, se aprovecha la
aceleracin de KVM (beneficiando tanto al sistema guest como al host),
ya que el cdigo guest se ejecuta directamente en el host (sin
traduccin).

Anteriormente, KVM mantena su propio fork de QEMU llamado "qemu-


kvm" para soportar virtualizacin por hardware en arquitecturas x86.
Actualmente est deprecated ya que QEMU ha incorporado la
funcionalidad necesaria (ver http://wiki.qemu.org/KVM.

Qu es libvirt?

libvirt (The virtualization API) es un conjunto de herramientas para


interactuar con las capacidades de virtualizacin de las versiones
recientes de Linux (y otros sistemas operativos), liberado bajo la licencia
"GNU Lesser General Public License".

libvirt soporta un gran conjunto de tecnologas entre las que se


destacan:

KVM/QEMU
Xen (en Linux y Solaris)

LXC

OpenVZ

El kernel paravirtualizado User Mode Linux

VirtualBox

VMware ESX y GSX

VMware Workstation y Player

Microsoft Hyper-V

IBM PowerVM

El hipervisor Parallels

Redes virtuales usando bridging, NAT, VEPA y VN-LINK

Almacenamiento en discos IDE/SCSI/USB, FibreChannel, LVM, iSCSI


y NFS

libvirt permite administrar hosts de forma remota utilizando encriptacin


TLS y certificados x509; autenticacin con Kerberos y SASL; control de
acceso local mediante PolicyKit; Zeroconf utilizando Avahi;
administracin de mquinas virtuales, redes y almacenamiento; y una
API cliente portable para Linux, Solaris y Windows.

Entre su amplia variedad de aplicaciones se destacan: virsh y virt-


manager.

KVM

Para poder utilizar KVM se debe contar con un procesador que soporte
virtualizacin por hardware.

En caso de contar con un procesador AMD o Intel, se puede comprobar si


soporta virtualizacin por hardware ejecutando cat /proc/cpuinfo | grep
svm (si se trata de un procesador AMD) o cat /proc/cpuinfo | grep vmx (si
se trata de un procesador Intel), y buscando la existencia de los FLAGS
"svm" (si es AMD) o "vmx" (si es Intel):

[12:09 root@vaio emi] > cat /proc/cpuinfo | grep vmx

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe
syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic
popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm ida arat
epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
fsgsbase smep erms

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe
syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic
popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm ida arat
epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
fsgsbase smep erms

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe
syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic
popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm ida arat
epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
fsgsbase smep erms

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe
syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic
popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm ida arat
epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
fsgsbase smep erms

Si el procesador posee soporte para virtualizacin por hardware, pero


sta no se encuentra habilitada en la BIOS, deber ser habilitada. Este
problema se detecta en el log de mensajes del kernel cuando aparece el
mensaje:

kvm: disabled by bios

En este caso es necesario ingresar en la BIOS del sistema y habilitar el


soporte de virtualizacin por hardware (por defecto suele estar
deshabilitado).

El mdulo del kernel que implementa KVM (kvm) est incluido por
defecto en todos los kernels Linux (mainline Linux) a partir de la versin
2.6.20. Por lo tanto, para utilizar KVM slo hace falta comprobar que el
mdulo est cargado, para ello ejecutar lsmod | grep kvm:

[17:27 root@vaio actions] > lsmod | grep kvm

kvm_intel 126236 0
kvm 363491 1 kvm_intel

Si el mdulo kvm no aparece listado es posible habilitarlo ejecutando:

modprobe kvm_amd

Si se trata de un procesador AMD, o:

modprobe kvm_intel

Si se trata de un procesador Intel.

Instalar QEMU

Antes de compilar QEMU es recomendable instalar las dependencias


opcionales, fundamentalmente spice, de lo contrario no se podr utilizar
el protocolo SPICE en las mquinas virtuales. Estas son device-tree-
compiler, usbredir y spice, las cuales se encuentran en el
repositorio slackbuilds.org (para Slackware 14.1):

device-tree-compile

usbredir

spice

Descargar qemu desde http://wiki.qemu.org/Download. La versin


disponible actualmente es la 1.7.0:

http://wiki.qemu-project.org/download/qemu-1.7.0.tar.bz2

Extraer el tarball:

$ tar xjvf qemu-1.7.0.tar.bz2

Configurar qemu:

$ cd qemu-1.7.0/

Para ver la ayuda ejecutar:

$ ./configure --help

Por defecto compila con soporte para todas las arquitecturas de CPU
disponibles, por lo tanto (salvo que se desee quitar alguna) no hace falta
especificar la "target list".

Las caractersticas que se pueden habilitar son muchas, se recomienda


revisar cuidadosamente la salida de ./configure --help. Es importante
habilitar todas las caractersticas de aceleracin por hardware (KVM),
VNC (junto con los formatos de compresin JPG y PNG), spice, curses, y
soporte para diferentes medios de almacenamiento:

$ ./configure --enable-sdl --enable-gtk --enable-virtfs --enable-vnc


--enable-vnc-tls --enable-vnc-sasl --enable-vnc-jpeg --enable-vnc-png
--enable-vnc-ws --enable-curses --enable-curl --enable-fdt --enable-
bluez --enable-kvm --enable-tcg-interpreter --enable-system --enable-
user --enable-linux-user --enable-guest-base --enable-pie --enable-
uuid --enable-linux-aio --enable-attr --enable-docs --enable-vhost-net
--enable-spice --enable-smartcard-nss --enable-usb-redir --enable-
guest-agent --enable-coroutine-pool --enable-gcov --enable-tpm
--enable-vhdx

El proceso de building demora, ya que se compila con soporte para todas


las arquitecturas de CPU disponibles. Si se desea acelerar, es necesario
especificar manualmente la "target list", indicando slo las arquitecturas
de CPU que se desean soportar. Por ejemplo, si slo se van a utilizar
sistemas operativos guestpara arquitecturas i386 (Intel y AMD de 32 bit),
amd64 (Intel y AMD de 64 bit) y arm (Raspberry Pi), configurar QEMU
agregando la target list:

--target-list=i386-softmmu,x86_64-softmmu,arm-softmmu

Compilar qemu:

$ make

Finalmente, instalar qemu:

# make install

Instalar libvirt

Descargar libvirt desde http://libvirt.org/sources/, la ltima versin


disponible a la fecha es la 1.2.1:

http://libvirt.org/sources/libvirt-1.2.1.tar.gz

Extraer el tarball:

$ tar xzvf libvirt-1.2.1.tar.gz

Configurar libvirt:

$cd libvirt-1.2.1/

Para ver la ayuda ejecutar:

$ ./configure --help
Al igual que QEMU, por defecto instala los binarios en el
directorio /usr/local/bin. Existen muchas caractersticas que se pueden
habilitar, como el soporte para todo tipo de hipervisores, storage, etc. Es
importante habilitar el uso de threads POSIX para mejorar el
rendimiento. Revisar cuidadosamente la ayuda de configure y habilitar
todas las caractersticas necesarias (algunas requieren la instalacin de
paquetes adicionales):

$ ./configure --enable-threads=posix --with-openssl=yes --with-


attr=yes --with-curl=yes --with-dbus=yes --with-pciaccess=yes --with-
readline=yes --with-udev=yes --with-yajl=yes --with-qemu=yes --with-
uml=yes --with-vmware=yes --with-esx=yes --with-polkit=yes --with-
storage-fs=yes --with-storage-lvm=yes

Errores de configuracin:

En caso de haber errores durante el proceso de configuracin, ser


necesario instalar las dependencias faltantes. En mi caso necesit
instalar la librera yajl (Yet Another JSON Library). Para ello descargu el
cdigo fuente desde http://lloyd.github.io/yajl/ y proced a compilar e
instalar, como de costumbre:

$ cd ..

$ mv ~/Downloads/lloyd-yajl-2.0.1-0-gf4b2b1a.tar.gz ./

$ tar xvf lloyd-yajl-2.0.1-0-gf4b2b1a.tar.gz

$ cd lloyd-yajl-f4b2b1a/

$ ./configure

$ make

$ make install

$ cd ../libvirt-1.2.1/

De forma alternativa, es posible instalar esta librera desde los


repositorios (para Slackware se encuentra disponible el SlackBuild yajl).

En mi instalacin de Slackware 14.1, luego de instalar la librera yajl


faltante, pude configurar libvirt correctamente (no necesit instalar
ninguna otra dependencia):

$ ./configure

Finalmente, compilar e instalar libvirt:

$ make

# make install
Instalar virt-manager

Descargar virt-manager (Virtual Machine Manager) desde http://virt-


manager.org/download/, la versin disponible actualmente es la 0.10.0:

http://virt-manager.org/download/sources/virt-manager/virt-manager-
0.10.0.tar.gz

Extraer el tarball:

$ tar xvf virt-manager-0.10.0.tar.gz

Instalar virt-manager:

$ cd virt-manager-0.10.0/

virt-manager est desarrollado completamente en Python. Al tratarse de


un lenguaje interpretado no hay necesidad de compilar fuentes,
simplemente copiar los scripts. La instalacin es trivial:

# python setup.py install

Aunque antes de poder utilizarlo es necesario instalar las siguientes


dependencias (en Slackware 14.1):

gnome-python2-gconf, vte3, tunctl, urlgrabber, ipaddr-py, pygobject3, lib


virt-glib, vala, spice-gtk, gtk-vnc ylibvirt-python.

NOTA (1): la ltima versin disponible de gtk-vnc (0.5.3) requiere cairo


1.12.16 o superior para funcionar correctamente. Slackware 14.1 viene
con cairo 1.12.14, por lo tanto se debe instalar una versin actualizada
de cairo. Actualizar Slackware o descargar la ltima versin del paquete
cairo disponible en el directorio "slackware64-current" (o "slackware-
current" si se trata de una instalacin de 32 bit) de cualquier mirror de
Slackware (por ejemplo: lug.mtu.edu/slackware/slackware64-
current/slackware64/l/cairo-1.12.16-x86_64-1.txz).

NOTA (2): antes de instalar libvirt-glib (y si se ha instalado libvirt bajo la


ruta /usr/local/) es necesario configurar la variable de
entorno PKG_CONFIG_PATH de la siguiente forma:

$ export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"

NOTA (3): compilar spice-gtk involucra compilar una cantidad importante


de dependencias. Aunque es muy recomendable, ya que es un protocolo
excelente (supera ampliamente a VNC en lo que se refiere a rendimiento
y prestaciones, ver el siguiente artculo: Utilizar SPICE en mquinas
virtuales KVM).
En distribuciones basadas en Debian/Ubuntu es posible instalar estas
dependencias utilizando el gestor de paquetes apt-get (siempre que las
versiones de los repositorios cumplan los requisitos de la ltima versin
de virt-manager). En Red Hat/CentOS utilizar yum, aunque es muy
probable que no se alcancen los requerimientos, en cuanto a versiones
se refiere.

Configuracin del servicio libvirt en Slackware 14.1

Esta seccin vara de distribucin en distribucin, dependiendo del


gestor de servicios (init) que se utilice (SysVinit, systemd o Upsart).
Slackware 14.1 utiliza System V, por lo tanto los demonios se inician en
cada runlevel utilizando scripts (rc.K: runlevel 1; rc.M: multi user run
levels; rc.S: system initialization scripts; rc.[nombre del servicio] para
cada servicio) dentro del directorio /etc/rc.d/.

Luego de compilar e instalar libvirt es necesario crear el script de inicio


del servicio. Crear el archivo /etc/rc.d/rc.libvirt con el siguiente
contenido:

#!/usr/bin/bash

# Init script for libvirtd on Slackware

# Written by Matteo Bernardini <ponce@slackbuilds.org>

# Note that a dnsmasq daemon is started by libvirtd itself to serve

# its virtual network, and possibly can conflict with a dnsmasq

# already running on the system, see

# http://wiki.libvirt.org/page/Libvirtd_and_dnsmasq

# Note also that the tun, vhost_net and kvm related modules are

# automatically loaded at start and removed at stop: edit the

# script if this behaviour conflicts with anything else running

# on your setup

MODULES="tun vhost_net"

PIDFILE="/usr/local/var/run/libvirt/libvirtd.pid"

NETNAME="$(ls -1 /usr/local/var/lib/libvirt/network | cut -d. -f1)"

TIMEOUT=${TIMEOUT:-40}

OPTS=${OPTS:-" -v -f /usr/local/etc/libvirt/libvirtd.conf -p $PIDFILE


"}

check_running_machines() {
i=0

for j in `/usr/local/bin/virsh list | grep running | awk '{print


$2;}'` ; do

/usr/local/bin/virsh shutdown $j

done

echo -n "Waiting machines"

while [ $(/usr/local/bin/virsh list | grep running | wc -l) -gt


"0" ]; do

if [ "$i" -ge "$TIMEOUT" ];then

break

fi

echo -n "."

i=`expr $i + 1`

sleep 1

done

echo ""

if [ $(/usr/local/bin/virsh list | grep running | wc -l) -gt


"0" ];then

echo -n "The following machines are still running, forcing


shutdown: "

for j in `/usr/local/bin/virsh list | grep running | awk '{print


$2;}'` ; do

/usr/local/bin/virsh destroy $j

echo -n "$j "

done

echo ""

sleep 2

fi
}

check_processor() {

egrep 'vmx' /proc/cpuinfo > /dev/null

if [ "$?" -eq "0" ];then

MODULES="$MODULES kvm_intel kvm"

fi

check=$?

egrep 'svm' /proc/cpuinfo > /dev/null

if [ "$?" -eq "0" ];then

MODULES="$MODULES kvm_amd kvm"

fi

check=`expr $check + $?`

if [ $check -eq "2" ];then

echo "Your systems does not support KVM!"

fi

start() {

if [ -f $PIDFILE ];then

echo "libvirt is already running..."

exit 1

fi

echo "Starting libvirtd..."

mkdir -p $(dirname $PIDFILE)


check_processor

/sbin/modprobe -a $MODULES

export PATH="$PATH:/usr/local/sbin:/usr/local/bin"

/usr/local/sbin/libvirtd -d -l $OPTS

stop() {

if [ ! -f $PIDFILE ];then

echo "libvirt is not running..."

exit 2

fi

check_running_machines

check_processor

echo "Stopping libvirtd..."

for i in "$NETNAME"; do

/usr/local/bin/virsh net-destroy "$i"

done

kill -TERM `cat $PIDFILE`

sleep 3

/sbin/modprobe -ra $MODULES

case $1 in

start)

start

;;

stop)

stop

;;

restart)

stop

sleep 1

start

;;
*)

echo "Usage: $0 (start|stop|restart)"

;;

esac

Este script est basado en el que se encuentra en el paquete


"SlackBuild" correspondiente a libvirt en el repositorio slackbuilds.org. La
diferencia es que est modificado para que las rutas de los binarios sean
relativas al directorio /usr/local/ (adems de ajustar la variable de
entorno $PATH antes de iniciar libvirt, para que el demonio encuentre los
emuladores QEMU que se encuentran dentro el
directorio /usr/local/bin/). Si se utiliz otra ruta durante la instalacin
de libvirt, ser necesario adaptar este script.

En Slackware es posible instalar qemu, libvirt y virt-manager utilizando


los SlackBuilds del repositorioslackbuilds.org, aunque el objetivo de este
artculo es explicar cmo compilar e instalar las ltimas versiones de
cada uno, independiente de la distribucin que se est utilizando. Por
supuesto, si se instala libvirt desde el SlackBuild no es necesario instalar
este script de inicio, ya que se hace automticamente (como si se
estuviera instalando desde el gestor de paquetes, esa es la idea del
repositorio slackbuilds.org).

Iniciar el demonio libvirtd

Luego de crear el script rc.libvirt dentro del directorio /etc/rc.d/, es


necesario otorgarle permiso de ejecucin:

# chmod +x /etc/rc.d/rc.libvirt

Para que el demonio libvirt inicie automticamente, agregar las


siguientes lneas al final del archivo /etc/rc.d/rc.local:

# Start libvirt daemon:

if [ -x /etc/rc.d/rc.libvirt ]; then

/etc/rc.d/rc.libvirt start

fi

De forma similar, para que el demonio se detenga al apagar el sistema,


agregar las siguientes lneas al final del
archivo /etc/rc.d/rc.local_shutdown (si no existe, es necesario crearlo y
otorgarle permiso de ejecucin):

# Stop libvirt daemon:


if [ -x /etc/rc.d/rc.libvirt ]; then

/etc/rc.d/rc.libvirt stop

fi

Para iniciar el demonio libvirtd por primera vez,


ejecutar /etc/rc.d/rc.libvirt start:

[11:00 root@vaio emi] > /etc/rc.d/rc.libvirt start

Starting libvirtd...

/usr/local/sbin/libvirtd: error: Unable to initialize network sockets.


Check /var/log/messages or run without --daemon for more info.

Se observa que falla al inicializar sockets, esto se debe a que por defecto
utiliza TLS para aceptar conexiones entrantes. Hay dos soluciones:
instalar un certificado CA; o deshabilitar TLS.

En mi caso voy a deshabilitar TLS, ya que no deseo que el demonio


acepte conexiones entrantes. Para ello editar el archivo de configuracin
del demonio libvirtd:

# nano /usr/local/etc/libvirt/libvirtd.conf

Dentro del mismo descomentar la lnea (remover el caracter '#' en el


comienzo de la lnea):

listen_tls = 0

En caso de que ocurran diferentes errores durante el inicio del demonio,


es posible consultar la documentacin oficial de Red Hat:

Appendix B. Common libvirt errors and troubleshooting

Una vez que se corrigen todos los errores, el demonio libvirtd inicia
correctamente:

[11:02 root@vaio emi] > /etc/rc.d/rc.libvirt start

Starting libvirtd...

Luego de iniciar libvirt exitosamente es posible verificar la instalacin


utilizando al herramienta virt-host-validate:

[09:59 root@vaio emi] > virt-host-validate

QEMU: Checking for hardware virtualization


: PASS

QEMU: Checking for device /dev/kvm


: PASS
QEMU: Checking for device /dev/vhost-net
: PASS

QEMU: Checking for device /dev/net/tun


: PASS

LXC: Checking for Linux >= 2.6.26


: PASS

Pasan todos los controles, lo que significa que todo funciona


correctamente.

Se observa que el demonio ha creado exitosamente la interfaz bridge


para la red "default" de las mquinas virtuales:

[11:22 root@vaio emi] > ifconfig virbr0

virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500

inet 192.168.122.1 netmask 255.255.255.0 broadcast


192.168.122.255

ether a6:6c:c4:25:5c:4a txqueuelen 0 (Ethernet)

RX packets 0 bytes 0 (0.0 B)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 0 bytes 0 (0.0 B)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

A partir de este momento es posible utilizar la herramienta virsh para


conectarse al hipervisor y probar algunos comandos:

[11:29 root@vaio emi] > virsh

Welcome to virsh, the virtualization interactive terminal.

Type: 'help' for help with commands

'quit' to quit

virsh # nodeinfo

CPU model: x86_64

CPU(s): 4

CPU frequency: 2175 MHz

CPU socket(s): 1

Core(s) per socket: 2

Thread(s) per core: 2


NUMA cell(s): 1

Memory size: 3987248 KiB

virsh # iface-list

Name State MAC Address

---------------------------------------------------

eth0 active 11:22:33:aa:bb:cc

virsh # net-list

Name State Autostart Persistent

----------------------------------------------------------

default active yes yes

virsh # pool-list

Name State Autostart

-------------------------------------------

virsh # version

Compiled against library: libvirt 1.2.1

Using library: libvirt 1.2.1

Using API: QEMU 1.2.1

Running hypervisor: QEMU 1.7.0

virsh # exit

[11:30 root@vaio emi] >

Notar que hasta el momento no existe ningn pool de storage


(almacenamiento), por lo que es necesario crearlo utilizando virsh o
luego con virt-manager.

Antes de continuar es recomendable consultar las capacidades (Driver


capabilities XML format) del driver libvirt, utilizando el comando virsh
capabilities. De esta forma es posible determinar si libvirt ha detectado
correctamente la instalacin de QEMU y las arquitecturas que se pueden
emular:
[08:10 root@vaio emi] > virsh capabilities

<capabilities>

<host>

<uuid>400ad740-9e16-e211-8d57-30f9edc2dbe8</uuid>

<cpu>

<arch>x86_64</arch>

<model>SandyBridge</model>

<vendor>Intel</vendor>

<topology sockets='1' cores='2' threads='2'/>

<feature name='erms'/>

<feature name='smep'/>

<feature name='fsgsbase'/>

<feature name='rdrand'/>

<feature name='f16c'/>

<feature name='osxsave'/>

<feature name='pcid'/>

<feature name='pdcm'/>

<feature name='xtpr'/>

<feature name='tm2'/>

<feature name='est'/>

<feature name='vmx'/>

<feature name='ds_cpl'/>

<feature name='monitor'/>

<feature name='dtes64'/>

<feature name='pbe'/>

<feature name='tm'/>

<feature name='ht'/>

<feature name='ss'/>

<feature name='acpi'/>

<feature name='ds'/>

<feature name='vme'/>

</cpu>

<power_management>
<suspend_mem/>

<suspend_disk/>

<suspend_hybrid/>

</power_management>

<migration_features>

<live/>

<uri_transports>

<uri_transport>tcp</uri_transport>

</uri_transports>

</migration_features>

<topology>

<cells num='1'>

<cell id='0'>

<memory unit='KiB'>3987248</memory>

<cpus num='4'>

<cpu id='0' socket_id='0' core_id='0' siblings='0'/>

<cpu id='1' socket_id='0' core_id='0' siblings='1'/>

<cpu id='2' socket_id='0' core_id='1' siblings='2'/>

<cpu id='3' socket_id='0' core_id='1' siblings='3'/>

</cpus>

</cell>

</cells>

</topology>

<secmodel>

<model>none</model>

<doi>0</doi>

</secmodel>

<secmodel>

<model>dac</model>

<doi>0</doi>

<baselabel type='kvm'>+0:+0</baselabel>

<baselabel type='qemu'>+0:+0</baselabel>

</secmodel>

</host>
<guest>

<os_type>hvm</os_type>

<arch name='alpha'>

<wordsize>64</wordsize>

<emulator>/usr/local/bin/qemu-system-alpha</emulator>

<machine maxCpus='4'>clipper</machine>

<domain type='qemu'>

</domain>

</arch>

<features>

<deviceboot/>

</features>

</guest>

<guest>

<os_type>hvm</os_type>

<arch name='armv7l'>

<wordsize>32</wordsize>

<emulator>/usr/local/bin/qemu-system-arm</emulator>

<machine maxCpus='1'>integratorcp</machine>

<machine maxCpus='1'>collie</machine>

<machine maxCpus='2'>smdkc210</machine>

<machine maxCpus='2'>nuri</machine>

<machine maxCpus='1'>verdex</machine>

<machine maxCpus='1'>connex</machine>

<machine maxCpus='4'>midway</machine>

<machine maxCpus='4'>highbank</machine>

<machine maxCpus='1'>kzm</machine>

<machine maxCpus='1'>mainstone</machine>

<machine maxCpus='1'>musicpal</machine>

<machine maxCpus='1'>n810</machine>

<machine maxCpus='1'>n800</machine>

<machine maxCpus='1'>sx1-v1</machine>
<machine maxCpus='1'>sx1</machine>

<machine maxCpus='1'>cheetah</machine>

<machine maxCpus='4'>realview-pbx-a9</machine>

<machine maxCpus='1'>realview-pb-a8</machine>

<machine maxCpus='4'>realview-eb-mpcore</machine>

<machine maxCpus='1'>realview-eb</machine>

<machine maxCpus='1'>terrier</machine>

<machine maxCpus='1'>borzoi</machine>

<machine maxCpus='1'>spitz</machine>

<machine maxCpus='1'>akita</machine>

<machine maxCpus='1'>lm3s6965evb</machine>

<machine maxCpus='1'>lm3s811evb</machine>

<machine maxCpus='1'>tosa</machine>

<machine maxCpus='1'>versatileab</machine>

<machine maxCpus='1'>versatilepb</machine>

<machine maxCpus='4'>vexpress-a15</machine>

<machine maxCpus='4'>vexpress-a9</machine>

<machine maxCpus='1'>xilinx-zynq-a9</machine>

<machine maxCpus='1'>z2</machine>

<domain type='qemu'>

</domain>

</arch>

<features>

<cpuselection/>

<deviceboot/>

</features>

</guest>

<guest>

<os_type>hvm</os_type>

<arch name='cris'>

<wordsize>32</wordsize>

<emulator>/usr/local/bin/qemu-system-cris</emulator>

<machine maxCpus='1'>axis-dev88</machine>
<domain type='qemu'>

</domain>

</arch>

</guest>

<guest>

<os_type>hvm</os_type>

<arch name='i686'>

<wordsize>32</wordsize>

<emulator>/usr/local/bin/qemu-system-i386</emulator>

<machine canonical='pc-i440fx-1.7' maxCpus='255'>pc</machine>

<machine maxCpus='1'>isapc</machine>

<machine maxCpus='255'>pc-0.10</machine>

<machine maxCpus='255'>pc-0.11</machine>

<machine maxCpus='255'>pc-0.12</machine>

<machine maxCpus='255'>pc-0.13</machine>

<machine maxCpus='255'>pc-0.14</machine>

<machine maxCpus='255'>pc-0.15</machine>

<machine maxCpus='255'>pc-1.0</machine>

<machine maxCpus='255'>pc-1.1</machine>

<machine maxCpus='255'>pc-1.2</machine>

<machine maxCpus='255'>pc-1.3</machine>

<machine maxCpus='255'>pc-i440fx-1.4</machine>

<machine maxCpus='255'>pc-i440fx-1.5</machine>

<machine maxCpus='255'>pc-i440fx-1.6</machine>

<machine maxCpus='255'>pc-q35-1.4</machine>

<machine maxCpus='255'>pc-q35-1.5</machine>

<machine maxCpus='255'>pc-q35-1.6</machine>

<machine canonical='pc-q35-1.7' maxCpus='255'>q35</machine>

<domain type='qemu'>

</domain>

<domain type='kvm'>

<emulator>/usr/local/bin/qemu-system-i386</emulator>

</domain>
</arch>

<features>

<cpuselection/>

<deviceboot/>

<acpi default='on' toggle='yes'/>

<apic default='on' toggle='no'/>

<pae/>

<nonpae/>

</features>

</guest>

<guest>

<os_type>hvm</os_type>

<arch name='lm32'>

<wordsize>32</wordsize>

<emulator>/usr/local/bin/qemu-system-lm32</emulator>

<machine maxCpus='1'>lm32-evr</machine>

<machine maxCpus='1'>lm32-uclinux</machine>

<machine maxCpus='1'>milkymist</machine>

<domain type='qemu'>

</domain>

</arch>

</guest>

<guest>

<os_type>hvm</os_type>

<arch name='m68k'>

<wordsize>32</wordsize>

<emulator>/usr/local/bin/qemu-system-m68k</emulator>

<machine maxCpus='1'>mcf5208evb</machine>

<machine maxCpus='1'>an5206</machine>

<machine maxCpus='1'>dummy</machine>

<domain type='qemu'>

</domain>
</arch>

<features>

<deviceboot/>

</features>

</guest>

<guest>

<os_type>hvm</os_type>

<arch name='microblaze'>

<wordsize>32</wordsize>

<emulator>/usr/local/bin/qemu-system-microblaze</emulator>

<machine maxCpus='1'>petalogix-s3adsp1800</machine>

<machine maxCpus='1'>petalogix-ml605</machine>

<domain type='qemu'>

</domain>

</arch>

</guest>

<guest>

<os_type>hvm</os_type>

<arch name='microblazeel'>

<wordsize>32</wordsize>

<emulator>/usr/local/bin/qemu-system-microblazeel</emulator>

<machine maxCpus='1'>petalogix-s3adsp1800</machine>

<machine maxCpus='1'>petalogix-ml605</machine>

<domain type='qemu'>

</domain>

</arch>

</guest>

<guest>

<os_type>hvm</os_type>

<arch name='mips'>

<wordsize>32</wordsize>
<emulator>/usr/local/bin/qemu-system-mips</emulator>

<machine maxCpus='16'>malta</machine>

<machine maxCpus='1'>pica61</machine>

<machine maxCpus='1'>magnum</machine>

<machine maxCpus='1'>mipssim</machine>

<machine maxCpus='1'>mips</machine>

<domain type='qemu'>

</domain>

</arch>

<features>

<deviceboot/>

</features>

</guest>

<guest>

<os_type>hvm</os_type>

<arch name='mipsel'>

<wordsize>32</wordsize>

<emulator>/usr/local/bin/qemu-system-mipsel</emulator>

<machine maxCpus='16'>malta</machine>

<machine maxCpus='1'>pica61</machine>

<machine maxCpus='1'>magnum</machine>

<machine maxCpus='1'>mipssim</machine>

<machine maxCpus='1'>mips</machine>

<domain type='qemu'>

</domain>

</arch>

<features>

<deviceboot/>

</features>

</guest>

<guest>

<os_type>hvm</os_type>
<arch name='mips64'>

<wordsize>64</wordsize>

<emulator>/usr/local/bin/qemu-system-mips64</emulator>

<machine maxCpus='16'>malta</machine>

<machine maxCpus='1'>pica61</machine>

<machine maxCpus='1'>magnum</machine>

<machine maxCpus='1'>mipssim</machine>

<machine maxCpus='1'>mips</machine>

<domain type='qemu'>

</domain>

</arch>

<features>

<deviceboot/>

</features>

</guest>

<guest>

<os_type>hvm</os_type>

<arch name='mips64el'>

<wordsize>64</wordsize>

<emulator>/usr/local/bin/qemu-system-mips64el</emulator>

<machine maxCpus='16'>malta</machine>

<machine maxCpus='1'>fulong2e</machine>

<machine maxCpus='1'>pica61</machine>

<machine maxCpus='1'>magnum</machine>

<machine maxCpus='1'>mipssim</machine>

<machine maxCpus='1'>mips</machine>

<domain type='qemu'>

</domain>

</arch>

<features>

<deviceboot/>

</features>

</guest>
<guest>

<os_type>hvm</os_type>

<arch name='ppc'>

<wordsize>32</wordsize>

<emulator>/usr/local/bin/qemu-system-ppc</emulator>

<machine maxCpus='1'>g3beige</machine>

<machine maxCpus='32'>ppce500</machine>

<machine maxCpus='1'>mac99</machine>

<machine maxCpus='15'>mpc8544ds</machine>

<machine maxCpus='1'>taihu</machine>

<machine maxCpus='1'>ref405ep</machine>

<machine maxCpus='1'>bamboo</machine>

<machine maxCpus='1'>prep</machine>

<machine maxCpus='1'>virtex-ml507</machine>

<domain type='qemu'>

</domain>

</arch>

<features>

<cpuselection/>

<deviceboot/>

</features>

</guest>

<guest>

<os_type>hvm</os_type>

<arch name='ppc64'>

<wordsize>64</wordsize>

<emulator>/usr/local/bin/qemu-system-ppc64</emulator>

<machine maxCpus='256'>pseries</machine>

<machine maxCpus='32'>ppce500</machine>

<machine maxCpus='1'>mac99</machine>

<machine maxCpus='1'>g3beige</machine>

<machine maxCpus='15'>mpc8544ds</machine>
<machine maxCpus='1'>taihu</machine>

<machine maxCpus='1'>ref405ep</machine>

<machine maxCpus='1'>bamboo</machine>

<machine maxCpus='1'>prep</machine>

<machine maxCpus='1'>virtex-ml507</machine>

<domain type='qemu'>

</domain>

</arch>

<features>

<cpuselection/>

<deviceboot/>

</features>

</guest>

<guest>

<os_type>hvm</os_type>

<arch name='ppcemb'>

<wordsize>32</wordsize>

<emulator>/usr/local/bin/qemu-system-ppcemb</emulator>

<machine maxCpus='1'>g3beige</machine>

<machine maxCpus='32'>ppce500</machine>

<machine maxCpus='1'>mac99</machine>

<machine maxCpus='15'>mpc8544ds</machine>

<machine maxCpus='1'>taihu</machine>

<machine maxCpus='1'>ref405ep</machine>

<machine maxCpus='1'>bamboo</machine>

<machine maxCpus='1'>prep</machine>

<machine maxCpus='1'>virtex-ml507</machine>

<domain type='qemu'>

</domain>

</arch>

<features>

<cpuselection/>

<deviceboot/>
</features>

</guest>

<guest>

<os_type>hvm</os_type>

<arch name='s390x'>

<wordsize>64</wordsize>

<emulator>/usr/local/bin/qemu-system-s390x</emulator>

<machine canonical='s390-virtio' maxCpus='255'>s390</machine>

<machine canonical='s390-ccw-virtio' maxCpus='255'>s390-


ccw</machine>

<domain type='qemu'>

</domain>

</arch>

<features>

<cpuselection/>

<deviceboot/>

</features>

</guest>

<guest>

<os_type>hvm</os_type>

<arch name='sh4'>

<wordsize>32</wordsize>

<emulator>/usr/local/bin/qemu-system-sh4</emulator>

<machine maxCpus='1'>shix</machine>

<machine maxCpus='1'>r2d</machine>

<domain type='qemu'>

</domain>

</arch>

<features>

<deviceboot/>

</features>

</guest>
<guest>

<os_type>hvm</os_type>

<arch name='sh4eb'>

<wordsize>64</wordsize>

<emulator>/usr/local/bin/qemu-system-sh4eb</emulator>

<machine maxCpus='1'>shix</machine>

<machine maxCpus='1'>r2d</machine>

<domain type='qemu'>

</domain>

</arch>

<features>

<deviceboot/>

</features>

</guest>

<guest>

<os_type>hvm</os_type>

<arch name='sparc'>

<wordsize>32</wordsize>

<emulator>/usr/local/bin/qemu-system-sparc</emulator>

<machine maxCpus='1'>SS-5</machine>

<machine maxCpus='1'>leon3_generic</machine>

<machine maxCpus='1'>SPARCbook</machine>

<machine maxCpus='1'>SPARCClassic</machine>

<machine maxCpus='1'>SS-4</machine>

<machine maxCpus='1'>LX</machine>

<machine maxCpus='1'>Voyager</machine>

<machine maxCpus='4'>SS-20</machine>

<machine maxCpus='4'>SS-600MP</machine>

<machine maxCpus='4'>SS-10</machine>

<domain type='qemu'>

</domain>

</arch>

</guest>
<guest>

<os_type>hvm</os_type>

<arch name='sparc64'>

<wordsize>64</wordsize>

<emulator>/usr/local/bin/qemu-system-sparc64</emulator>

<machine maxCpus='1'>sun4u</machine>

<machine maxCpus='1'>Niagara</machine>

<machine maxCpus='1'>sun4v</machine>

<domain type='qemu'>

</domain>

</arch>

<features>

<deviceboot/>

</features>

</guest>

<guest>

<os_type>hvm</os_type>

<arch name='unicore32'>

<wordsize>32</wordsize>

<emulator>/usr/local/bin/qemu-system-unicore32</emulator>

<machine maxCpus='1'>puv3</machine>

<domain type='qemu'>

</domain>

</arch>

</guest>

<guest>

<os_type>hvm</os_type>

<arch name='x86_64'>

<wordsize>64</wordsize>

<emulator>/usr/local/bin/qemu-system-x86_64</emulator>

<machine canonical='pc-i440fx-1.7' maxCpus='255'>pc</machine>


<machine maxCpus='1'>isapc</machine>

<machine maxCpus='255'>pc-0.10</machine>

<machine maxCpus='255'>pc-0.11</machine>

<machine maxCpus='255'>pc-0.12</machine>

<machine maxCpus='255'>pc-0.13</machine>

<machine maxCpus='255'>pc-0.14</machine>

<machine maxCpus='255'>pc-0.15</machine>

<machine maxCpus='255'>pc-1.0</machine>

<machine maxCpus='255'>pc-1.1</machine>

<machine maxCpus='255'>pc-1.2</machine>

<machine maxCpus='255'>pc-1.3</machine>

<machine maxCpus='255'>pc-i440fx-1.4</machine>

<machine maxCpus='255'>pc-i440fx-1.5</machine>

<machine maxCpus='255'>pc-i440fx-1.6</machine>

<machine maxCpus='255'>pc-q35-1.4</machine>

<machine maxCpus='255'>pc-q35-1.5</machine>

<machine maxCpus='255'>pc-q35-1.6</machine>

<machine canonical='pc-q35-1.7' maxCpus='255'>q35</machine>

<domain type='qemu'>

</domain>

<domain type='kvm'>

<emulator>/usr/local/bin/qemu-system-x86_64</emulator>

</domain>

</arch>

<features>

<cpuselection/>

<deviceboot/>

<acpi default='on' toggle='yes'/>

<apic default='on' toggle='no'/>

</features>

</guest>

<guest>

<os_type>hvm</os_type>
<arch name='xtensa'>

<wordsize>32</wordsize>

<emulator>/usr/local/bin/qemu-system-xtensa</emulator>

<machine maxCpus='4'>sim</machine>

<machine maxCpus='4'>lx200</machine>

<machine maxCpus='4'>lx60</machine>

<domain type='qemu'>

</domain>

</arch>

</guest>

<guest>

<os_type>hvm</os_type>

<arch name='xtensaeb'>

<wordsize>32</wordsize>

<emulator>/usr/local/bin/qemu-system-xtensaeb</emulator>

<machine maxCpus='4'>sim</machine>

<machine maxCpus='4'>lx200</machine>

<machine maxCpus='4'>lx60</machine>

<domain type='qemu'>

</domain>

</arch>

</guest>

</capabilities>

Del volcado XML se observa que la instalacin de QEMU detectada es


capaz de emular las arquitecturas de CPU alpha, armv7l, cris, i686, lm32,
m68k, microblazeel, mips, mipsel, mips64, mips64el, ppc, ppc64,
ppcemb, s390x, sh4, sh4eb, sparc, sparc64, unicore32, x86_64, xtensa y
xtensaeb. Tal como era de esperarse, ya que se compil QEMU con
soporte para todas las arquitecturas de CPU disponibles. Esto significa
que se van a poder crear mquinas virtuales con procesadores que
utilicen cualquiera de estas arquitecturas. Por ejemplo, se podr crear
una mquina virtual con CPU arm7v que permita para emular
unaRaspberry Pi, donde se podr instalar Raspbian.
Ejecutar virt-manager

Antes de ejecutar virt-manager es necesario crear links simblicos a las


libreras libvirt y libyajl:

# ln -s /usr/local/lib/libvirt.so.0 /lib64/libvirt.so.0

# ln -s /usr/local/lib/libyajl.so.2 /lib64/libyajl.so.2

Tambin es necesario registrar una accin polkit


(org.libvirt.unix.monitor) para el acceso al demonio libvirtd. PolicyKit
(polkit) provee una API de autorizacin para las aplicaciones que
necesitan acceso privilegiado. A modo de ejemplo, polkit es el
mecanismo que solicita las credenciales de administrador (root) cuando
tratamos de ejecutar algn programa que realiza cambios en el sistema.

Si no se registra la accin org.libvirt.unix.monitor, virt-manager es


incapaz de conectarse al demonio libvirtd.

Crear el archivo /usr/share/polkit-1/actions/org.libvirt.unix.policy:

# nano /usr/share/polkit-1/actions/org.libvirt.unix.policy

Insertar el siguiente contenido:

<!DOCTYPE policyconfig PUBLIC

"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"

"http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">

<policyconfig>

<action id="org.libvirt.unix.monitor">

<description>Monitor local virtualized systems</description>

<message>System policy prevents monitoring of local virtualized


systems</message>

<defaults>

<!-- Any program can use libvirt in read-only mode for


monitoring,

even if not part of a session -->

<allow_any>yes</allow_any>

<allow_inactive>yes</allow_inactive>

<allow_active>yes</allow_active>

</defaults>
</action>

<action id="org.libvirt.unix.manage">

<description>Manage local virtualized systems</description>

<message>System policy prevents management of local virtualized


systems</message>

<defaults>

<!-- Only a program in the active host session can use libvirt
in

read-write mode for management, and we require user


password -->

<allow_any>auth_admin</allow_any>

<allow_inactive>auth_admin</allow_inactive>

<allow_active>auth_admin_keep</allow_active>

</defaults>

</action>

</policyconfig>

Habiendo registrado la accin org.libvirt.unix.monitor es posible


ejecutar virt-manager desde el men de aplicaciones, o ejecutando:

$ virt-manager

Si se desea que virt-manager no solicite la contrasea de root cada vez


que se ejecuta, es posible configurar la autoridad local (Local Authority)
para que permita el acceso al demonio libvirt al usuario que se desee.

Crear un archivo de configuracin .pkla dentro del


directorio /var/lib/polkit-1/localauthority/50-local.d/, por ejemplo 50-
vaio.libvirt-access.pkla:

# nano /var/lib/polkit-1/localauthority/50-local.d/50-vaio.libvirt-
access.pkla

Existen dos alternativas: autenticar por grupo; o autenticar por usuario.


Si se autentica por grupo, por ejemplo wheel, es necesario agregar los
usuarios al mismo utilizando el comando usermod -G wheel -a
emi (suponiendo que se desea otorgar permiso de acceso al demonio
libvirtd al usuario emi). El contenido del archivo de configuracin debe
quedar as:

[libvirt Management Access]

Identity=unix-group:wheel
Action=org.libvirt.unix.manage

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Si se autentica por usuario, por ejemplo emi, el contenido del archivo de


configuracin debe quedar as (si se necesitan agregar varios usuarios se
deben separar con punto y coma, por ejemplo: Identity=unix-
user:emi;larry;moe;shemp):

[libvirt Management Access]

Identity=unix-user:emi

Action=org.libvirt.unix.manage

ResultAny=yes

ResultInactive=yes

ResultActive=yes

De cualquiera de las dos formas, al iniciar virt-manager como


usuario emi, el sistema no solicitar el password de root para conectarse
al hipervisor.

Crear un storage pool

Por defecto libvirt crea el storage pool "Default" utilizando el


directorio /var/lib/libvirt/images/. Si deseamos utilizar una particin,
disco, o grupo LVM adicional, es necesario crear un nuevo storage pool.

Es posible crear un storage pool utilizando la herramienta virsh,


mediante el comando pool-create-as:

[17:27 root@vaio actions] > virsh help pool-create-as

NAME

pool-create-as - create a pool from a set of args

SYNOPSIS

pool-create-as [--print-xml] [] [] [] [] [] [--source-format ]

DESCRIPTION

Create a pool.

OPTIONS
[--name] name of the pool

--print-xml print XML document, but don't define/create

[--type] type of the pool

[--source-host] source-host for underlying storage

[--source-path] source path for underlying storage

[--source-dev] source device for underlying storage

[--source-name] source name for underlying storage

[--target] target for underlying storage

--source-format format for underlying storage

Aunque tambin es posible hacerlo utilizando virt-manager (ya que nos


hemos esforzado por compilarlo, por qu no sacarle provecho?):
Abrir la configuracin del hipervisor mediante doble clic sobre el nombre
de host y acceder a la pestaa "Storage":
Especificar un nombre e indicar el tipo de almacenamiento, puede ser:
dir (un directorio cualquiera); disk (un disco o particin); logical (un
grupo LVM); y otras alternativas ms avanzadas como scsi, iscsi (Internet
Small Computer System Interface, dispositivos de almacenamiento
online) y NFS. En este caso, agrego un directorio:
A continuacin, indicar la ruta al directorio que se utilizar para
almacenar imgenes de disco:

Finalizar:
Crear una mquina virtual

Finalmente, es posible crear la primera mquina virtual de prueba. A


modo de ejemplo Linux Mint 15.

Abrir virt-manager y presionar el botn "New" para crear una nueva


mquina virtual:
Especificar un nombre (llamados "dominios" en libvirt). A modo de
ejemplo inicio desde un Live CD:
Es posible utilizar un medio ptico en la lectora del host o indicar la ruta
a una imagen:
Presionar "Browse" y luego "Browse Local", navegar hasta la ubicacin
de la imagen (en este caso ISO):
Indicar el tipo de sistema operativo y versin, no es necesario que la
versin coincida exactamente:
Asignar una cantidad suficiente de memoria RAM para la mquina
virtual:
Especificar el disco rgido para la mquina virtual, es posible crear uno
nnuevo o utilizar uno existente:
Si se desea cambiar el tipo de hardware grfico (por ejemplo spice)
seleccionar "Customize configuration before install":
Presionar "Finish" para crear la mquina virtual:

Si se desea utilizar spice, cambiar el tipo de display a "Spice":


Automticamente se agregaran los dispositivos de hardware necesarios
para el funcionamiento de spice:
Una vez finalizada la configuracin presionar "Begin Installation" para
iniciar la mquina virtual. Al tratarse de un Live CD inicia rpidamente:
Para finalizar, una captura completa del escritorio de Slackwre 14.1 con
KDE 4.10, con la mquina virtual Linux Mint corriendo sobre
KVM+QEMU+libvirt:

Vous aimerez peut-être aussi