Virtualización con Ubuntu 11.10 y KVM (III-Instalación)

Una vez realizadas todas las comprobaciones iniciales, comenzamos la instalación. Hay que tener en cuenta que en la instalación del sistema operativo, se nos ofrece la posibilidad de instalar diversos servicios, entre los cuales se encuentra el paquete de virtualización (Virtual Machine Host). Esto se puede realizar mediante el comando:

$ sudo tasksel

Dicho comando nos abre un menú en el que podremos elegir distintos elementos a instalar, entre ellos el paquete de virtualización:


Otra alternativa sería invocar la instalación de un elemento concreto, en nuestro caso:


$ sudo tasksel install virt-host

El problema que presenta esto es la posibilidad de que no se instalen todos los paquetes necesarios ya que se instala un grupo predefinido de paquetes, por lo que deberemos completar la instalación de modo manual.

Para evitar lo anterior, se puede hacer una instalación de todos los elementos de forma manual mediante:

$ sudo apt-get install ubuntu-virt-server python-vm-builder kvm-pxe

Nota: vmbuilder es un script que nos permite crear máquinas virtuales basadas en Ubuntu.


 El siguiente paso es añadir el usuario activo (root) al grupo libvirtd:

$ sudo adduser `id -un` libvirtd
$ sudo adduser `id -un` kvm


Para que estos cambios surtan efecto es necesario salir de la sesión y volver a entrar, tras lo cual podremos comprobar que la instalación ha sido correcta mediante:

$ sudo virsh -c qemu:///system list

debiendo aparecer algo parecido a lo siguiente:



El siguiente paso es la instalación y configuración de un network bridge en nuestro servidor, de cara a permitir que nuestras máquinas virtuales puedan ser accedidas desde otras máquinas de nuestra red física. Para ello deberemos instalar el paquete bridge-utils:

$ sudo apt-get install bridge-utils


y una vez instalado deberemos configurar el puente en el fichero /etc/network/interfaces. La configuración inicial de dicho fichero será similar a la siguiente:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
          address 192.168.1.10
          netmask 255.255.255.0
          network 192.168.1.0
          broadcast 192.168.1.255
          gateway 192.168.1.1

Y hay que cambiarlo para que quede como sigue (siempre de acuerdo a su configuración de red):


# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet manual

# bridge
auto br0
iface br0 inet static
          address 192.168.1.10
          netmask 255.255.255.0
          network 192.168.1.0
          broadcast 192.168.1.255
          gateway 192.168.1.1
          bridge_ports eth0
          bridge_fd 9
          bridge_hello 2
          bridge_maxage 12
          brige_stp off

El siguiente paso es reiniciar la red mediante el comando:

$ sudo /etc/init.d/networking restart



De este modo habremos creado un nuevo interface (br0) que estará compuesto por el interface físico eth0.Ejecutamos ifconfig para ver la configuración del mismo:

administrador@ubuntuServer:~$ ifconfig
br0 Link encap:Ethernet direcciónHW 6c:f0:49:5e:58:4c
      Direc. inet:192.168.1.10 Difus.:192.168.1.255 Másc:255.255.255.0
      Dirección inet6: fe80::6ef0:49ff:fe5e:584c/64 Alcance:Enlace
      ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST MTU:1500 Métrica:1
      Paquetes RX:355 errores:0 perdidos:12 overruns:0 frame:0
      Paquetes TX:113 errores:0 perdidos:0 overruns:0 carrier:0
      colisiones:0 long.colaTX:0
      Bytes RX:30864 (30.8 KB) TX bytes:20007 (20.0 KB)

eth0 Link encap:Ethernet direcciónHW 6c:f0:49:5e:58:4c
      ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST MTU:1500 Métrica:1
      Paquetes RX:618740 errores:0 perdidos:45277 overruns:0 frame:0
      Paquetes TX:155936 errores:0 perdidos:0 overruns:0 carrier:1
      colisiones:0 long.colaTX:1000
      Bytes RX:364332840 (364.3 MB) TX bytes:12839218 (12.8 MB)
      Interrupción:44

lo Link encap:Bucle local
      Direc. inet:127.0.0.1 Másc:255.0.0.0
      Dirección inet6: ::1/128 Alcance:Anfitrión
      ACTIVO BUCLE FUNCIONANDO MTU:16436 Métrica:1
      Paquetes RX:228 errores:0 perdidos:0 overruns:0 frame:0
      Paquetes TX:228 errores:0 perdidos:0 overruns:0 carrier:0
      colisiones:0 long.colaTX:0
      Bytes RX:39814 (39.8 KB) TX bytes:39814 (39.8 KB) 

Con el comando brctl show se pueden revisar los interfaces creados y los interfaces físicos que los forman.

administrador@ubuntuServer:~$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.6cf0495e584c no eth0
administrador@ubuntuServer:~$

Para acabar, y antes de crear nuestra primera máquina virtual es recomendable reiniciar el equipo anfitrión.

Fuente: HowToForge

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

Virtualización con Ubuntu 11.10 y KVM (II-Requisitos Previos)

Para proceder a la instalación de KVM en un sistema Ubuntu es necesario contar con el soporte hardware en el procesado del servidor. Para poder verificar el soporte hardware a la tecnología de virtualización debemos hacer uso de la siguiente orden:


$ egrep '(vmx|svm)' –color=always /proc/cpuinfo

En nuestro caso obtenemos el siguiente resultado:

/proc/cpuinfo: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 lm constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm xsave lahf_lm dts tpr_shadow vnmi flexpriority

Como se observa arriba en tenemos soporte hardware para la virtualización en nuestro procesador Intel.

Para poder llevar a cabo la virtualización de sistemas de 64 bits, el procesador de la máquina física también deberá ser de 64 bits. Esto se puede verificar mediante el siguiente comando:

$ grep ' lm ' /proc/cpuinfo

Lo que obtiene:

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 lm constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm xsave lahf_lm dts tpr_shadow vnmi flexpriority

Tal y como se observa, nuestro procesador es de 64 bits, al tener activado el bit long mode.

Para finalizar con las comprobaciones previas deberemos verificar si el servidor ya cuenta con un kernel de 64 bits mediante el comando: 

$ uname -m


 Si la respuesta es x86_64 el servidor está utilizando un kernel de 64 bits, si por el contrario obtiene una respuesta como i686 se encuentra utilizando un kernel de 32 bits.

Fuente: HowToForge

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

Virtualización con Ubuntu 11.10 y KVM (I-Teoría)

Virtualización se refiere a la abstracción de los recursos de una computadora, llamada Hypervisor o VMM (Virtual Machine Monitor) que crea una capa de abstracción entre el hardware de la máquina física (host) y el sistema operativo de la máquina virtual (virtual machine, guest), siendo un medio para crear una versión virtual de un dispositivo o recurso, como un servidor, un dispositivo de almacenamiento, una red o incluso un sistema operativo, donde se divide el recurso en uno o más entornos de ejecución.

Básicamente podemos considerar 3 tipos de virtualización: emulación, virtualización completa (Full Virtualization) y paravirtualización:

  • Emulación: La emulación se basa en crear máquinas virtuales que emulan el hardware de una o varias plataformas hardware distintas. Este tipo de virtualización es la más costosa y la menos eficiente, ya que obliga a simular completamente el comportamiento de la plataforma hardware a emular e implica también que cada instrucción que se ejecute en estas plataformas sea traducida al hardware real.

    Sin embargo la emulación tiene características interesantes, como poder ejecutar un sistema operativo diseñado para una plataforma concreta sobre otra plataforma, sin tener que modificarlo, o en el desarrollo de firmware para dispositivos hardware, donde se pueden comenzar estos desarrollos sin tener que esperar a tener disponible el hardware real.

  • Virtualización completa: Con este término se denominan aquellas soluciones que permiten ejecutar sistemas operativos huesped (Guest), sin tener que modificarlos, sobre un sistema anfitrión (Host), utilizando en medio un Hypervisor o Virtual Machine Monitor que permite compartir el hardware real. Esta capa intermedia es la encargada de monitorizar los sistemas huesped con el fin de capturar determinadas instrucciones protegidas de acceso al hardware, que no pueden realizar de forma nativa al no tener acceso directo a él.

    Su principal ventaja es que los sistemas operativos pueden ejecutarse sin ninguna modificación sobre la plataforma, aunque como inconveniente frente a la emulación, el sistema operativo debe estar soportado en la arquitectura virtualizada.

    En lo que respecta al rendimiento, éste es significativamente mayor que en la emulación, pero menor que en una plataforma nativa, debido a la monitorización y la mediación del hypervisor. Sin embargo, recientes incorporaciones técnicas en las plataformas x86 hechas por Intel y AMD, como son Intel VT y AMD-V, han permitido que soluciones basadas en la virtualización completa se acerquen prácticamente al rendimiento nativo.

    Un par de ejemplos significativos son VMware y KVM.

  • Paravirtualización: La paravirtualización surgió como una forma de mejorar la eficiencia de las máquinas virtuales y acercarlo al rendimiento nativo. Para ello se basa en que los sistemas virtualizados (huesped) deben estar basados en sistemas operativos especialmente modificados para ejecutarse sobre un Hypervisor. De esta forma no es necesario que éste monitorice todas las instrucciones, sino que los sistemas operativos huesped y anfitrión colaboran en la tarea.

    Uno de los componentes más destacados de esta familia es XEN, el cual permite paravirtualización utilizando sistemas operativos modificados, y virtualización completa sobre procesadores con tecnología Intel-VT o AMD-V. Para la gestión de las máquinas virtuales existen aplicaciones propietarias e incluso alguna open-source como ConVirt, que permite gestionar también desde un único sitio las máquinas virtuales de diferentes servidores, realizar tareas sobre ellas, o modificar sus configuraciones.

Cabría destacar otro tipo de productos para virtualizar que son aplicaciones de escritorio para virtualizar (OS level Virtualization), como Vmware-player y VirtualBox. Estos tipos de virtualización están muy bien para virtualizar Sistemas Operativos en nuestro escritorio y hacer pruebas puntuales pero no para estar siempre ejecutándose. Ya que son programas que requieren tener las X (Desktop), comparten los recursos del Host y no están indicados para ser ejecutados con un servicio o demonio del sistema en un servidor y su rendimiento es menor.

Características de KVM

Como se ha explicado en uno de los puntos anteriores, KVM es uno de los productos que ofrece virtualización completa, permitiendo a priori ejecutar, como huesped, cualquier sistema operativo sin tener que haberlo modificado previamente. Para ello se basa en las nuevas instrucciones Intel-VT y AMD-V, por lo que será necesario disponer de un equipo con un procesador que las soporte para poder utilizarlo.

La principal ventaja es que viene incluido como un módulo del kernel desde la versión 2.6.20 de Linux, por lo que no es necesario instalar ningún software específico. Si se dispone de una máquina con el procesador adecuado y se instala un linux basado en este kernel, se dispondrán automáticamente de los servicios de virtualización. 

El funcionamiento de KVM se basa en que el módulo introduce un nuevo modo de ejecución aparte de los habituales kernel y user mode, con el nombre “guest mode”. Este modo se utiliza para ejecutar todo el código de los huesped que no sea de entrada/salida (I/O), mientras que el modo “user mode” se utiliza para la I/O de los huesped.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

Solventar Problemas de Velocidad de Wifi en Ubuntu

Algunos de vosotros habrá notado (o padecido) los problemas de velocidad de la WIFI en versiones de Ubuntu posteriores a 10.10. Esto se debe a la Configuración de Energía de las nuevas versiones de Ubuntu que afecta sobremedida a la tarjeta inalámbrica.

En la red existen diversos modos de solucionarlos, pero el que nos ha funcionado a nosotros es el siguiente, pero para poder cuantificar la mejora primero lanzamos un test de velocidad. En nuestro caso nos decantamos por el de speednet.


Nos ofrece una velocidad de 1 Mb, cuando nuestra línea es de 6 Mb.

Seguidamente ejecutamos en la consola los siguientes comandos, uno a uno (no temáis, estos cambios no son permanentes).

$ sudo ifconfig wlan0 down
$ sudo rmmod -f ath9k
$ sudo modprobe ath9k nohwcrypt=1
$ sudo ifconfig wlan0 up

Una vez hecho esto comprobamos si hemos solventado los problemas de velocidad.


Como vemos la mejora de velocidad es considerable. Podemos incluso usar una conexión cableada y verificar la calidad del resultado.


Como se puede observar, los resultados concuerdan. Ante esto, podemos hacer permanentes los cambios para lo cual se debe ejecutar:

gksudo gedit /etc/modprobe.d/ath9k.conf

y en ese fichero añadir la siguiente línea:

options ath9k nohwcrypt=1

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

Instalar Lector de DNIe en Ubuntu

Hasta hace poco tiempo se han tenido bastantes problemas a la hora de instalar nuestro lector de DNIe, ya que el proceso era muy lioso y muchas veces desanimaba incluso el realizar su instalación.

Esto ya es cosa del pasado, ya que los chicos de INTECO ha publicado una herramienta multiplaforma que facilita enormemente la configuración del DNIe. El programa instala un driver genérico y configura todo lo necesario para que puedas utilizar el DNIe tanto en Linux como en Windows en cualquiera de sus versiones.

Por lo tanto, para proceder a la instalación del lector nos descargamos la herramienta y le asignamos permisos de ejecución, bien desde la interfaz gráfica o bien desde la consola mediante el comando:

$ chmod 777 instalador-dni

A continuación ejecutamos el archivo clickando sobre él y se nos lanzará la interfaz gráfica, la cual nos nos pedirá permisos de superusuario (root) para ejecutarse.

Lo primero que comprobará el instalador es si existen actualizaciones del asistente y tras unos breves instantes se lanzará la interfaz gráfica del asistente:


Tras aceptar la licencia de instalación nos pedirá que conectemos nuestro lector de DNie:



y comenzara la instalación, la cual es completamente automática. Tras instalar el lector nos pedirá que insertemos nuestro DNIe para verificar el correcto funcionamiento del lector:



Seguidamente el asistente comprobará que tenemos acceso a los certificados almacenados en el DNIe, tras lo cual termina la instalación y ya podremos disfrutar de las ventajas de nuestro lector de DNIe.

Este mismo asistente nos permite, en caso de desearlo, llevar a cabo la desinstalación del lector.

Fuente: Fermu

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS