[AVANCE]Installation QEMU/KQEMU compilés sauce debian

Quelques compléments sur Qemu:

  1. Des paquets correspondants à la version 0.82 pour sarge/i386 peuvent être récupérer ici:
    http://boisson.homeip.net/sarge/qemu/
    Il y a le module accélérateur kqemu pour les noyaux de sarge, attention, kqemu n’est pas libre.

  2. Simuler un réseau n’est pas forcément simple avec qemu mais quand on a compris c’est très puissant et remarquable. On peut considérer qu’un réseau est égal à un switch sur lequel on se connecte. Le switch porte un numéro déclaré par vlan. Il y a 3 opérations fondamentales toutes ammenés par l’option -net:

-net nic crée une interface réseau: Exemple

-net nic,vlan=0,macaddr=52:54:00:12:34:78

crée une carte réseau connectée au switch 0 d’adresse MAC égal à 52:54:00:12:34:78. On peut même préciser le type de la carte (cf man qemu à l’option nic)

-net user connecte le réseau à une passerelle et un serveur DHCP, une adresse IP est attribuée à la carte sur le réseau 10.0.2.0/24 avec l’adresse d’une passerelle et un DNS. Il y a même un serveur samba (10.0.2.4 si ma mémoire est bonne). Exemple:

-net user,vlan=0

connecte le réseau 0 au serveur DHCP, cela veut dire que les cartes sur vlan 0 recevront une adresse IP.

Enfin
-net socket
permet de connecter un réseau d’une machine qemu à un autre réseau. Cela se fait en associant au réseau une adresse IP multicast avec un numéro de port (genre 230.0.0.1:1234 exemple souvent pris),
-net socket,vlan=1,mcast=230.0.0.1:1234
connecte le réseau 1 à une douille 230.0.0.1:1234 donc à tous les réseaux mis sur cette douille.

Un exemple pour illustrer tout cela: Une simulation de bonding entre deux machines debian, cela correspond au schéma suivant:

|                         eth1  ---------------------------- eth0
|  Internet - eth0 -A - |                                        | - B
|                         eth2  ---------------------------- eth1

est simulé comme suit: linux.img et linux2.img sont des images de debian sarge fonctionnelles.

[code]
Machine1:

qemu -hda ~/Emulation/linux2.img
-net nic,vlan=0,macaddr=52:54:00:12:34:78
-net nic,vlan=1,macaddr=52:54:00:12:34:79
-net nic,vlan=2,macaddr=52:54:00:12:34:77
-net user,vlan=0
-net socket,vlan=1,mcast=230.0.0.1:1234
-net socket,vlan=2,mcast=230.0.0.2:1234
-k fr[/code]
3 réseaux: 0 sur DHCP et Internet (eth0), 1 sur la douille 230.0.0.1:1234 (eth1) et 2 sur la douille 230.0.0.2:1234 (eth2).

Machine 2:

qemu -hda ~/Emulation/linux.img \
   -net nic,vlan=1,macaddr=52:54:00:12:34:99 \
   -net nic,vlan=2,macaddr=52:54:00:12:34:97 \
   -net socket,vlan=1,mcast=230.0.0.1:1234 \
   -net socket,vlan=2,mcast=230.0.0.2:1234 \
   -k fr

2 réseaux: 1 (eth0) sur la douille 230.0.0.1:1234 (qui sera donc connecté au réseau 1 de la machine précédente soit à eth1) et 2 (eth1) sur la douille 230.0.0.2:1234 et donc connecté au réseau 2 de la machine précédente (soit à eth2).

Cela permet de s’amuser avec le routage et de faire des expériences diverses, par exemple le bonding :slightly_smiling:

Voilà… qemu est vraiment extrèmement souple et très pratique d’emploi pour peu qu’on lise la doc.

Salut,

Voila je bloque un peut sur l’installation de Qemu lors du tous simple :

Voici la réponce:

Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
W: Impossible de localiser la liste des paquets sources http://security.debian.org stable/updates/contrib Packages (/var/lib/apt/lists/security.debian.org_dists_stable_updates_contrib_binary-i386_Packages) - stat (2 Aucun fichier ou répertoire de ce type)
W: Impossible de localiser la liste des paquets sources http://security.debian.org stable/updates/non-free Packages (/var/lib/apt/lists/security.debian.org_dists_stable_updates_non-free_binary-i386_Packages) - stat (2 Aucun fichier ou répertoire de ce type)
W: Impossible de localiser la liste des paquets sources http://ftp.fr.debian.org stable/main Packages (/var/lib/apt/lists/ftp.fr.debian.org_debian_dists_stable_main_binary-i386_Packages) - stat (2 Aucun fichier ou répertoire de ce type)
W: Impossible de localiser la liste des paquets sources http://ftp.fr.debian.org stable/contrib Packages (/var/lib/apt/lists/ftp.fr.debian.org_debian_dists_stable_contrib_binary-i386_Packages) - stat (2 Aucun fichier ou répertoire de ce type)
W: Impossible de localiser la liste des paquets sources http://ftp.fr.debian.org stable/non-free Packages (/var/lib/apt/lists/ftp.fr.debian.org_debian_dists_stable_non-free_binary-i386_Packages) - stat (2 Aucun fichier ou répertoire de ce type)
W: Impossible de localiser la liste des paquets sources http://wine.sourceforge.net binary/ Packages (/var/lib/apt/lists/wine.sourceforge.net_apt_binary_Packages) - stat (2 Aucun fichier ou répertoire de ce type)
W: Impossible de localiser la liste des paquets sources http://ftp.debian-unofficial.org sarge/main Packages (/var/lib/apt/lists/ftp.debian-unofficial.org_debian_dists_sarge_main_binary-i386_Packages) - stat (2 Aucun fichier ou répertoire de ce type)
W: Impossible de localiser la liste des paquets sources http://ftp.debian-unofficial.org sarge/contrib Packages (/var/lib/apt/lists/ftp.debian-unofficial.org_debian_dists_sarge_contrib_binary-i386_Packages) - stat (2 Aucun fichier ou répertoire de ce type)
W: Impossible de localiser la liste des paquets sources http://ftp.debian-unofficial.org sarge/non-free Packages (/var/lib/apt/lists/ftp.debian-unofficial.org_debian_dists_sarge_non-free_binary-i386_Packages) - stat (2 Aucun fichier ou répertoire de ce type)
W: Impossible de localiser la liste des paquets sources http://ftp.debian-unofficial.org sarge/restricted Packages (/var/lib/apt/lists/ftp.debian-unofficial.org_debian_dists_sarge_restricted_binary-i386_Packages) - stat (2 Aucun fichier ou répertoire de ce type)
W: Vous pouvez lancer « apt-get update » pour corriger ces problèmes.
E: Impossible de verrouiller /var/lib/apt/lists/security.debian.org_dists_stable_updates_main_source_Sources - open (2 Aucun fichier ou répertoire de ce type)

Faut’il a jouter des liens a mon sources.list ?

#deb file:///cdrom/ sarge main

#Stable
deb ftp://ftp.belnet.be/debian/ stable main
deb-src ftp://ftp.belnet.be/debian/ stable main

deb http://security.debian.org/ stable/updates main

deb http://security.debian.org stable/updates main contrib non-free

deb-src http://security.debian.org/ stable/updates main contrib non-free
deb http://ftp.fr.debian.org/debian stable main contrib non-free
deb-src http://ftp.fr.debian.org/debian stable main contrib non-free

# WINE
deb http://wine.sourceforge.net/apt/ binary/
deb-src http://wine.sourceforge.net/apt/ source/

# Package non officiel
deb http://ftp.debian-unofficial.org/debian sarge main contrib non-free restricted
deb-src http://ftp.debian-unofficial.org/debian sarge main contrib non-free restricted

Merci :slightly_smiling:

oui et non, il faut le corriger, il est tout pourri, il te manque la moitié des dépots stable, et tout les deb doivent avoir leurs pendants en deb-src. (en plus tu as des doublons).
forum.debian-fr.org/viewtopic.php?t=1810

lol j’adore cette expression :stuck_out_tongue:

Plus sérieusement, j’ai prit ton sources.list (la tartine), ben en fait j’ai le même problème. (je n’ai pas utilisé le fichier ‘préférences’)

Plus d’info sur ma config ?

quote="Ludo"Plus sérieusement, j’ai prit ton sources.list (la tartine), ben en fait j’ai le même problème. (je n’ai pas utilisé le fichier ‘préférences’)(…)[/quote]SURTOUT PAS ! à moins que tu ne veuilles passer direct en experimental (même pas en sid) lors du prochain upgrade, il te faut IMPERATIVEMENT les preferences qui vont avec.
Tu as bien pris cette tartine là ?
forum.debian-fr.org/viewtopic.ph … &start=124
pas celle qui est en tout début de fil et qui est totalement obsolète ?

[quote=“mattotop”]
pas celle qui est en tout début de fil et qui est totalement obsolète ?[/quote]
JOKER :stuck_out_tongue:


Voila je me suit refait un fichier source.list bien propre:

[code]### Debian stable ###
deb ftp://ftp.belnet.be/debian/ stable main
deb-src ftp://ftp.belnet.be/debian/ stable main

deb ftp://ftp.kulnet.kuleuven.ac.be/debian/ stable main
deb-src ftp://ftp.kulnet.kuleuven.ac.be/debian/ stable main

deb ftp://ftp2.fr.debian.org/debian/ stable main
deb-src ftp://ftp2.fr.debian.org/debian/ stable main

deb ftp://ftp.debian.skynet.be/debian/ stable main
deb-src ftp://ftp.debian.skynet.be/debian/ stable main

deb http://security.debian.org/ stable/updates main
[/code]

Et du coup cela marche, merci de tes conseils :slightly_smiling:

pas mieux: même si ça ne râle plus, c’est toujours tout pourri. :wink::

bon, sinon, j’ai remis le fil de Trucs et Astuces au propre, pour simplifier la recherche, si tu veux du carré, tu prendss le sources.list du premier post, avec les preferences fournies dans le deuxiême.

[quote=“mattotop”]pas mieux: même si ça ne râle plus, c’est toujours tout pourri. :wink::
[/quote]

ROFL

Le mirroire de l’université de Louvain

Il me semblais que en multipliant les source on avait de meilleurs rendement :slightly_smiling:

j’ai juste fait un apt-setup

[quote=“mattotop”]
bon, sinon, j’ai remis le fil de Trucs et Astuces au propre, pour simplifier la recherche, si tu veux du carré, tu prendss le sources.list du premier post, avec les preferences fournies dans le deuxiême.[/quote]

Ok merci j’avais vu je vais faire cela :slightly_smiling:

Pour en revenir a Kqemu/Qemu

Etonnament je bloque lors du ./configure de Kqemu, j’ai essayer de voir avec le fichier ./debian/rules mais je ne trouve même pas les lignes que tu décrit, et vu que je n’y pige que dalle je n’ose pas y toucher…Dommage car j’aimerais vraiments installer cette emulateur. (question à 2francs six sous, peut ont emuler en ligne de commande ? ou doit on passer par l’interface graphique obligatoirement ? )

quote="Ludo"
Il me semblais que en multipliant les source on avait de meilleurs rendement :slightly_smiling: (…)[/quote]Non, regardes bien: il prend tous les paquets au même endroit quoi qu’il arrive, donc les dépots en doublons ne font que ralentir l’update.

pour kqemu, c’est optionnel: c’est juste un accélèrateur. Mais si tu disais plus précisément ce qui bloque, et que je ne vois pas trop…

Sinon, si ta question est de savoir si ça tourne en console, oui: je viens de tester, et il râle parceque mon framebuffer n’est pas bien configuré, ce qui veut bien dire qu’on doit pouvoir aussi le faire tourner en console.

Voici ou cela pose problème: au moment du ./configure:

 ./configure
Could not find kernel includes in /lib/modules or /usr/src/linux - cannot build the kqemu module
Install prefix    /usr/local
BIOS directory    /usr/local/share/qemu
binary directory  /usr/local/bin
Manual directory  /usr/local/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path       /usr/src/qemu-0.6.1+20050407
C compiler        gcc
make              make
host CPU          i386
host big endian   no
target list       i386-user arm-user armeb-user sparc-user ppc-user i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu
gprof enabled     no
static build      no
SDL support       yes
SDL static link   yes
mingw32 support   no
Adlib support     no
FMOD support      no

Et voici ce que j’ai dans mon fichier ./debian/rules:

#!/usr/bin/make -f
# -*- mode: makefile; coding: utf-8 -*-

include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/rules/simple-patchsys.mk
include /usr/share/cdbs/1/class/autotools.mk

DEB_CONFIGURE_NORMAL_ARGS := --prefix=$(DEB_CONFIGURE_PREFIX) --enable-slirp

DEB_MAKE_INSTALL_TARGET := install prefix=$(DEB_DESTDIR)/usr \
                                   bindir=$(DEB_DESTDIR)/usr/bin \
                                   datadir=$(DEB_DESTDIR)/usr/share/qemu \
                                   sharedir=$(DEB_DESTDIR)/usr/share/qemu \
                                   mandir=$(DEB_DESTDIR)/usr/share/man \
                                   docdir=$(DEB_DESTDIR)/usr/share/doc/qemu

common-install-prehook-arch::
        ( cd $(CURDIR)/pc-bios/; \
          uudecode $(CURDIR)/debian/roms/*.uu )
        gunzip $(CURDIR)/pc-bios/*.bin.gz
        gunzip $(CURDIR)/pc-bios/*.elf.gz

common-binary-post-install-arch::
        chmod a+x $(DEB_DESTDIR)/etc/qemu-ifup

clean::
        rm -f qemu-doc.html qemu.1
        rm -f $(filter-out pc-bios/linux_boot.bin,$(wildcard pc-bios/*.bin))
        rm -f pc-bios/*.elf pc-bios/*.tar.gz

j’ai pourtant suivis point par point le déroulement des opération, mais comme tu le dit dans le tuto c’est un des seul endroit ou cela peut variez en fonction des configuration personnel :slightly_smiling:

Il te faut installer les hearders de ton noyau ou bien les sources configurés.

Tu trouveras des sources opérationnels chez moi (http://boisson.homeip.net/source/) pour qemu et le module kqemu), ce sont les dernières versions)

install des headers:
sarge: apt-get install kernel-headers-uname -r
autres: apt-get install linux-headers-uname -r
ça doit suffire.

Petites questions réseau :

Objectif : je veux tester un serveur LTSP et un client pour LTSP avec qemu.

1/ dans qemu, avec -net user, j’obtiens sur une image debian l’ip 10.0.0.2 (je crois). J’ai cru comprendre que cette ip est fournie par un serveur dhcp de qemu. Du coup, si je copie mon image et que je lance les 2 images, j’aurais une image en 10.0.0.2 et une en 10.0.0.3 (par exemple) ?

2/ du coup, qemu simule-t’il une sorte de réseau local fictif entre toutes les images lancées ?

3/ peut-on spécifier une ip fixe sur une image ? (pour y installer un serveur dhcp par exemple)

4/ comment réaliser un boot réseau (en bootant sur une iso de rom-o-matic) dans un “réseau qemu” (cf point 2/)

J’ai répondu à une bonne partie de ces questions dans ce fil, relis le.

J’avais lu il y a plusieurs jours ton post en effet, mais je n’avais rien pigé… c’est vrai qu’en le relisant maintenant ça répond aux point 1/ e 2/ (je devais être fatigué l’autre jour)

Par contre, je ne vois pas de réponse pour les points 3/ et 4/. J’ai peut être loupé un truc…

C’est bien parce que ça n’est pas immédiat que j’ai fait ce résumé:

Pour le 3, tu fais la chose suivante:

qemu -hda ~/Emulation/linux1.img \ -net nic,vlan=0,macaddr=52:54:00:13:34:78 \ -net socket,vlan=0,mcast=230.0.0.1:1234 \ -k fr

qui te met une machine sur un réseau 0. Tu met une serveur DHCP sur cette machine. Puis pour les autres machines, il suffit de faire

qemu -hda ton_image.img \ -net nic,vlan=0,macaddr=52:54:00:12:34:?? \ -net socket,vlan=0,mcast=230.0.0.1:1234 \ -k fr
avec ?? comme tu veux entre 00 et FF
Théoriquement, ton serveur devrait distribuer des IP.

Par contre, je n’ai pas l’impression que qemu puisse bouter sur réseau…

j’ai un doute : la manip que tu proposes nécessite d’être root (ou d’en avoir les droits) non ?

pour le boot réseau, ça me dégouterais bien qu’on ne puisse pas y arriver :confused:

question subsidiaire : 52:54:00:12:34 : c’est obligatoire (hormis le dernier xx) où il faut juste spécifier une adresse mac par rapport au type de driver réseau que l’on souhaite utiliser ?

Absolument pas, j’ai fait ça en utilisateur local. Tu es root sur tes machines emulée c’est tout…

Pour l’adresse MAC, tu prends celle que tu veux, elle doivent être différente d’une machine à une autre d’où la nécessité de les spécifier…

pour le réseau local, c’est pigé, mais je n’arrive pas à accéder à internet…

La machine virtuelle est hébergée sur un serveur qui partage internet via NAT. Pas de serveur dhcp configuré (sur le serveur).

Une idée ?

qemu -hda ./debian.vm1.img \ -net nic,vlan=0,macaddr=52:54:00:13:34:00 \ -net user,vlan=0 -net nic,vlan=1,macaddr=52:54:00:13:34:01 \ -net socket,vlan=1,mcast=230.0.0.1:1234 \ -k fr

une adresse ip est attribuée (10.0.0.15), mais je n’arrive pas à voir internet :confused: