Différences entre versions de « Émulation »
imported>SylvainBeucler |
imported>SylvainBeucler |
||
Ligne 73 : | Ligne 73 : | ||
qemu -hda debian.img -kernel bzImage -append "root=/dev/hda" # ... | qemu -hda debian.img -kernel bzImage -append "root=/dev/hda" # ... | ||
+ | |||
+ | === x86->x86 optimization === | ||
+ | |||
+ | [http://savannah.nongnu.org/projects/qvm86 qvm86] permettait d'avoir une émulation plus rapide mais le code n'a pas été touché depuis 2005-09-04 (qemu 0.7.1), le code ne compile plus de toute façon (probablement des changements dans gcc) et l'auteur encourage de passer à VirtualBox à la place. Il y a un [http://lists.gnu.org/archive/html/qvm86-devel/2006-02/msg00000.html patch] plus récent mais je n'arrive pas à savoir sur quelle version de qemu il fonctionne. | ||
+ | |||
+ | Remarque: l'équivalent propriétaire de qvm86 ne donne pas nécessairement de bons résultats de toute façon. Win98 fonctionne mieux sans, par exemple. Ce n'est donc pas indispensable. VirtualBox en revanche ne fonctionne apparement pas sans le module noyau. | ||
=== QEMU-compatible kernel === | === QEMU-compatible kernel === |
Version du 27 janvier 2007 à 21:05
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é)? Piste: l'archive gnemul avec quelques bib systèmes.
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" # ...
x86->x86 optimization
qvm86 permettait d'avoir une émulation plus rapide mais le code n'a pas été touché depuis 2005-09-04 (qemu 0.7.1), le code ne compile plus de toute façon (probablement des changements dans gcc) et l'auteur encourage de passer à VirtualBox à la place. Il y a un patch plus récent mais je n'arrive pas à savoir sur quelle version de qemu il fonctionne.
Remarque: l'équivalent propriétaire de qvm86 ne donne pas nécessairement de bons résultats de toute façon. Win98 fonctionne mieux sans, par exemple. Ce n'est donc pas indispensable. VirtualBox en revanche ne fonctionne apparement pas sans le module noyau.
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