Différences entre versions de « Émulation »

De Cliss XXI
Sauter à la navigation Sauter à la recherche
imported>SylvainBeucler
m
imported>SylvainBeucler
m
 
(30 versions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
But du jeu: tester des exécutables Debian-PPC avant de les installer chez l'usager - mais depuis mon PC.
+
Utilisations:
 +
* tester des exécutables Debian-PPC avant de les installer chez l'usager - mais depuis mon PC.
 +
* fournir des systèmes complets facilement installables (ex: une instance de Apache/PHP/MySQL/TikiWiki pré-installée)
 +
* tester rapidement les phases d'initialisation d'un PC (ex: configurations LILO/GRUB)
  
= QEMU =
+
Les émulateurs libres du moment:
 +
* [[QEMU]]: * -> (x86, x86_64, ARM, MIPS, PPC, ARM, SPARC) - lance une VM ou un exécutable
 +
* [http://www.virtualbox.org/ VirtualBox]: PC->PC (nécessiste module noyau de virtualisation); plusieurs [http://www.virtualbox.org/wiki/Editions versions], une libre et une propriétaire
 +
* [http://bochs.sourceforge.net/ Bochs]: * -> PC (lent?, 32/64bits)
 +
* [[PearPC]]: * -> PPC
 +
* [http://maconlinux.org/ Mac-on-Linux]: PPC->PPC
  
http://fabrice.bellard.free.fr/qemu
+
== Autres techniques ==
aptitude install qemu
 
  
Attention, le module qemu du même auteur pour aller plus vite est propriétaire - à éviter donc.
+
* [http://kvm.sf.net/ KVM] et [http://xensource.com/ Xen]: peuvent faire GNU/Linux (paravirtualisation) mais aussi Windows (s'il y a virtualization [http://en.wikipedia.org/wiki/X86_virtualization au niveau processeur])
 +
* [[UserModeLinux]]: un cas à part, fonctionnement autonome
  
== Compiler et tester un exécutable de test ==
+
== Perfs ==
  
Pour obtenir powerpc-linux-gcc: [[Compilation croisée]]
+
Disque:
 
+
* Physique:
  $ cat <<EOF > hello.c
+
$ sudo hdparm -tT /dev/sda
  #include <stdio.h>
+
 +
/dev/sda:
 +
  Timing cached reads:  1412 MB in  2.00 seconds = 706.25 MB/sec
 +
  Timing buffered disk reads:  72 MB in  3.01 seconds =  23.96 MB/sec
 +
* QEMU sur partition physique:
 +
$ qemu /dev/hda -kernel bzImage -append "root=/dev/hda7 clocksource=pit"
 +
qemu$ hdparm -tT /dev/hda
 +
 +
/dev/hda:
 +
  Timing cached reads:  636 MB in  2.00 seconds = 318.33 MB/sec
 +
  Timing buffered disk reads:  38 MB in  3.11 seconds =  12.22 MB/sec
 +
* QEMU sur partition physique + kqemu:
 +
/dev/hda:
 +
  Timing cached reads:  1840 MB in  2.00 seconds = 921.23 MB/sec
 +
  Timing buffered disk reads:  34 MB in  3.17 seconds =  10.73 MB/sec
 +
* QEMU sur image disque:
 +
  $ qemu debian.img -kernel-kqemu
 +
  qemu$ hdparm -tT /dev/hda
 
   
 
   
  int main(void) {
+
  /dev/hda:
  return ! printf("Hello world!\n");
+
  Timing cached reads:   1884 MB in 1.99 seconds = 946.45 MB/sec
}
+
  Timing buffered disk reads:   22 MB in 3.21 seconds =  6.86 MB/sec
EOF
+
* UML sur partition physique
$ powerpc-linux-gcc hello.c -Wall -ansi -pedantic -static
+
  [TODO]
$ qemu-ppc a.out
+
* UML sur image disque
Hello world!
+
  [TODO]
 
 
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 <code>/dev/net/tun</code>:
 
qemu-system-ppc -prep -localtime -kernel zImage.prep linux-ppc.img
 
 
 
À l'intérieur, vous pouvez [http://fabrice.bellard.free.fr/qemu/qemu-doc.html#SEC25]:
 
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
 
 
 
* [http://www.overselfresearch.com/kb/qemu.html 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 <code>install-powerpc-2.4 ramdisk_size=10000</code> au boot.
 
 
 
 
 
= PearPC =
 
 
 
http://pearpc.sourceforge.net/
 
  aptitude install pearpc
 
 
 
Créer un disque de 3GB [http://pearpc.sourceforge.net/idesetup.html]:
 
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 <code>/etc/ppc.conf</code>:
+
== Liens ==
pci_ide0_master_image = "myharddisk.img"
 
pci_ide0_slave_image = "debian-31r2-powerpc-netinst.iso"
 
  
Lancer l'émulateur:
+
* [http://en.wikipedia.org/wiki/Comparison_of_virtual_machines Comparison of virtual machines] sur Wikipédia
ppc
+
* [http://www.osdev.org/osfaq2/index.php/Disk%20Images%20Under%20Linux Disk Images Under Linux]: créer des images disques complètes avec table de partition, et comment les monter (mount -o loop,offset=32256)

Version actuelle datée du 25 février 2007 à 22:54

Utilisations:

  • tester des exécutables Debian-PPC avant de les installer chez l'usager - mais depuis mon PC.
  • fournir des systèmes complets facilement installables (ex: une instance de Apache/PHP/MySQL/TikiWiki pré-installée)
  • tester rapidement les phases d'initialisation d'un PC (ex: configurations LILO/GRUB)

Les émulateurs libres du moment:

  • QEMU: * -> (x86, x86_64, ARM, MIPS, PPC, ARM, SPARC) - lance une VM ou un exécutable
  • VirtualBox: PC->PC (nécessiste module noyau de virtualisation); plusieurs versions, une libre et une propriétaire
  • Bochs: * -> PC (lent?, 32/64bits)
  • PearPC: * -> PPC
  • Mac-on-Linux: PPC->PPC

Autres techniques

Perfs

Disque:

  • Physique:
$ sudo hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   1412 MB in  2.00 seconds = 706.25 MB/sec
 Timing buffered disk reads:   72 MB in  3.01 seconds =  23.96 MB/sec
  • QEMU sur partition physique:
$ qemu /dev/hda -kernel bzImage -append "root=/dev/hda7 clocksource=pit"
qemu$ hdparm -tT /dev/hda

/dev/hda:
 Timing cached reads:   636 MB in  2.00 seconds = 318.33 MB/sec
 Timing buffered disk reads:   38 MB in  3.11 seconds =  12.22 MB/sec
  • QEMU sur partition physique + kqemu:
/dev/hda:
 Timing cached reads:   1840 MB in  2.00 seconds = 921.23 MB/sec
 Timing buffered disk reads:   34 MB in  3.17 seconds =  10.73 MB/sec
  • QEMU sur image disque:
$ qemu debian.img -kernel-kqemu
qemu$ hdparm -tT /dev/hda

/dev/hda:
 Timing cached reads:   1884 MB in  1.99 seconds = 946.45 MB/sec
 Timing buffered disk reads:   22 MB in  3.21 seconds =   6.86 MB/sec
  • UML sur partition physique
[TODO]
  • UML sur image disque
[TODO]

Liens