Émulation
But du jeu: tester des exécutables Debian-PPC avant de les installer chez l'usager - mais depuis mon PC.
QEMU
aptitude install qemu
Attention, le module kqemu du même auteur pour aller plus vite est propriétaire - à éviter donc. Utilisez à la place qvm86.
Compiler et tester un exécutable de test
Pour obtenir powerpc-linux-gcc: Compilation croisée
$ cat <<EOF > hello.c #include <stdio.h> int main(void) { return ! printf("Hello world!\n"); } EOF $ powerpc-linux-gcc hello.c -Wall -ansi -pedantic -static $ qemu-ppc a.out Hello world!
Mais:
$ powerpc-linux-gcc hello.c -Wall -ansi -pedantic $ qemu-ppc ./a.out /lib/ld.so.1: No such file or directory Erreur de segmentation
ToDo: trouver une façon de travailler pour gérer les dépendances (chroot recompilé)?
Des images de systèmes à télécharger
Sur http://free.oszoo.org/download.html
Essayer notamment:
btdownloadcurses http://free.oszoo.org/ftp/images/linux-ppc-20040716.tar.bz2.torrent #20M btdownloadcurses http://free.oszoo.org/ftp/images/debian_sarge_ppc.tar.torrent #1Go!
Avec l'image de base, en tant que root pour avoir le réseau via /dev/net/tun
:
qemu-system-ppc -prep -localtime -kernel zImage.prep linux-ppc.img
À l'intérieur, vous pouvez [1]:
ifconfig eth0 172.20.0.2 # qemu scp me@172.20.0.1:fichier # système hôte
L'image de 1Go est un système Debian sarge PPC pré-installé complet:
qemu-system-ppc -prep -kernel vmlinuz-2.4.27.001 -hda debian_sarge_ppc.img -user-net
Dans celle-ci le réseau à l'air différent:
- 10.0.2.2: hôte et... serveur DHCP!
- 10.0.2.15: qemu
- Installing from Scratch...: HOWTO pour recréer l'image Debian Sarge
Tester une installation
wget http://cdimage.debian.org/debian-cd/3.1_r2/powerpc/iso-cd/debian-31r2-powerpc-netinst.iso qemu-img create debian_sarge_ppc.img 500M qemu-system-ppc -hda debian_sarge_ppc.img -cdrom debian-31r2-powerpc-netinst.iso -boot d
D'après le HOWTO, le noyau 2.6 ne passe pas - utiliser install-powerpc-2.4 ramdisk_size=10000
au boot.
Démarrer sur son disque-dur
qemu -snapshot -hda /dev/hda -hdb /dev/hdb
Démarrer sur une image de partition
(et non sur une image de disque complet)
qemu -hda debian.img -kernel bzImage -append "root=/dev/hda" # ...
QEMU-compatible kernel
Configuration rapide
make defconfig ARCH=i386 make xconfig # Activer: NE2K_PCI=Y (ns2000 PCI network ethernet card) make file arch/i386/boot/bzImage
Ce noyau est malheureusement trop volumineux pour tenir sur une disquette (2.5Mo) - ce qui est nécessaire pour suivre certains HOWTO les séquences d'amorçage ([2][3]).
Configuration précise
Analyse de la configuration,
- Depuis une image qemu qui fonctionne:
$ uname --machine i686 $ cat /proc/cpuinfo [...] model name : Pentium II (Klamath) [...] $ lspci 0000:00:00.0 Host bridge: Intel Corp. 440FX - 82441FX PMC [Natoma] (rev 02) 0000:00:01.0 ISA bridge: Intel Corp. 82371SB PIIX3 ISA [Natoma/Triton II] 0000:00:01.1 IDE interface: Intel Corp. 82371SB PIIX3 IDE [Natoma/Triton II] 0000:00:01.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI 0000:00:02.0 VGA compatible controller: Cirrus Logic GD 5446 0000:00:03.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8029(AS)
- Sur la console qemu (Ctrl+Alt+2):
(qemu) info network VLAN 0 devices: user redirector ne2000 pci macaddr=...
Configuration du noyau:
# noyau minimal make allnoconfig
PearPC
http://pearpc.sourceforge.net/
aptitude install pearpc
Créer un disque de 3GB [4]:
dd if=/dev/zero of=myharddisk.img bs=516096 seek=6241 count=0
Note: le fichier image est composé initialement de blocks vides, qui sont optimisés par ext2:
$ ls -lh myharddisk.img -rw-r--r-- 1 sylvain sylvain 3,0G 2006-05-05 01:36 myharddisk.img $ du -sh myharddisk.img 0 myharddisk.img
Choisir l'image à lancer: modifier /etc/ppc.conf
:
pci_ide0_master_image = "myharddisk.img" pci_ide0_slave_image = "debian-31r2-powerpc-netinst.iso"
Lancer l'émulateur:
ppc
Liens
- Comparison of virtual machines sur Wikipédia
- Guide simplifié pour QEMU
- Disk Images Under Linux: créer des images disques complètes avec table de partition, et comment les monter
- Unofficial #qemu Wiki
- Bochs: émulateur pour x86&x64 uniquement
- KVM et [Xen ]: peuvent faire GNU/Linux mais aussi Windows, mais s'il y a virtualization au niveau processeur
- UserModeLinux