Émulation

De Cliss XXI
Révision datée du 23 janvier 2007 à 08:12 par imported>SylvainBeucler
Sauter à la navigation Sauter à la recherche

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

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

make defconfig ARCH=i386
make xconfig
  • NE2K_PCI=Y (ns2000 PCI network ethernet card)
  • BLK_DEV_IDEFLOPPY=Y (floppy disk drive)
make
file arch/i386/boot/bzImage

PearPC

http://pearpc.sourceforge.net/

aptitude install pearpc

Créer un disque de 3GB [2]:

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