QEMU

6 09 2007

Windows XP bajo Linux con QEMU: “Coherence Mode”:


Introduction:


QEMU es un virtualizador al estilo de Paralels para MacOS, o el famosísimo Vmware. Con QEmu puedes ejecutar un sistema operativo dentro de Linux, como en este caso Windows dentro de Linux.

En este tuto vamos a crear una instalación completa de Windows XP en QEMU, y lo vamos a dejar preparado para usar el mismo sistema que usan en MacOS con Paralels, el Coherence Mode.
Este modo permite ejecutar programas de Windows al 100%, pero tratarlos en una ventana como si de un programa de Linux se tratase.
Puedes pensar que es lo que ahora hace Wine, pero la puntualización está en ese 100%: Con la virtualización puedes ejecutar casi todo el software para Windows, y funcionará tan bien como en Windows.

Si ya has usado antes software de virtualización, sabrás que el sistema virtualizado queda encerrado en la ventana del virtualizador, como puedes ver en la screenshot.
El modo de coherencia te permite esconder esa ventana, y mostrar las ventanas que tienes cargadas en el Windows como si de ventanas normales se tratase.
Es extremadamente cómodo.

Extra: Aunque hasta hace poco kqemu, una mejora de qemu realmente espectacular, era privada, la han liberado bajo la GPL.
Extra:Muchos de los PC’s que se compraron durante el 2006 soprtan VT y/o Pacifica, extensiones que mejoran la velocidad de virtualización exponencialmente.
Si el comando egrep ‘^flags.*(vmx|svm)’ /proc/cpuinfo te muestra salida, prueba la Virtualización mediante Kernel, que hará aun mas ligero el uso de QEMU

Instalando QEMU:


Ubuntu (Dapper 6.06, Edgy 6.10 and Feisty 7.04):

  1. Lo primero es instalar qemu, y sus dependencias: sudo apt-get install qemu
    De esta manera apt se encarga de todo.
    Si compruebas que no tienes el paquete kqemu-source, bájalo de aqui, e instálalo: dpkg -i kqemu-source_1.3.0~pre9-3_all.deb
  2. Ahora toca crear el modulo kqemu, para lo que vamos a usar module-assistant: m-a update;m-a prepare;m-a a-i kqemu-source
  3. QEMU no carga automáticamente sus drivers ni sus unidades cuando es iniciado.
    Para que cargue hay que trabajarse un par de comandos mas:

    CÓDIGO

    sudo modprobe kqemu
    echo kqemu >> /etc/modules


    Y, si no nos lo ha hecho automáticamente, hay que añadir en la sección “misc devices” del archivo /etc/udev/permisions.rules la línea KERNEL==”kqemu”, MODE=”0666″

Gentoo:

  1. Lo primero es mirar que vamos a instalar: emerge -pv qemu
    Lo que a mi, con la versión 0.8.2 me da app-emulation/qemu-user, app-emulation/kqemu, app-emulation/qemu-softmmu, y app-emulation/qemu
    Si te fijas solo app-emulation/qemu-softmmu, tiene use flags.
    Alsa, como siempre, para habilitar el sonido.
    kqemu, para instalar el modulo especial este. No viene habilitado como estándar, así que hay que agregarlo si quieres usarlo: echo app-emulation/qemu-softmmu kqemu >> /etc/portage/package.use
    Y SDL, Simple Direct Layer…yo lo tengo activado generalmente.
  2. emerge qemu…y tira millas.

    Extra: Para hacer la instalación “a la Gentoo”, lo mejor es que te guíes por los profesionales. Nosotros tenemos opciones muchísimo mas potentes que el resto de los mortales, y la verdad es que merece la pena echarles un ojo.
    Paso de ponerlas en el tuto porque, no solo se actualizan antes en su wiki, sino que va a ser un lío para el resto de usuarios.

Instalando XP en QEMU:


Aunque para el tuto usemos XP, obviamente puedes instalar versiones anteriores. Y cuanto mas “viejo”, mas rápido.
Todo depende de para que lo vayas a usar.
Para bien o para mal XP es el SO de Microsoft que actualmente acepta un mayor numero de aplicaciones.
A partir de aquí ya es igual para todas las distribuciones.

  1. Ejecuta modprobe kqemu para cargar el modulo que acabas de crear.
  2. Lo siguiente es crear una unidad virtual para nuestro Windows virtualizado.
    Yo que tú lo crearía en mi home, pero eso ya depende de la instalación de cada uno.
    Para el ejemplo vamos a crear una carpeta en nuestra home para el Windows, con este comando: mkdir ~/Windows
    Este comando lo ejecutas con tu usuario…pero si te lías crea la carpeta a mano con Nautilus, Konqueror, o lo que uses para navegar las carpetas.
    Vamos ya a por la unidad. Lo vamos a lograr con este comando: qemu-img create -f qcow windows.img 2G
    Si nos fijamos en el comando, verás que con 2G le estamos pidiendo que cree una unidad de 2GB, que para Windows será su disco duro…pero para nosotros será el el archivo windows.img que nombramos en el comando.
    Puedes ponerle cualquier tamaño por encima de 1.5GB, que es el mínimo que pide el XP.
    El archivo empezará siendo muy ligero, y se llenará hasta el tamaño máximo que seleccionases.

    Note: Con las unidades creadas con qcow no se pueden montar en Ubuntu como si fuesen unidades de disco reales.
    A cambio van siendo mas grandes según se llenan.
    Quizás mereciese la pena crearla sin qcow, pero a costa de tener un archivo gigantesco. #2

  3. Para instalar XP tienes 2 alternativas: Desde tu unidad óptica…o desde una imagen de CD.
    Todos somos muy buenos chicos y vamos a usar un Windows Original, pero si por alguna casualidad ha aparecido una ISO del XP en tu PC, misterios de la informática, puedes usarla sin necesidad de grabarla. (Te recuerdo que generalmente viene la serial dentro de la propia imagen. Un programa como kiso te puede solucionar este tema)
    Con CD: qemu -localtime -hda windows.img -cdrom /dev/cdrom -m 256 -boot d
    Con la ISO: qemu -localtime -hda windows.img -cdrom /ruta/a/la/iso/imagen.iso -m 256 -boot d
    Esto iniciará QEMU usando como base la imagen windows.img que hemos creado antes, y cargando el CD o la ISO.
    Atento a la parte -m 256: Significa que vamos a independizar 256 MB de memoria para nuestra virtualización.
    Con 256MB el XP correrá suelto de RAM, pero como en todo es tu elección.
    Yo tengo actualmente 512MB…lo que me dejaría con solo 256MB para uso normal de Linux.
    Si tienes 2GB puedes tirar mas memoria para el XP. 512-768MB es mas o menos lo que gasta un XP normal a toda potencia, generalmente.
    Si ves que te dice algo como: You do not have enough space in ‘/dev/shm’ for the 256 MB of QEMU virtual RAM.….es que no tienes suficiente RAM.
    Simplemente bájale el valor…¡pero no te pases! XP con menos de 128MB es un suicidio.

    Extra para los usuarios de procesadores de 64 bit: Usa qemu-system-x86_64 en vez de qemu a secas, que sino no funcionará la opción “-kernel-kqemu”.
    Extra para los que vayan a virtualizar Windows 2000: Añade -win2k-hack al comando, o se clavará diciéndote que no hay espacio libre en el disco.

    QEMU va a iniciarse, cargando el instalador de XP al que espero que ya estés acostumbrado. Funciona exactamente igual que siempre.
    Sin embargo se sabe que a poca gente se le ha clavado el instalador. Raro, pero sucede.
    Si notas que la última parte de la instalación, que ves en la screenshot de abajo, se eterniza, reinicia QEMU, y el instalador continuará desde este punto.

    Después de los típicos reinicios de la instalación de Windows, verás el promt de Windows en tu ventanita de QEMU.
    Si haces click en la ventana, el ratón pasará a ser parte de tu Windows virtualizado. Para “que lo suelte”, presiona Ctrl + Alt.
    También puedes entrar y salir del modo a pantalla completa pulsando Ctrl + Alt + F

Virtualizando libremente: El efecto “Coherence”:


Usando rdesktop vamos a lograr el efecto “coherence”. Esta aplicación sirve para correr escritorios remotos dentro de tu propio escritorio.

  1. Lo primero es instalar una versión de rdesktop superior a la 1.5
  2. vamos a iniciar QEMU con este comando: qemu -m 256 -hda windows.img -redir tcp:3389::3389
    VEs que hemos agregado opciones de red. Todas las conexiones que se redireccionen al puerto 3389 de nuestro sistema irán a parar al puerto 80 de nuestro Windows.
    En otras palabras: Le hemos dado acceso a internet.
  3. En windows vamos a activar el acceso remoto.
    Para ello entra en el Panel de Control, en las propiedades del sistema.
    Verás una pestaña que habla sobre acceso remoto. Tienes que dar permiso para conectarse remotamente a los usuarios.
  4. Otra cosa…¿recuerdas el molestísimo firewall de Windows? Pues te va a dar problemas como no nos lo quitemos de encima YA.
    Tienes 2 opciones: Desactivarlo, o agregar c:\seamlessrdp\seamlessrdpshell.exe a la lista segura
  5. Vamos a descargar un plug-in para Windows: seamlessrdp.zip. Extráelo en C:\seamlessrdp
  6. ¿Funcionará ya rdesktop?…probemos: rdesktop -A -s “c:\seamlessrdp\seamlessrdpshell.exe C:\Archivos de Programa\Internet Explorer\IEXPLORE.EXE” localhost:3389 -u administrator -p password
    Debería aparecer una ventana considerablemente grande con el promt de Windows, para que te registres.
    …….Bienvenido al efecto “coherence”

Una vez que hemos comprobado que funciona, vamos a fijarnos el el comando que acabamos de usar.
Primero tienes que aprender a usarlo; luego lo haremos mas cómodo.
Si te fijas verás que en el comando verás que se le pasa dos direcciones de Windows: c:\seamlessrdp\seamlessrdpshell.exe y C:\Archivos de Programa\Internet Explorer\IEXPLORE.EXE
La 1ª es siempre igual. Es el programa pasarela que hemos descargado.
La 2ª es la verdadera ruta al programa que quieres ejecutar.
Si en vez de cargar el IExplorer, cargas el Firefox…funcionará exactamente igual.
Esto es importante ya que puedes crear links con este comando ya formateado, de manera que con un click se ejecute en tu escritorio.
Doy por echo que ya sabes crear “accesos directos ” en Linux.
También debes fijarte en que le pasamos información de registro: -u administrator -p password
-u = usuario -p = contraseña.
Si yo tengo en mi Windows al usuario Ark, contraseña pepe, tengo que poner -u Ark -p pepe
Compartiendo archivos entre ambos sistemas operativos:


De poco nos vale tener una virtualización si no podemos transladar archivos entre XP y tu distro.
QEMU prepara para eso un servidor DHCP, facilitando que montes una red, y la uses tal cual.
Para ello lo mas lógico es usar Samba, el sistema de redes Windows para Linux.
Configurar Samba tiene su misterio…así que de momento buscad un buen tuto al respecto. Con tiempo pondré un tuto para cada distro #3
Así que de momento vamos a dar por seguro que tienes Samba bien configurada, y un share llamado ‘qemu_share’ para usarlo de pasarela entre XP y tu distro.
qemu -m 256 -hda windows.img -redir tcp:3389::3389 -smb $HOME/qemu_share -soundhw all -localtime es el comando modificado para la ocasión.
Verás que hemos agregado las opciones para Samba. Sobre todo asegúrate de cambiar $HOME/qemu_share por la ruta a tu share.
Ahora hay que montar la unidad en XP con este comando (ejecuta el CMD): net use e: \\10.0.2.4\qemu_share
La IP virtual de tu distro siempre será 10.0.2.4
Montando la unidad virtual en Linux (Opcional a Samba):


Con este sistema también vamos a poder acceder a los archivos de Windows desde Linux…pero es unidireccional. Desde Linux, Windows.
Por eso, aunque es menos seguro, usamos el sistema Samba como opción principal.
La unidad virtual se puede montar como se montan las unidades de tda la vida en Linux.
Para ello asegúrate que QMEU está cerrado.
Lo primero es crear el punto de montaje: mkdir /mnnt/qemu
Y ahora lo montamos: sudo mount -o loop,offset=32256 windows.img /mnt/qemu
Si usaste qcow, tendrás que transformar antes la imagen. #4
Haciendo “Backups”: Overlays:


Se puede hacer fácilmente un backup de tu sistema virtual. Si has usado vmware ya sabrás de que hablo.
Será una imagen como la que usamos para instalar Windows, pero solo contendrá la diferencia entre la instalación original, siendo un archivo mucho mas pequeño.
Para crearlas usaremos qemu-image: qemu-img create -b windows.img -f qcow windows.ovl
La idea es que crees overlays cada cierto tiempo, para poder volver a un estado anterior fácilmente.
qemu windows.ovl -enable-audio -user-net -localtime -smb qemu_share
Como ves ya no usamos la imagen básica, sino el overlay.
Y si el overlay se estropea, es tan fácil como usar un overlay anterior, o la mismísima base.
Usando QEMU avanzadamente:


Mientras está ejecutado, puedes mandarle comandos presionando CTRL+ALT+2.
Las opciones son múltiples #5. Aquí tienes toda la información al respecto.
Para cerrar la consola, presiona CTRL+ALT+1
Solución de problemas:


En esta parte vamos a ir colocando los errores mas típicos que hemos ido recopilando en el hilo, aunque de inicio voy a meter errores ya conocidos, y su solución.

El ratón se bloquea:Si el ratón se te va a una esquina, y se clava, prueba a usar este comando: export SDL_VIDEO_X11_DGAMOUSE=0

Error cargando kqemu: Invalid module format qemu se puede compilar con gcc3 o gcc4, pero generalmente se empeña en hacerlo con gcc3. Si tu kernel está compilado con gcc4, y compilas kqemu de una pasada junto a tu qemu….no te cargará el modulo.
Simplemente asegúrate de compilarlo con el mismo gcc que tu kernel.

Anuncios

Acciones

Information

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: