QEMU

De ClissXXI.

(Différences entre les versions)
m (Configuration précise)
(Liens)
Ligne 285 : Ligne 285 :
* [http://www.kidsquid.com/cgi-bin/moin.cgi/FrontPage Unofficial #qemu Wiki]
* [http://www.kidsquid.com/cgi-bin/moin.cgi/FrontPage Unofficial #qemu Wiki]
* [http://qemu-forum.ipi.fi/ The QEMU forum]
* [http://qemu-forum.ipi.fi/ The QEMU forum]
 +
* [http://www.gnome.org/~markmc/qemu-networking.html QEMU Networking]: panorama des différentes solutions de connexion réseau

Version du 4 février 2007 à 20:02

aptitude install qemu

Sommaire

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

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 propre 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" # ...

VNC

Exemple:

qemu -vnc :0 -k fr os.img

Pour y accéder:

vncviewer localhost

Très pratique pour passer une VM en tâche de fond.

Problème: la souris VNC et la souris système de sont pas synchro :/

Partage Samba avec l'hôte

qemu -smb /path os.img

ou plutôt, si vous êtes chez Debian:

sudo qemu -smb /path os.img

Purée, je vais encore râler contre les distros, mais QUEL BESOIN ONT CES FOUTUS PACKAGEURS de coder en dur secrets.tdb dans /var/lib/ alors que c'est sensé être configurable (option private dir)? Cf. debian/patch/fhs.patch. Du coup il n'est plus possible de lancer smbd sans être root, faute de droits >(


Dans la VM, au choix:

mount //10.0.2.4/qemu smb/
mount -t cifs //10.0.2.4/qemu smb/
smbclient //10.0.2.4/qemu

Optimisation PC->PC

qvm86 permettait d'avoir une émulation plus rapide mais le code n'a pas été touché depuis 2005-09-04 (qemu 0.7.2), et l'auteur encourage [2] 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. Apparemment [3] le patch s'applique sur la v0.8.0 mais ne contient que les changements sur qvm86, pas les changements correspondants sur qvm86 (notamment, il manque une mise à jour de patch.qvm86).

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 - et ne fournit certaines fonctionnalités que dans sa version propriétaire.

Compilation:

cvs -d:pserver:anonymous@cvs.sv.gnu.org:/sources/qemu co -D 2006-09-05 qemu
cd qemu/
cvs -d:pserver:anonymous@cvs.sv.gnu.org:/sources/qvm86 co qvm86
cat qvm86/patch.qvm86 | patch -p0
./configure --target-list=i386-softmmu --cc=gcc-3.3
make
# sudo make install
# cf. i386-softmmu/qemu et qvm86/qvm86.ko

Je ne sais pas trop comment tester l'efficacité du module. En tout cas c'est un excellent moyen de reproduire un BSOD W98 ;) (note: cet OS n'est pas sensé fonctionner avec un accélérateur de toute façon)

Désinstallation de la version binaire

tar tzf qemu-0.8.2-i386.tar.gz | (cd / && sudo xargs rm)

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 ([4][5]).

Configuration précise

Analyse de la configuration,

  • Depuis une image qemu qui fonctionne:
$ uname --machine
i686
$ cat /proc/cpuinfo
[...]
model name      : Pentium II (Klamath)
[...]
# Remarque: il y a une variante x86_64, avec qemu-system-x86_64
$ 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
Méthode
=======

Erreurs au chargement du noyau
File -> Search dans qconf


Essentiel
=========

Kernel support for ELF binaries (BINFMT_ELF)
# Disque-dur
# 0000:00:01.1 IDE interface: Intel Corp. 82371SB PIIX3 IDE [Natoma/Triton II]
ATA/ATAPI/MFM/RLL support (IDE)
Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support (BLK_DEV_IDE)
Include IDE/ATA-2 DISK support (BLK_DEV_IDEDISK)
#?PCI IDE chipset support (BLK_DEV_IDEPCI)
#?Generic PCI bus-master DMA support (BLK_DEV_IDEDMA_PCI)
#?Intel PIIXn chipsets support (BLK_DEV_PIIX)
#?? DMA?
Ext3 journalling file system support (EXT3_FS)


La suite
========

# Précision du type de processeur
Pentium-II/Celeron(pre-Coppermine) (MPENTIUMII)

# Systèmes de fichiers
Second extended fs support (EXT2_FS)
# /dev/shm
Virtual memory file system support (former shm fs) (TMPFS)
# /dev/log
Unix domain sockets (UNIX)

?
#Deadline I/O scheduler (IOSCHED_DEADLINE)
#Deadline (DEFAULT_DEADLINE)

# Floppy
Normal floppy disk support (BLK_DEV_FD)

# Lecteur CD-ROM
Include IDE/ATAPI CDROM support (BLK_DEV_IDECD)
# ^ À tester! ^
ISO 9660 CDROM file system support (ISO9660_FS)
Microsoft Joliet CDROM extensions (JOLIET)

# Network
# 0000:00:03.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8029(AS)
PCI support (PCI)

Networking support (NET)
TCP/IP networking (INET)
Packet socket (PACKET)

Network device support (NETDEVICES)
Ethernet (10 or 100Mbit) (NET_ETHERNET)
EISA, VLB, PCI and on board controllers (NET_PCI)
PCI NE2000 and clones support (see help) (NE2K_PCI)
# TODO: "Qemu can emulate several different models of network card. Valid values for type are ne2k_pci, ne2k_isa, rtl8139, smc91c111 and lance. Not all devices are supported on all targets." [6]


Misc
====

Kernel .config support (IKCONFIG)
Enable access to .config through /proc/config.gz (IKCONFIG_PROC)
CIFS support (advanced network filesystem for Samba, Window and other CIFS compliant servers) (CIFS)


Virtual FAT disk images
=======================
# ex: qemu debian.img -hdb fat:/tmp

VFAT (Windows-95) fs support (VFAT_FS)
Codepage 437 (United States, Canada) (NLS_CODEPAGE_437)
NLS ISO 8859-1 (Latin 1; Western European Languages) (NLS_ISO8859_1)
# Pas nécessaire pour fat:, mais indispensable pour monter de vraies
# partitions FAT françaises
# Codepage 850 (Europe) (NLS_CODEPAGE_850)


Carte graphique
===============

0000:00:02.0 VGA compatible controller: Cirrus Logic GD 5446


Supprimé pour l'instant
=======================

ACPI Support (ACPI)

The IPv6 protocol (IPV6)

?generic/default IDE chipset support (IDE_GENERIC)


Autre matériel
==============
0000:00:01.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI
?

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]
?

Liens

Outils personnels