Instalar y configurar Qemu-KVM en Arch Linux [Actualizado]

Virtual-Manager

En un artículo anterior vimos como instalar Qemu-KVM en Debian Wheezy gracias a la colaboración de Fico y en esta ocasión, yo les mostraré como hacerlo pero en Arch Linux.

Comparado con Debian, lo que les muestro a continuación es un poquito más pesado, pero vamos, es realmente fácil llegar al resultado final. Comencemos:

Instalando los paquetes necesarios

Vamos a instalar los paquetes que necesitamos para que funcione Qemu-KVM y poder administrar nuestras máquinas virtuales.

$sudo pacman -S qemu dmidecode ebtables dnsmasq libvirt bridge-utils openbsd-netcat radvd urlgrabber virtviewer virtinst virt-manager ifplugd ifenslave tcl

Anteriormente el paquete se llamaba qemu-kvm, para yo no más, ahora es solamente qemu. El resto de los paquetes son los necesarios para que funcionen las opciones de red y demás.

El paquete virtinst ya no se encuentra en los repositorios o cambió de nombre. Ahora son necesarios solamente los paquetes virt-manager, libvirt-glib, libvirt, vde2 y qemu

Una vez instalados estos paquetes, añadimos nuestro usuario a los grupos kvm y polkitd:

$ sudo gpasswd -a tu_usuario kvm
$ sudo gpasswd -a tu_usuario polkitd

Luego levantamos los módulos necesarios, que pueden variar en dependencia de nuestra tarjeta de video:

$ sudo modprobe kvm-intel
$ sudo modprobe kvm

Si tienes AMD, debes usar kvm-amd, y supongo que kvm-nvidia para los usuarios de NVidia. Sinceramente no estoy seguro de este último.

Ahora activamos el servicio:

$ sudo systemctl enable libvirtd.service

Y si queremos arrancarlo, ya saben:

systemctl start libvirtd.service

Solo nos resta crear o editar una regla para Policykit que nos permita gestionar las máquinas virtuales con nuestro usuario. Para ello editamos o creamos el archivo:

$ sudo nano /etc/polkit-1/rules.d/50-org.libvirt.unix.manage.rules

Y le insertamos adentro las siguientes líneas:

polkit.addRule(function(action, subject) {
if (action.id == "org.libvirt.unix.manage" &&
  subject.user == "tu_usuario") {
  return polkit.Result.YES;
}
});

Debemos sustituir tu_usuario por nuestro usuario, como es lógico. ¿Qué nos quedaría? Pues reiniciar el ordenador y probar hacer una nueva máquina virtual.

En mi caso particular, al tratar de crear una nueva máquina virtual con una imagen ya existente, me daba un error de permisos a la hora de Finalizar el asistente. Solo tuve que darle permisos de lectura/escritura al fichero .img

Referencias: FactorQM.


33 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Federico A. Valdés Toujague dijo

    Saludos Elav!!! Realmente no lo veo más complicado que en Debian. Acaso comandos diferentes. Siempre Vale La Pena ejecutar unos pocos comandos para tener instalada esa Poderosa herramienta para hacer máquinas virtuales. Aunque no use Arch, Gracias por dar a conocer como se instala en esa distro.

    1.    elav dijo

      Hay que hacer unos pasos de más… a eso me refiero con lo complicado. En Debian no hay necesidad de hacer más nada que instalar los paquetes y añadir nuestro usuario al grupo correspondiente.

  2.   Ozkar dijo

    Una preguntita elav: Arch ya usa systemd, es necesario ponerle el .service al servicio? No lo reconoce aun por systemctl ‘action’ kdm, por ejemplo?

    1.    elav dijo

      Si, Arch usa Systemd. No sé si se pueda sin el .service, y como así está en la Wiki, pues así lo hice 😀

    2.    cargoan dijo

      Sí lo reconoce, no es necesario ponerlo.

  3.   pandev92 dijo

    muy bonito el osx…OHH WAIT XD

    1.    elav dijo

      xDD Ya quisiera OSX ser mi KDE 😛

      1.    pandev92 dijo

        mañana.

        1.    eliotime3000 dijo

          Le doy la razón a @elav, ya que la interfaz Aqua de OSX consume 256 MB de vídeo, comparado con KDE que ronda desde los 96 MB (el mínimo soportable), y 128 MB (el mínimo recomendado).

          En Slackware, el KDE corre con 96 MB de vídeo, tal y como si tuviese 128 MB. En fin, entre gustos y colores…

          1.    pandev92 dijo

            lo del consumo a mi me da igual, compro otro modulo de 4 gb y listo XDD

          2.    pandev92 dijo

            en video, cualquier tarjeta de los ultimos 4 años viene con 1 gb ddr2 o ddr3 xD.., hasta una nvidia gt610 de 40 euros.

          3.    eliotime3000 dijo

            @pandev92:

            Vivo en un país de latinoamérica en donde el poder adquisitivo limita la posibilidad de adquirir una buena tarjeta de vídeo para una persona promedio, pero me gustaría usar una Gigabyte con chipset Intel (en sí, es la mejor marca de mainboards que he usado hasta ahora).

          4.    Javier dijo

            evidentemente, el poder adquisitivo le da igual a pandev92, ni hablar XD

  4.   Leo dijo

    Arch no es complicado, solo hay que tener u poco mas de tiempo para leer la wiki.

    1.    eliotime3000 dijo

      En sí, Arch es KISS y RTFM a la vez (dependes siempre de las actualizaciones de la wiki para evitarte cualquier modificación que le hagan al proceso de actualización).

  5.   pandev92 dijo

    No es que sea complicado o no, simplemente no es adecuada para el usuario final.

    1.    eliotime3000 dijo

      Si no quieres estar en este modo RTFM (Read The Fucking Manual), mejor usa Mint.

    2.    Javier dijo

      que no sea para el usuario final, a mi me daría igual XD

  6.   berny dijo

    deberias dejar lo de policykit asi,asi comprueba si esta en el grupo o no y ya esta,
    asi si tienes mas de un usuario le daria acceso si esta en el grupo,yo aunque solo uso la maquina para mi tengo varios usuarios para diferentes proyectos,si lo pones como usuario solo ira con ese usuario

    un saludo

    polkit.addRule(function(action, subject) {
    if (action.id == «org.libvirt.unix.manage» &&
    subject.isInGroup(«libvirt»)) {
    return polkit.Result.YES;
    }
    });

    1.    berny dijo

      puse el grupo libvirt pero puedes poner el grupo que quieras,en tu caso kvm o polkitd

  7.   Xoslorg dijo

    Buenas, alguien sabe porque da kvm este error:

    Imposible completar la instalación: ‘internal error: el proceso ha finalizado mientras se conectaba con el monitor: char device redirected to /dev/pts/0 (label charserial0)
    qemu-system-x86_64: -drive file=/home/zpabuin/Descargas/Fedora-Live-LXDE-x86_64-19-1.iso,if=none,id=drive-ide0-1-0,readonly=on,format=raw: could not open disk image /home/zpabuin/Descargas/Fedora-Live-LXDE-x86_64-19-1.iso: Permission denied

    Traceback (most recent call last):
    File «/usr/share/virt-manager/virtManager/asyncjob.py», line 100, in cb_wrapper
    callback(asyncjob, *args, **kwargs)
    File «/usr/share/virt-manager/virtManager/create.py», line 1920, in do_install
    guest.start_install(False, meter=meter)
    File «/usr/share/virt-manager/virtinst/Guest.py», line 1134, in start_install
    noboot)
    File «/usr/share/virt-manager/virtinst/Guest.py», line 1202, in _create_guest
    dom = self.conn.createLinux(start_xml or final_xml, 0)
    File «/usr/lib/python2.7/site-packages/libvirt.py», line 2892, in createLinux
    if ret is None:raise libvirtError(‘virDomainCreateLinux() failed’, conn=self)
    libvirtError: internal error: el proceso ha finalizado mientras se conectaba con el monitor: char device redirected to /dev/pts/0 (label charserial0)
    qemu-system-x86_64: -drive file=/home/zpabuin/Descargas/Fedora-Live-LXDE-x86_64-19-1.iso,if=none,id=drive-ide0-1-0,readonly=on,format=raw: could not open disk image /home/zpabuin/Descargas/Fedora-Live-LXDE-x86_64-19-1.iso: Permission denied

    Gracias, por cierto virtinst es un paquete desactualizado en arch desde mayo y no necesario.

  8.   Javier dijo

    Preguntota…

    cuando intento levantar el modulo del kernel kvm-intel (que es el procesador que yo tengo), me dice:

    modprobe: ERROR: could not insert ‘kvm_intel’: Operation not supported

    Buscando en mi sistema noto que el modulo kvm-intel existe en
    /usr/lib/modules/3.10.10-1-ARCH/kernel/arch/x86/kvm/kvm-intel.ko.gz

    (y si, ejecutando egrep -c «(svm|vmx)» /proc/cpuinfo se con certeza que si debería soportar virtualización aquí)

    Mi pregunta es doble:

    -no necesitaré activar/habilitar algo en mi kernel para que soporte esto?
    -mi sistema es 64 bits y veo que el modulo vive en x86, será por esto? En cuyo caso pregunto, hay modulos para 64 bits que si pueda instalar y dejen de darme la lata?

    gracias de antemano!

    1.    Javier dijo

      Problema resuelto, me falto habilitar la virtualización en la BIOS de mi sistema… 🙂

      gracias!

  9.   leonardopc1991 dijo

    me sale que no encuentra este archivo «virtinst»

    1.    maykel535 dijo

      El paquete virtinst no lo he instalado, porque ya no está en los repos.

      Me sale el mismo error que Xorlogs:

      Imposible completar la instalación: ‘Error interno: el proceso ha finalizado mientras se conectaba con el monitor: qemu-system-x86_64: -drive file=/home/maykel/archlinux-2013.10.01-dual.iso,if=none,id=drive-ide0-1-0,readonly=on,format=raw: could not open disk image /home/maykel/archlinux-2013.10.01-dual.iso: Permission denied

      Traceback (most recent call last):
      File «/usr/share/virt-manager/virtManager/asyncjob.py», line 100, in cb_wrapper
      callback(asyncjob, *args, **kwargs)
      File «/usr/share/virt-manager/virtManager/create.py», line 1920, in do_install
      guest.start_install(False, meter=meter)
      File «/usr/share/virt-manager/virtinst/Guest.py», line 1134, in start_install
      noboot)
      File «/usr/share/virt-manager/virtinst/Guest.py», line 1202, in _create_guest
      dom = self.conn.createLinux(start_xml or final_xml, 0)
      File «/usr/lib/python2.7/site-packages/libvirt.py», line 2897, in createLinux
      if ret is None:raise libvirtError(‘virDomainCreateLinux() failed’, conn=self)
      libvirtError: Error interno: el proceso ha finalizado mientras se conectaba con el monitor: qemu-system-x86_64: -drive file=/home/maykel/archlinux-2013.10.01-dual.iso,if=none,id=drive-ide0-1-0,readonly=on,format=raw: could not open disk image /home/maykel/archlinux-2013.10.01-dual.iso: Permission denied

      1.    elav dijo

        Ahora mismo lo que tengo instalado es:

        – libvirt
        – libvirt-glib
        – virt-manager
        – virtviewer

        Revisen 😉

        1.    maykel535 dijo

          Has actualizado arch?? Has visto el bonito bug en virt-manager con el update virt-manager 0.10.0-4

          Error: ‘NoneType’ object has no attribute ‘__getitem__’

          https://bugs.archlinux.org/task/37990

  10.   Sound-Alchemist dijo

    Esta bien tu tutorial, y logre gracias a el que virt-manager funcione casi sin problemas, en tu nota no explicas a que .img se le agregan lso permisos, y no he podido crear una maquina virtual

  11.   edo dijo

    El paquete virtinst no existe, ademas me dice «openbsd-netcat y gnu-netcat están en conflicto. ¿Quitar gnu-netcat? [s/N]», entonces no puedo dejar el gnu-netcat?

  12.   Manuel dijo

    ola oie yo tengo una samsung chromebook el modelo creo es Snow Clear, quiero saber si se puede instalar Qemu en una base ARM, se como instalar ubuntu de hecho lo desinstale por el simple hecho q no pude correr exe files ,wine no corre en esta base solo con intel,pero qemu alparecer si, pero nose como instalarlo :/ espero me des una respuesta pronto , gracias, buen trabajo.

  13.   tau dijo

    Si mal no recuerdo KVM sirve para acelerar qemu. Puesto que qemu emula todo el procesador es más lento que las maquinas virtuales como virtualbox. Así que por lo que sé KVM hace que qemu se comporte como una maquina virtual cuando la arquitectura del guest es la misma que la del host. ¿ No ?. De todas formas interesante el artículo.

    Qemu rox !!

    Saludos.

  14.   Roberto dijo

    Buenas tardes, gracias por el tutorial lo andaba buscando, pero necesito que por favor me den una mano, de cómo instalar una maquina virtual en un disco externo, no utilizar el espacio físico anfitrión, gracias

  15.   Page Asgardius dijo

    En la parte donde se activan los módulos del kernel con modprobe en realidad se activan los que corresponden a la cpu, ya que kvm utiliza las instrucciones de virtualización de la cpu para funcionar. Tengo una pc con cpu intel y gpu amd y me funcionó de esta forma