Emulador en Ubuntu: Qemu version 0.8.2. con Kqemu

+1
0
-1

Recomiendo VirtualBox, clic aqui

Descripcion : http://es.wikipedia.org/wiki/QEMU

1 --- Instalacion
2 --- Manejo de Qemu
3 --- Errores posibles

  1. 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-dev

    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

    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 install

    Situarnos dentro del diredctorio del kqemu y hacer

    $ ./configure
    $ make
    $ sudo make install

    Ahora 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

  2. 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

  3. 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

  4. 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

  5. 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/

  6. Para que cuando corramos la imagen use la hora del sistema host , pasaremos la opcion -localtime

  7. 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.

  8. El acceso a internet (NAT) viene activado por defecto.

  9. 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 DISK

    En 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.

  10. 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/

  11. Para emular una sound blaster 16 añadir la opcion -soundhw sb16
  12. Ejemplos de comandos:

  • $ 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

Errores posibles

  • 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=0

    si dice operacion no permitida , lo ejecutaremos como root:

    $ sudo modprobe -r kqemu
    $ sudo /sbin/modprobe kqemu major=0

    Si 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 format

    Este 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/gcc

    Si 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

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

Fuentes:

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)

Comentarios

Imagen de neco

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 

Imagen de neco

.

Un usuario de Linux 

http://necoso.wordpress.com 

Imagen de Anónimo

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#

Imagen de neco

.

Un usuario de Linux 

http://necoso.wordpress.com 

Imagen de Anónimo

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!!!!

Imagen de lumiden

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.