Emulador en Ubuntu: Qemu version 0.8.2. con Kqemu

Recomiendo VirtualBox, clic aqui
Descripcion : http://es.wikipedia.org/wiki/QEMU
1 --- Instalacion
2 --- Manejo de Qemu
3 --- Errores posibles
- INSTALACION
Para instalarlo, descargar qemu-0.8.2.tar.gz y kqemu-1.3.0pre9.tar.gz desde esta pagina:
http://fabrice.bellard.free.fr/qemu/download.html
Luego seguir estos pasos:
Necesitamos instalar antes libsdl1.2-dev , texi2html , CVS ,zlib-dev y los headers de nuestro kernel
$ sudo aptitude install libsdl1.2-dev
$ sudo aptitude install texi2html
$ sudo aptitude install cvs
$ sudo aptitude install linux-headers-`uname -r`
$ sudo aptitude install zlib1g-devAhora comprobamos la version del gcc
$ gcc -v
Si nos sale (bash: gcc: command not found) haremos:
$ sudo aptitude install gcc-3.4
y si no nos sale la version 3.4 ; haremos:
$ sudo rm /usr/bin/gcc
$ sudo ln -s /usr/bin/gcc-3.4 /usr/bin/gccTambien comprobaremos si tenemos el paquete make si no lo tenemos solo hay k descargarlo:
$ sudo aptitude install make
Descomprimir el tar del qemu, y dentro de su directorio descomprimir el tar del kqemu (en versiones anteriores era necesario hacerlo para que al hacer el ./configure nos ponga kqemu acelerator yes). Nos situamos dentro del directorio del qemu y hacemos:
$ ./configure
$ make
$ sudo make installSituarnos dentro del diredctorio del kqemu y hacer
$ ./configure
$ make
$ sudo make installAhora tenemos k cargar el modulo kqemu
$ sudo /sbin/modprobe kqemu major=0
En esta nueva version tendremos acceso a una nueva opcion a poner a la hora de lanzar el qemu; esta opcion es:
-kernel-kqemu
opcion la cual hara k las operaciones sean manejadas por el procesador del host y no por el invitado , lo cual aumenta la velocidad de una forma considerable. Esta opcion solo funcionara en sistemas invitados windows 2000, windows XP o linux cuyo kernel sea 2.6
Para comprobar k el modulo kqemu esta cargado , lanzaremos alguna imagen de qemu y presionaremos ctrl+alt+2 y escribiremos "Info kqemu" dde deberia poner algo asi:
kqemu suport: enabled for user mode
y si pasamos la opcion -kernel-kqemu deberia poner:
kqemu suport: enabled for user and kernel mode
- Manejo de Qemu y sus opciones
-
Para crear una imagen que el programa usara como disco duro. Y su capacidad (en este caso 2Gigas).
$ qemu-img create nombre_de_imagen.img 2G
- Para comprimir una imagen y que solo ocupe el uso real de disco duro.
$ qemu-img convert nombre_de_imagen.img -O qcow nombre_de_imagen.qcow
A partir de entonces, ejecuta qemu sobre nombre_de_imagen.qcow, el tamaño del fichero *.qcow irá creciendo a medida que aumente el tamaño de la imagen.
- Para elegir desde donde bootear pasaremos la opcion -boot y la opcion a,c o d (disketera,disco duro , cd-rom) . Ejemplo
$ qemu -hda nombre_de_imagen.img -cdrom /dev/cdrom -boot d
- montar la imagen con soporte para cdrom ( real o de imagen iso )
$ qemu -hda nombre_de_imagen.img -cdrom /dev/cdrom
$ qemu -hda nombre_de_imagen.img -cdrom /directorio/imagen.iso*crear imagen iso a partir de directorio:
*$mkisofs -J -o nombre_que_quieras_darle.iso /directorio/nombre_de_la_carpeta
-
- La memoria ram por defecto es 128 , para cambiar el valor , pasaremos la opcion -m y el numero. ejemplo.
$ qemu -hda nombre_de_imagen.img -cdrom /dev/cdrom -m 256
- Montar la imagen dentro de linux , para poder leer y escribir desde y hacia ella.En este caso es imprescindible k la imagen ya tg formato FAT.
$ sudo mount -o loop,offset=32256 /directorio_de_la_imagen/nombre_de_la_imagen /punto de montaje/
-
Para que cuando corramos la imagen use la hora del sistema host , pasaremos la opcion -localtime
- Para habilitar samba , pasaremos la opcion -smb directorio_que_compartimos
Una vez dentro de windowsXP ( solo valido para este , y supongo k para ateriores windows tb ) en una ventana de dos , teclearemos esto para tener acceso al directorio compartido:
# net use e: \\IP\directorio_compartido
e: pasara a ser la ruta del directorio compartido.
-
El acceso a internet (NAT) viene activado por defecto.
- Con soporte para usb , pasaremos la opcion -usbdevice o desde la consola del propio qemu
usb_add host:numero:numero
Si estas usando un kernel anterior al 2.4 asegurate k no este ningun driver usando el puerto usb.
Comprueba asi k /proc/bus/usb funciona :
$ ls /proc/bus/usb
y deberia salir algo asi
001 devices drivers
Como aceder directamete al dispositvo host requiere privilegios de root: ejecutaremos qemu como root o podemos cambiar los permisos del usb asi:
$ chown -R myuid /proc/bus/usb
ejecuta qemu con la opcion -usb y presiona ctrl+alt+1 y escribe
$ info usbhost
Device 1.2, speed 480 Mb/s
Class 00: USB device 1234:5678, USB DISKEn esa misma consola añadir el dispositivo usando usb_add host:numero:numero y el sistema invitado deberia notificar el encendido de un nuevo dispositivo.Tambien podemos pasar la opcion -usbdevice host:numero:numero a la linea de ejecucion del qemu.
- Para añadir un directorio como un nuevo disco duro (de solo lectura) a un sistema guest windows (el limite es 471MB) pasar la opcion -hdb fat:/directorio/. ejemplo:
$ qemu -hda win98.img -hdb fat:/media/descargas/libros/
- Para emular una sound blaster 16 añadir la opcion -soundhw sb16
-
$ qemu -boot c -fda /dev/fda -cdrom /dev/cdrom -hda hd.img -m 256 -k es
Cargara disketera,disco duro y cdrom y booteara desde c ,ademas tendra aceso a internet , usara 256 mb de memoria y usara teclado español ( -k es ). -
$ qemu -hda win.img -cdrom /dev/cdrom -m 192 -boot d
Cargara disco duro y cdrom y booteara desde d (desde el cdrom) y usara 192mb de memoria. -
$ qemu -hda imagen.img -usbdevice host:1234:5678
Cargara la imagen del disco duro y habilitara el puerto usb indicado y tendra acceso transparente a internet -
$ qemu -net user -net nic -usb -soundhw sb16 -localtime win98games.img -hdb fat:/home/usuario
-
Problema con kqemu
Could not open '/dev/kqemu' - QEMU acceleration layer not activated
Puede ser debido a k no esta cargado el modulo o k el modulo solo puede usarlo root.
Para descargar y volver a cargar el modulo
$ modprobe -r kqemu
$ /sbin/modprobe kqemu major=0si dice operacion no permitida , lo ejecutaremos como root:
$ sudo modprobe -r kqemu
$ sudo /sbin/modprobe kqemu major=0Si lanzamos qemu como usuario y no carga el modulo acelerador , probar a lanzarlo como root.Si lo carga como root , entonces para que lo pueda usar el usuario deberiamos darle privilegios al usuario para que pueda usar el modulo.
- Problema con usb_add o -usbdevice
Si intentamos cargar un dispositivo y nos sale
usb_host: only one interface supported
entonces podemos aplicar un patch k se descarga dandole a guardar como , desde aki:
http://gnome.dnsalias.net/patches/multiple-interfaces.patch
para aplicarlo lo copiamos al directorio de los sources del qemu y en una terminal escribimos
$ patch -p1 < multiple-interfaces.patch
recosntruimos e instalamos.
Explicacion del porque y donde me dieron la solucion aki:
http://qemu.dad-answers.com/viewtopic.php?p=4516#4516
El problema al añadir este patch es que el sistema invitado se puede volver excesivamente lento.
- Problema con kqemu
usuario@maquina:~$ sudo /sbin/modprobe kqemu major=0
FATAL: Error inserting kqemu (/lib/modules/2.6.15-23-k7/misc/kqemu.ko): Invalid module formatEste error me salia en dapper y para areglarlo solo tuve k cambiar el enlace blando del gcc-3.4 al gcc-4.0 y volver a compilar el modulo kqemu.
$ sudo rm /usr/bin/gcc
$ sudo ln -s /usr/bin/gcc-4.0 /usr/bin/gccSi no os deja compilarlo de nuevo, borrar el directorio y volver a descomprimirlo y situarse dentro de el.
Si creeis k os faltan librerias, descargar lo siguiente (cambiar k7 por 386 , 686 o lo k sea)
$ sudo aptitude install linux-k7 linux-headers-k7 linux-image-k7 linux-restricted-modules-k7
Montar la imagen con soporte para disketera; pasaremos la opcion -fda /dev/fda o con una imagen de diskette -fda /directorio/imagen_de_boot.img
Ejemplos de comandos:
Nota final: Podeis crear un lanzador con todas las opciones k necesiteis, para no tener k estar todo el rato escribiendo desde la terminal.algo asi:
Escritorio , clic derecho , crear un lanzador
nombre: windows98
comando: qemu -hda windows98.img -cdrom /dev/cdrom -m 256 -boot d -localtime
Red lan con qemu y servicio vnc desde internet al guest
http://fabrice.bellard.free.fr/qemu/download.htm
http://www.ubuntu-es.org/node/3602
https://wiki.ubuntu.com/WindowsXPUnderQemuHowTo?highlight=%28qemu%29
http://home.online.no/~osmoma/script-of-moma.html (pagina original del script)
http://www.ubuntuforums.org/showthread.php?t=142191
http://www.h7.dion.ne.jp/~qemu-win/HowToNetwork-en.html (usar red en qemu , en ingles)
http://www.ubuntuforums.org/showthread.php?t=146485&highlight=qemu
http://fabrice.bellard.free.fr/qemu/qemu-doc.html#SEC28
http://qemu.dad-answers.com/viewtopic.php?p=4516#4516
http://www.h7.dion.ne.jp/~qemu-win/ (ejecutable de qemu en windows y diversos parches)

Instalando desde el cvs con virtualization
Instalar Qemu 0.8.1 (cvs) y el acelerador kqemu (sources) desde los sources.
Necesitamos instalar antes libsdl1.2-dev , texi2html , CVS y los headers de nuestro kernel
$ sudo aptitude install libsdl1.2-dev
$ sudo aptitude install texi2html
$ sudo aptitude install cvs
$ sudo aptitude install linux-headers-`uname -r`
Ahora comprobamos la version del gcc
$ gcc -v
Si nos sale (bash: gcc: command not found) haremos:
$ sudo aptitude install gcc-3.4
y si no nos sale la version 3.4 ; haremos:
$ sudo rm /usr/bin/gcc
$ sudo ln -s /usr/bin/gcc-3.4 /usr/bin/gcc
Tambien comprobaremos si tenemos el paquete make si no lo tenemos solo hay k descargarlo:
$ sudo aptitude install make
Bajar el cvs del qemu y guardarlo en la carpeta qemu
$ cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/qemu co qemu
Descargar el kqemu
$ wget http://fabrice.bellard.free.fr/qemu/kqemu-1.3.0pre5.tar.gz
Descomprimir el tar del qemu , situarnos dentro de su directorio y hacer:
$ ./configure
$ make
$ sudo make install
Descomprimir el tar del kqemu y situarnos dentro de su directorio y hacer
$ ./configure
$ make
$ sudo make install
Ahora tenemos k cargar el modulo kqemu
$ sudo modprobe kqemu
Instalando la version cvs del qemu y los sources del kqemu ( no los binarios ). Tendremos acceso a una nueva opcion a poner a la hora de lanzar el qemu; esta opcion es:
-kernel-kqemu
opcion la cual hara k las operaciones sean manejadas por el procesador del host y no por el invitado , lo cual aumenta la velocidad de una forma considerable. Esta opcion solo funcionara en nucleos linux 2.4 o 2.6 y sistemas invitados windows 2000 o windows XP
Para comprobar k el modulo kqemu esta cargado , lanzaremos alguna imagen de qemu y presionaremos ctrl+alt+2 y escribiremos Info kqemu dde deberia poner algo asi:
kqemu suport: enabled for user mode
y si pasamos la opcion -kernel-kqemu deberia poner:
kqemu suport: enabled for user and kernel mode
----------------------------------------------------------------------------------------------------
En mi caso kedaria asi la linea de ejecucion:
$ qemu -hda win2000.img -kernel-kqemu
Y la velocidad es apabullante comparado con los resultados de las instalaciones del post anterior. Aunk tb es cierto k ahora tg el kernel para un k7 y antes lo tenia en 386 , supongo k habra ayudado algo .
Un usuario de Linux
http://necoso.wordpress.com
.
.
Un usuario de Linux
http://necoso.wordpress.com
ERROR: "gcc" looks like gcc 4.x
root@Loca:/home/yo/qemu-0.8.2# ./configure
ERROR: "gcc" looks like gcc 4.x
QEMU is known to have problems when compiled with gcc 4.x
It is recommended that you use gcc 3.x to build QEMU
To use this compiler anyway, configure with --disable-gcc-check
root@Loca:/home/yo/qemu-0.8.2#
.
.
Un usuario de Linux
http://necoso.wordpress.com
no termina de compilar qemu en ubuntu 6.06, por que??
durante el "make" de qemu se detiene en una linea argumentando:
lirp/bootp.o slirp/debug.o slirp/tftp.o libqemu.a -lm -lz -L/usr/lib -lSDL -lpthread -lutil
make[1]: se sale del directorio `/home/xxxxx/qemu-0.8.1/arm-softmmu'
root@debian:/home/xxxxx/qemu-0.8.1#
y luego con el "make install" da una serie de
make[1]: se ingresa al directorio `/home/xxxxx/qemu-0.8.1/i386-user'
make[1]: No se hace nada para `all'.
make[1]: se sale del directorio `/home/xxxxx/qemu-0.8.1/i386-user'
make[1]: se ingresa al directorio `/home/xxxxx/qemu-0.8.1/arm-user'
make[1]: No se hace nada para `all'.
....etc.
Cual es la razón?
Ayuda porfa!!!!
Kqemu no funciona
Wenas, tengo un problema al dar la orden:
$ make
al kqemu, me dice lo siguiente:
make -C /lib/modules/2.6.15-26-386/build M=`pwd` modules
make[1]: se ingresa al directorio `/usr/src/linux-headers-2.6.15-26-386'
CC [M] /usr/share/qemu/kqemu-1.3.0pre9/kqemu-linux.o
cp /usr/share/qemu/kqemu-1.3.0pre9/kqemu-mod-i386.o /usr/share/qemu/kqemu-1.3.0pre9/kqemu-mod.o
LD [M] /usr/share/qemu/kqemu-1.3.0pre9/kqemu.o
Building modules, stage 2.
MODPOST
Warning: could not find /usr/share/qemu/kqemu-1.3.0pre9/.kqemu-mod.o.cmd for /usr/share/qemu/kqemu-1.3.0pre9/kqemu-mod.o
CC /usr/share/qemu/kqemu-1.3.0pre9/kqemu.mod.o
LD [M] /usr/share/qemu/kqemu-1.3.0pre9/kqemu.ko
make[1]: se sale del directorio `/usr/src/linux-headers-2.6.15-26-386'
y luego de eso al poner:
$ sudo make install
me dice
./install.sh
y se queda ahi.
Les agradecería algo de ayuda porque el qemu me funciona muy lento y me gustaría ver si con el kqemu puedo solucionar eso.
Saludos.