IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Instal·lació

$ sudo apt-get install qemu

Executar un nucli linux amb qemu

La forma més senzilla és:

$ qemu -kernel /vmlinuz

se us obrirà una finestra i us donarà el següent error:

ExempleQemu.png
Please append a correct root= ....

Cal indicar quin és el dispositiu de root, el fitxer imatge amb el sistema de fitxers i el nucli i el initrd si és tracta d'un nucli pensat per ser executar amb initrd.

$ qemu -kernel /vmlinuz -initrd /initrd.img -hda image.img -append "root=/dev/hda"

On imatge és una imatge creada amb dd i amb un sistema de fitxers.

Un exemple un xic més complet:

$ qemu $* -boot c -kernel /vmlinuz -initrd /initrd.img -hda image.img  -append "root=/dev/sda clock=pit"

On:

  • $*:
  • -boot -c: Indica que el dispositiu d'arrencada és el primer disc dur
  • -kernel: Indica el nucli (kernel) a executar
  • -initrd: Indicar el fitxer initrd a utilitzar
  • -hda: indica quin és el primer disc dur
  • -append: indica els paràmetres del nucli

Exemple

$ cat boot.sh 
#!/bin/bash

if which qemu
then
	qemu $* -boot c -kernel linux-2.6.20.1/arch/i386/boot/bzImage -hda ./image.img -append "root=/dev/hda clock=pit"
else 
 	echo No he trobat executable qemu / No he encontrado ejecutable qemu 
	echo Està instal.lat? / ¿Está instalado? 
	echo Està actualitzada la variable PATH? / ¿Está actualizada la variable PATH?
fi

On cal tenir el kernel que volem executar (en l'exemple: linux-2.6.20.1) i el fitxer imatge: image.img.

El kernel de Linux:

$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.1.tar.bz2

El fitxer img amb un sistema de fitxers:

$ wget http://www.ac.upc.edu/video/videos/image.img

Descomprimim el kernel de Linux:

$ tar jxvf linux-2.6.20.1.tar.bz2

Executar una instal·lació des de CD amb qemu i VNC

Per exemple:

$ sudo qemu -hda /home/lsc/centos3 -cdrom /home/lsc/CentOS-3.8-server-i386.iso -boot d -vnc 2

On:

  • /home/lsc/centos3: és la carpeta destinació de la instal·lació
  • /home/lsc/CentOS-3.8-server-i386.iso: iso de la instal·lació de Centos

La instal·lació es pot veure per la pantalla 2 de VNC.

Es pot utilitzar directament el CD amb:

Si teniu suport a la CPU per a KVM

$ sudo qemu -hda /home/lsc/centos3 -cdrom /dev/cdrom -boot d -vnc :2

Si no el teniu:

$ sudo qemu --no-kvm -hda /home/lsc/centos3 -cdrom /dev/cdrom -boot d -vnc :2

Ara obriu una nova terminal. Si feu un nmap a localhost:

$ nmap localhost
Starting Nmap 5.00 ( http://nmap.org ) at 2010-03-22 12:48 CET
Warning: Hostname localhost resolves to 2 IPs. Using 127.0.0.1.
Interesting ports on localhost (127.0.0.1):
...
5902/tcp  open  vnc-2
...

Com podeu veure hi ha un port de VNC obert a 5902. Instal·leu el client de VNC:

$ sudo apt-get install vncviewer 

I executeu:

$ tsclient

Connecteu-vos a:

localhost:5902

Sense usuaris ni paraula de pas. Us obrirà una pantalla amb el CD d'instal·lació. Dueu a terme la instal·lació normalment.

NOTA: Potser us haureu de reconnectar de tant en tant. Tingueu paciència, que el procés és lent amb emulació qemu.

Un cop acabada la instal·lació es pot provar la màquina virtual amb:

$ sudo qemu --no-kvm -hda /home/lsc/centos3 -vnc :2

Instal·lar Ebox des de qemu

Prèviament cal que tinguem qemu instal·lat:

$ sudo apt-get install qemu

Primer cal obtenir la ISO de Ebox:

$ wget https://sourceforge.net/projects/ebox-platform/files/ebox_installer-1.4-1.iso/download

Ara cal obtenir el md5 i comprovar que la descarrega s'ha fet correctament:

$ wget http://switch.dl.sourceforge.net/project/ebox-platform/ebox_installer-1.4-1.iso.md5
$ md5sum -c ebox_installer-1.4-1.iso.md5
ebox_installer-1.4-1.iso: CORRECTE

El MD5 hauria de ser:

b02ba340f50cc585cfa68c53d4126da0  ebox_installer-1.4-1.iso

Instal·larem ebox a un volum lògic LVM:

$ sudo lvdisplay /dev/xen_vm/TortosaINSEbreSrvr1
 --- Logical volume ---
 LV Name                /dev/xen_vm/TortosaINSEbreSrvr1
 VG Name                xen_vm
 LV UUID                eT1vml-8kAp-JjgU-D6J2-9S6T-ADTI-5owlnF
 LV Write Access        read/write
 LV Status              available
 # open                 1
 LV Size                4,00 GB
 Current LE             1024
 Segments               1
 Allocation             inherit
 Read ahead sectors     auto
 - currently set to     256
 Block device           254:1

El muntem a /mnt/TortosaINSEbreSrvr1:

$ sudo mount /dev/xen_vm/TortosaINSEbreSrvr1 /mnt/TortosaINSEbreSrvr1

Ara per instal·lar ebox al vòlum lògic LVM amb qemu:

$ sudo qemu -hda /dev/mapper/xen_vm-TortosaINSEbreSrvr1 -cdrom /home/sergi/ebox_installer-1.4-1.iso -boot d -vnc :2

NOTA: Si la vostra CPU no té suport per a KVM proveu amb l'opció --no-kvm

Ara podeu accedira VNC amb un client VNC com tsclient:

$ sudo apt-get install vncviewer
$ tsclient

Connecteu-vos a:

IP: IP_SERVIDOR
PORT: 5902

Un cop s'ha fer la instal·lació s'apagarà la màquina. Cal aturar qemu amb:

Ctrl+C

I tornar-lo a executar amb:

$ sudo qemu -hda /dev/mapper/xen_vm-TortosaINSEbreSrvr1 -vnc :2

I tornar-se a connectar via VNC.

IMPORTANT: Si no funciona la xarxa a la màquina virtual qmeu la instal·lació fallarà.

ErrorXenEboxKernel.png

Convertir imatge qemu a LVM

$ lvcreate -n foobar-disk0 -L 5G vgroot
$ qemu-image convert /path/to/loopfile.img -O raw /dev/vgroot/foobar-disk0

Muntatge d'una màquina virtual qemu

Podeu utilitzar un script com:

$ cat mount_image.sh 
#!/bin/sh 
 
usage () { 
	echo "Options:"
	echo "-i		Hard Disk image (default image.img)"
	echo "-d		Directory (image)"
	echo "-o		Offset to the first partition (default 0)"
	echo "-u		Umount the image"
} 

# Default values
IMAGE="image.img"
DIRECTORY="image"
OFFSET=0

while [ $# -gt 0 ]; do
	case $1 in
 		-h) 
		 	usage
			exit 1 ;;
		-i)	
			shift 1
			IMAGE=$1
			shift ;;
		-d)
			shift 1
			DIRECTORY=$1
			shift ;;
		-o)
			shift 1
			OFFSET=$1
			shift ;;
		-u)
			CMD="umount"
			shift ;;
		*)
			echo "Unknown option $1"
			exit 1
			;;
	esac
done
 
if [ -z $CMD ] && [ ! -s $IMAGE ]; then
	echo "$IMAGE is not a valid file:"
	usage
	echo ""
	exit 1
fi
 
if [ ! -d $DIRECTORY ]; then
 	echo "$DIRECTORY is not a valid directory"
	usage
	echo ""
	exit 1
fi

# Mount the device
if [ -z $CMD ]; then
	sudo mount $IMAGE $DIRECTORY -o loop,offset=$OFFSET
else
  	sudo $CMD $DIRECTORY
fi

Per muntar:

$ sudo ./mount_image.sh

Ara es poden copiar fitxers directament al sistema imatge:

$ cp moduls/exemple?/*.ko image/root

Per desmuntar:

$ sudo ./mount_image.sh -u

Fitxers

Resolució de problemes

Could not initialize KVM, will disable KVM support

A Ubuntu Karmic:

$ sudo qemu -hda /dev/loop0 -cdrom /home/sergi/Baixades/ebox_installer-1.4.iso -boot d -vnc :2
open /dev/kvm: No such file or directory
Could not initialize KVM, will disable KVM support
inet_listen: ipv4 parse error (2)

El problema és que per defecte intenta utilitzar KVM i no totes les CPU suporten KVM. Heu d'executar qemu amb l'opció -no-kvm:

$ qemu -no-kvm -hda /dev/loop0 -cdrom /home/sergi/Baixades/ebox_installer-1.4.iso -boot d -vnc :2

Vegeu també