Différences entre les pages « Hébergement Mutualisé » et « UserModeLinux »

De Cliss XXI
(Différence entre les pages)
Sauter à la navigation Sauter à la recherche
imported>SylvainBeucler
m
 
imported>SylvainBeucler
 
Ligne 1 : Ligne 1 :
== Considérations générales ==
+
== Compilation du noyau utilisateur ==
  
Les logiciels cités ci-dessous sont dits de "mass-hosting", pour l'hébergement de plusieurs centaines de sites. Leur mise en place et leur maniement prend beaucoup de temps.
+
C'est très simple: on compile le noyau Linux avec le paramètre <code>ARCH=um</code> ''pour chaque commande''.
  
== Logiciels ==
+
wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.13.tar.bz2
 +
tar xjf linux-2.6.17.13.tar.bz2
 +
cd linux-2.6.17.13
  
=== VHFFS ===
+
make defconfig ARCH=um
 +
make xconfig ARCH=um # facultatif; pensez à activer HOSTFS si besoin
 +
make ARCH=um
 +
strip linux
 +
make modules_install ARCH=um INSTALL_MOD_PATH=uml-modules/
  
(étude 9/2005, màj 2/2006)
+
Cf. [http://user-mode-linux.sourceforge.net/new/source.html Building from source] chez UML.
  
* utilisé par [http://ouvaton.coop Ouvaton], [http://lost-oasis.fr Lost-Oasis] et [http://tuxfamily.org Tuxfamily].
+
Des options que j'active:
* http://vhffs.org/
+
* MAGIC_SYSRQ: active l'équivalent de Alt+ImprÉcr, utilisable depuis uml_mconsole
* Documentation existante. Des [http://packages.vhffs.org paquets Debian] pour des patches ou backports; répertoire [http://svn.naquadah.org/listing.php?repname=vhffs&path=%2Ftrunk%2Fdebian%2F&rev=0&sc=0 debian/] existant mais pas de .deb à télécharger.
+
* HOST_2G_2G: contourne un problème de certains noyaux hôte (cf. plus bas)
* Développement régulier au cours des 2 derniers mois (min 1 [http://svn.naquadah.org/log.php?repname=vhffs&path=&rev=0&sc=0&isdir=1 commit]/semaine), version courante en RC.
+
* HOSTFS: possibilité de monter des répertoires de la machine hôte - attention à la sécurité)
 +
* STATIC_LINK: compiler le noyau en statique (pas de dépendance sur des bibliothèques partagées .so)
  
=== AlternC ===
+
Il y a également des patches à essayer [http://www.user-mode-linux.org/~blaisorblade/patches/]:
 +
* hôte/host:
 +
** skas3 - meilleures performances (dossier skas3-2.6)
 +
* invité/guest:
 +
** exec support: permet de lancer des commandes shell avec uml_mconsole (ex: [http://www.user-mode-linux.org/~blaisorblade/patches/guest/uml-2.6.18.1-bb2/broken-out/uml-mconsole-exec.diff])
  
(étude 9/2005)
+
== Construction du système de base ==
  
* utilisé entre autres sur [http://lautre.net L'autre Net], Eitic, Koumbit, Metaconsult
+
On se propose de construire et de lancer un système UML sans aucun accès root.
* http://www.alternc.org/
 
* Paquets pour Debian sarge (et non plus woody comme récemment) - mais la procédure d'installation n'est pas exempte de bugs (à vérifier, 0.9.3.1 sortie le 2006-01-19 doit régler des problèmes de "packaging").
 
* Développement apparemment peu intensif; dernier commit récent
 
  
Liens:
+
Vraisemblablement, ce n'est pas possible facilement. Cela est dû au manque d'outil en mode utilisateur pour travailler directement sur des systèmes de fichiers ext3.
* [[Installation AlternC]]
 
* [http://clx.anet.fr/spip/article.php3?id_article=201 Page chez CLX]
 
  
=== VHCS ===
+
=== Tentative 1 ===
  
* Virtual Hosting Control System
+
Essayons de créer un système complet, sans faire d'image, et en possédant tous les fichiers:
* http://vhcs.net/
 
* Licence: MPL 1.1
 
* Étude: 2009, dernière release: 4/2009
 
* TODO
 
  
=== GHS ===
+
La dernière version de debootstrap propose une variante ''fakechroot'' qui permet de l'utiliser sans accès root:
 +
export PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH # pour trouver la commande 'chroot'
 +
fakechroot /usr/sbin/debootstrap --variant=fakechroot sarge sarge-uml/ http://localhost/mirrors/debian
 +
/usr/src/linux-2.6.17.13/linux  root=/dev/root rootflags=/home/sylvain/tests/uml/debian/sarge-uml/ rootfstype=hostfs
  
Utilisé par l'[http://www.apinc.org Apinc]. Le projet est, d'après les admins contactés par courriel, plus ou moins en friche. Il y a un projet de refonte du système - ce qui me paraît moins utile que de contribuer aux autres projets. On peut trouver une version de juin 2003 sur ftp://ftp.apinc.org/ghs5/, et une autre de février 2003 sur ftp://ftp.apinc.org/ghs/ - je n'ai pas regardé mais ça peut être intéressant d'étudier :)
+
Résultat: cela ne fonctionne pas, à mon avis parce que dans ce cas précis sarge-uml/dev est un lien symbolique vers /dev.
  
=== OVHm ===
+
=== Tentative 2 ===
  
* http://opensource.ovh.net
+
Essayons à partir d'une image UML déjà opérationnelle. Le principe est de monter le système de fichier hôte avec ''hostfs'', puis de faire un <code>mount -o loop</code> depuis le UML sur l'image disque à bootstrap-per. Cela permet de monter l'image sans avoir de privilèges super-utilisateur.
* Dernier commit récent (http://opensource.ovh.net/download/)
 
* De la documentation sur
 
* http://guides.ovh.com/InstallSite/
 
* http://guides.ovh.com/OvhmSousDomaine/
 
  
Il s'agit d'un module Webmin.
+
mount none host/ -t hostfs -o /home/sylvain/tests/uml/debian
 +
cd host/
 +
mkdir loop/
 +
mount image -o loop loop/
 +
ls loop/ # -> bin  boot  dev  etc  ...
  
''Ne pas confondre'' OVHm avec l'API SOAP de leur manager, qui lui est propriétaire. Ni par conséquent avec leur client lourd (Qt) nommé MoM qui fait usage de cette API.
+
[http://packages.debian.org/unstable/utils/rootstrap rootstrap] fonctionne apparemment sur ce principe.
http://guides.ovh.com/ManagerV3/
+
Je n'ai pas réussi mais je n'ai pas beaucoup cherché.
  
OVHm permet à l'administration du serveur de générer des sites. Chaque site comprend:
+
=== En mode root ===
* un compte Unix, avec accès SSH
 
* un espace FTP
 
* une base MySQL gérée via phpmyadmin
 
* un domaine géré par QMail (non-libre), avec webmail associé; le compte principal est postmaster.
 
  
Noter qu'il ne s'agit pas de l'interface OVH habituelle, mais d'une solution qu'OVH a développé pour ses clients (par pour eux). Noter enfin que cette solution s'intégre plus facilement dans leur offre à base de RedHat 7.2 qu'ils maintiennent avec des solutions in-house.
+
Faute de mieux, utilisons sudo:
  
Mis à part l'aspect libre, cela correspond à peu près à ce que l'on cherche au niveau délégation. Manquent peut-être la possibilité de changer les mots de passe généré, et de créer plusieurs comptes admins indépendant pour un site. Le logiciel devrait être correctement testé et fonctionner sans heurt.
+
mkdir loop/
 +
# image de 1Go, à trous (espace disque progressif)
 +
dd if=/dev/null of=image count=0 bs=1G seek=1
 +
# on formatte en ext3
 +
/sbin/mkfs.ext3 -F image
 +
 +
sudo mount image loop/ -o loop
 +
sudo debootstrap sarge loop/ http://192.168.1.60/mirrors/debian
 +
 +
# configuration de la console:
 +
sudo grep -v tty loop/etc/inittab > inittab.work
 +
sudo echo "1:2345:respawn:/sbin/getty 38400 console linux" >> inittab.work
 +
sudo mv inittab.work loop/etc/inittab
 +
 +
# configuration réseau:
 +
cat <<'EOF' > interfaces.work
 +
auto lo
 +
iface lo inet loopback
 +
EOF
 +
sudo mv interfaces.work loop/etc/network/interfaces
 +
 +
# fake mtab and fstab
 +
cat <<'EOF' > fstab.work
 +
proc            /proc          proc    defaults        0 0
 +
/dev/ubda      /              auto    defaults,errors=remount-ro 0 1
 +
EOF
 +
sudo mv fstab.work loop/etc/fstab
 +
 +
sudo umount loop/
  
Le fait de ne pas être a priori fait pour la Debian, ainsi que de se baser sur leur solution qui me semble finalement limitée, me semblent de bons arguments pour éliminer cette solution.
+
=== Optimiser la taille de l'image pour la distribuer ===
  
=== Autres ===
+
Une image UML contient souvent des zones vides, où il n'y a pas encore de fichiers.
  
D'autres produits de "hosting management software" existent, mais aucun autre à ma connaissance n'est libre et fonctionne sous GNU-Linux.
+
L'image ci-dessus réserve 1Go mais n'en occupe que 230Mo grâce à la création d'image "à trous" (''sparse'' en anglais).
 +
 
 +
$ ls -lh image
 +
-rw-r--r--  1 sylvain sylvain 1,0G 2006-09-18 15:55 image
 +
$ du -sh image
 +
234M    image
 +
 
 +
D'autres méthodes (dd sur /dev/zero par exemple) n'en tiennent pas compte.
 +
 
 +
<code>df -h</code> dans UML indique une utilisation de 178Mo, donc on doit pouvoir encore améliorer (comment?). Éviter <code>e2defrag</code>, qui est obsolète et corrompt les systèmes de fichier. Piste: copier les fichiers dans une nouvelle image et supprimer l'ancienne - défragmentation à la volée.
 +
 
 +
 
 +
Pour optimiser une image "pleine":
 +
cp --sparse=always image image.sparse
 +
 
 +
Pour envoyer une image par le réseau en respectant les trous:
 +
tar cSf image.tar image # S pour "sparse"
 +
 
 +
== Réseau ==
 +
 
 +
Imaginez un câble virtuel qui relie la machine hôte et la machine UML, une carte carte réseau virtuelle à chaque bout. Chaque carte a une adresse IP, mais comme sur un réseau classique, les deux cartes ne doivent pas avoir la même adresse.
 +
 
 +
=== Mode root avec tuntap ===
 +
 
 +
host# sudo /usr/src/linux ubda=sarge-debootstrap eth0=tuntap,,,192.168.1.101
 +
 
 +
Notez les messages d'UML indiquant la mise en place d'une interface tuntap <code>tap0</code>, une route pour accéder à la machine virtuelle, et un partage de connexion pour que la machine virtuelle puisse accéder au réseau extérieur.
 +
 
 +
Puis dans UML:
 +
 
 +
uml# ifconfig eth0 192.168.1.201
 +
 +
=== Mode semi-root avec tuntap ===
 +
 
 +
Pour utiliser tuntap, il faut créer à l'avance (et en mode root) une interface tap0 et lui assigner une adresse IP.
 +
 
 +
# tunctl -u sylvain
 +
Set 'tap0' persistent and owned by uid 1000
 +
 
 +
Puis il faut donner des droits aux utilisateurs non-privilégiés d'utiliser tuntap (en mode root aussi):
 +
 
 +
chmod 666 /dev/net/tun
 +
 
 +
C'est une solution efficace mais qui nécessite plusieurs étapes de préconfiguration en mode root, accompagné de permissions lâches sur tuntap.
 +
 
 +
 
 +
=== Mode semi-root avec tuntap (2) ===
 +
 
 +
Mettre l'utilisateur concerné dans le groupe <code>uml-net</code>. Ce groupe a accès au programme setuid <code>/usr/lib/uml/uml_net</code>, qui peut lancer et configurer des interfaces tuntap. La sécurité du procédé n'est pas grande (l'utilisateur peut créer de nouvelles interfaces réseau et perturber iptables par exemple), mais est facile à mettre en place.
 +
 
 +
host# /usr/src/linux ubda=sarge-debootstrap umid=deb eth0=tuntap,,,10.10.10.10
 +
uml# ifconfig eth0 10.10.10.11
 +
uml# route add default gw 10.10.10.10
 +
 
 +
Note: la configuration automatique côté hôte nécessite [http://packages.debian.org/unstable/otherosfs/uml-utilities uml_net] (partage de connexion, route vers la machine UML...).
 +
 
 +
=== Mode utilisateur avec slirp ===
 +
 
 +
Lancer UML avec une interface slirp, en utilisant le binaire 'fullbolt' (qui s'affranchit de la limitation débit de 10ko/s dans slirp 'classique'):
 +
 
 +
host# /usr/src/linux ubda=sarge-debootstrap umid=deb eth0=slirp,,/usr/bin/slirp-fullbolt
 +
 
 +
Dans UML, quelques étapes spécifiques à slirp sont nécessaires:
 +
 
 +
# Configurer l'interface sur 10.2.0.15 (IP de choix pour slirp)
 +
ifconfig eth0 10.2.0.15
 +
# Utiliser la redirection DNS 10.0.2.3
 +
echo "nameserver 10.0.2.3" > /etc/resolv.conf
 +
# Ajouter une route par défaut vers eth0:
 +
route add default dev eth0
 +
 
 +
Note: <code>ping</code> ne fonctionne pas, car il nécessite un accès root (sur l'hôte, ping est d'ailleurs souvent setuid).
 +
 
 +
=== /etc/network/interfaces ===
 +
 
 +
Voici comment configurer automatiquement le réseau au démarrage d'UML, dans son fichier <code>interfaces</code>:
 +
 
 +
auto lo
 +
iface lo inet loopback
 +
 +
auto eth0
 +
iface eth0 inet static
 +
 +
# eth0=tuntap,,,10.10.10.1
 +
#  address 10.10.10.10
 +
#  netmask 255.0.0.0
 +
#  gateway 10.10.10.1
 +
 +
# eth0=slirp,,/usr/bin/slirp-fullbolt
 +
  address 10.2.0.15
 +
  netmask 255.0.0.0
 +
  dns-nameservers 10.0.2.3
 +
  up route add default eth0
 +
 
 +
(dns-nameservers nécessite le paquet ''resolvconf'')
 +
 
 +
Autre solution pour gérer automatiquement les DNS: installez un serveur DNS dans l'UML, et évitez ainsi de vous faire suer à déterminer ceux de l'hôte. In-dé-pen-dan-ce ;) À moins que vous n'ayez besoin du serveur DNS de votre réseau interne.
 +
 
 +
== Lancer un UML en tâche fond ==
 +
 
 +
./linux ubda=... con=null &
 +
 
 +
 
 +
== Versions ==
 +
 
 +
La version officielle est vraisemblablement celle intégrée au noyau kernel.org.
 +
Aucune version de développement n'est vraisemblablement accessible.
 +
La version kernel.org ne compile pas nécessairement (eg. 2.6.19.2).
 +
Jeff Dyke publie de temps à autre un combo précompilé noyau + image FC5 sur la page d'accueil du site.
 +
 
 +
=== Patches ===
 +
 
 +
Cf. http://www.user-mode-linux.org/~blaisorblade/
 +
 
 +
Clarifions un peu:
 +
* skas3+sysemu: patch pour le noyau hôte pour gagner en rapidité,
 +
* -bb: patch pour le noyau invité, fonctionnalités supplémentaires en test. À utiliser en bloc, ou en choissant une fonctionnalité en particulier parmi un jeu de patches séparés (''splitout''/''broken-out''). Il y a un jeu de patches correspondants pour les uml-utilities.
 +
 
 +
C'est un peu confus sur le site, mais c'est tout.
 +
 
 +
== Liens ==
 +
 
 +
* [http://user-mode-linux.sourceforge.net/new/ The User-mode Linux Kernel Home Page]: lien direct vers la nouvelle version du site - on s'y retrouve mieux
 +
* [http://eggdrop.ch/texts/uml/ Running Debian inside of Debian with User-Mode Linux]
 +
* [http://www.metz.supelec.fr/metz/personnel/galtier/PagesPerso/TutorielUML/index.html Tutoriel User Mode Linux]: avec introduction à SKAS et réseau
 +
* [http://user-mode-linux.sourceforge.net/UserModeLinux-HOWTO-6.html#ss6.11 Slirp] dans le UML HOWTO.
 +
* [http://www.phptr.com/bookstore/product.asp?isbn=0131865056&rl=1 Livre] [http://www.eyrolles.com/Informatique/Livre/9780131865051/livre-user-mode-linux.php officiel]: écrit par l'auteur, ce livre est sous licence 'Open Publication' et n'en utilise visiblement aucune des options non-libres. C'est donc un livre libre que l'on peut recommander d'acheter :) La page de présentation indique que les livres de la série "Bruce Perens' Open Source" sont tous sous cette licence et sont publiés au format électronique au bout de 6 mois. J'ai personnellement récupéré un exemplaire au format .chm mais je ne connais pas son origine. J'en dirai plus sur le contenu quand je l'aurai parcouru ;)
 +
* [http://testape.com/webtty_sample.php WebTTY]: lancez une instance UML sur le serveur distant et tapez du Bash intéractivement dans un navigateur web :)
 +
* [[Émulation]] sur doc.cliss21.com
 +
* Réseau virtuel
 +
** [http://jungla.dit.upm.es/~vnuml/ VNUML]: Virtual Network User Mode Linux, simulation de réseaux complexes
 +
** [http://www.strongswan.org/uml/index.htm strongSwan - UML testing]: tests d'une solution VPN avec un réseau virtuel d'UML.
 +
** [http://www.freeswan.org/freeswan_snaps/CURRENT-SNAP/doc/umltesting.html FreeS/WAN User-Mode-Linux Testing guide]: même chose chez la concurrence
 +
** [http://www.samag.com/documents/s=8997/sam0401a/0401a.htm Emulating Networks Using User-Mode Linux]
 +
 
 +
== Dépannage ==
 +
 
 +
Kernel panic - not syncing: start_userspace : expected SIGSTOP, got status = 256
 +
 
 +
Cf. http://www.mail-archive.com/user-mode-linux-devel@lists.sourceforge.net/msg03414.html
 +
 
 +
Votre noyau (hôte) est, si j'ai bien compris, mal configuré. Recompilez-le ou utilisez-en un autre.
 +
 
 +
Vous pouvez également activer CONFIG_HOST_2G_2G dans la configuration du noyau UM.

Version du 30 janvier 2007 à 20:06

Compilation du noyau utilisateur

C'est très simple: on compile le noyau Linux avec le paramètre ARCH=um pour chaque commande.

wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.13.tar.bz2
tar xjf linux-2.6.17.13.tar.bz2
cd linux-2.6.17.13
make defconfig ARCH=um
make xconfig ARCH=um # facultatif; pensez à activer HOSTFS si besoin
make ARCH=um
strip linux
make modules_install ARCH=um INSTALL_MOD_PATH=uml-modules/

Cf. Building from source chez UML.

Des options que j'active:

  • MAGIC_SYSRQ: active l'équivalent de Alt+ImprÉcr, utilisable depuis uml_mconsole
  • HOST_2G_2G: contourne un problème de certains noyaux hôte (cf. plus bas)
  • HOSTFS: possibilité de monter des répertoires de la machine hôte - attention à la sécurité)
  • STATIC_LINK: compiler le noyau en statique (pas de dépendance sur des bibliothèques partagées .so)

Il y a également des patches à essayer [1]:

  • hôte/host:
    • skas3 - meilleures performances (dossier skas3-2.6)
  • invité/guest:
    • exec support: permet de lancer des commandes shell avec uml_mconsole (ex: [2])

Construction du système de base

On se propose de construire et de lancer un système UML sans aucun accès root.

Vraisemblablement, ce n'est pas possible facilement. Cela est dû au manque d'outil en mode utilisateur pour travailler directement sur des systèmes de fichiers ext3.

Tentative 1

Essayons de créer un système complet, sans faire d'image, et en possédant tous les fichiers:

La dernière version de debootstrap propose une variante fakechroot qui permet de l'utiliser sans accès root:

export PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH # pour trouver la commande 'chroot'
fakechroot /usr/sbin/debootstrap --variant=fakechroot sarge sarge-uml/ http://localhost/mirrors/debian
/usr/src/linux-2.6.17.13/linux  root=/dev/root rootflags=/home/sylvain/tests/uml/debian/sarge-uml/ rootfstype=hostfs

Résultat: cela ne fonctionne pas, à mon avis parce que dans ce cas précis sarge-uml/dev est un lien symbolique vers /dev.

Tentative 2

Essayons à partir d'une image UML déjà opérationnelle. Le principe est de monter le système de fichier hôte avec hostfs, puis de faire un mount -o loop depuis le UML sur l'image disque à bootstrap-per. Cela permet de monter l'image sans avoir de privilèges super-utilisateur.

mount none host/ -t hostfs -o /home/sylvain/tests/uml/debian
cd host/
mkdir loop/
mount image -o loop loop/
ls loop/ # -> bin  boot  dev  etc  ...

rootstrap fonctionne apparemment sur ce principe. Je n'ai pas réussi mais je n'ai pas beaucoup cherché.

En mode root

Faute de mieux, utilisons sudo:

mkdir loop/
# image de 1Go, à trous (espace disque progressif)
dd if=/dev/null of=image count=0 bs=1G seek=1
# on formatte en ext3
/sbin/mkfs.ext3 -F image

sudo mount image loop/ -o loop
sudo debootstrap sarge loop/ http://192.168.1.60/mirrors/debian

# configuration de la console:
sudo grep -v tty loop/etc/inittab > inittab.work
sudo echo "1:2345:respawn:/sbin/getty 38400 console linux" >> inittab.work
sudo mv inittab.work loop/etc/inittab

# configuration réseau:
cat <<'EOF' > interfaces.work
auto lo
iface lo inet loopback
EOF
sudo mv interfaces.work loop/etc/network/interfaces

# fake mtab and fstab
cat <<'EOF' > fstab.work
proc            /proc           proc    defaults        0 0
/dev/ubda       /               auto    defaults,errors=remount-ro 0 1
EOF
sudo mv fstab.work loop/etc/fstab 

sudo umount loop/

Optimiser la taille de l'image pour la distribuer

Une image UML contient souvent des zones vides, où il n'y a pas encore de fichiers.

L'image ci-dessus réserve 1Go mais n'en occupe que 230Mo grâce à la création d'image "à trous" (sparse en anglais).

$ ls -lh image
-rw-r--r--  1 sylvain sylvain 1,0G 2006-09-18 15:55 image
$ du -sh image
234M    image

D'autres méthodes (dd sur /dev/zero par exemple) n'en tiennent pas compte.

df -h dans UML indique une utilisation de 178Mo, donc on doit pouvoir encore améliorer (comment?). Éviter e2defrag, qui est obsolète et corrompt les systèmes de fichier. Piste: copier les fichiers dans une nouvelle image et supprimer l'ancienne - défragmentation à la volée.


Pour optimiser une image "pleine":

cp --sparse=always image image.sparse

Pour envoyer une image par le réseau en respectant les trous:

tar cSf image.tar image # S pour "sparse"

Réseau

Imaginez un câble virtuel qui relie la machine hôte et la machine UML, une carte carte réseau virtuelle à chaque bout. Chaque carte a une adresse IP, mais comme sur un réseau classique, les deux cartes ne doivent pas avoir la même adresse.

Mode root avec tuntap

host# sudo /usr/src/linux ubda=sarge-debootstrap eth0=tuntap,,,192.168.1.101

Notez les messages d'UML indiquant la mise en place d'une interface tuntap tap0, une route pour accéder à la machine virtuelle, et un partage de connexion pour que la machine virtuelle puisse accéder au réseau extérieur.

Puis dans UML:

uml# ifconfig eth0 192.168.1.201

Mode semi-root avec tuntap

Pour utiliser tuntap, il faut créer à l'avance (et en mode root) une interface tap0 et lui assigner une adresse IP.

# tunctl -u sylvain
Set 'tap0' persistent and owned by uid 1000

Puis il faut donner des droits aux utilisateurs non-privilégiés d'utiliser tuntap (en mode root aussi):

chmod 666 /dev/net/tun

C'est une solution efficace mais qui nécessite plusieurs étapes de préconfiguration en mode root, accompagné de permissions lâches sur tuntap.


Mode semi-root avec tuntap (2)

Mettre l'utilisateur concerné dans le groupe uml-net. Ce groupe a accès au programme setuid /usr/lib/uml/uml_net, qui peut lancer et configurer des interfaces tuntap. La sécurité du procédé n'est pas grande (l'utilisateur peut créer de nouvelles interfaces réseau et perturber iptables par exemple), mais est facile à mettre en place.

host# /usr/src/linux ubda=sarge-debootstrap umid=deb eth0=tuntap,,,10.10.10.10
uml# ifconfig eth0 10.10.10.11
uml# route add default gw 10.10.10.10

Note: la configuration automatique côté hôte nécessite uml_net (partage de connexion, route vers la machine UML...).

Mode utilisateur avec slirp

Lancer UML avec une interface slirp, en utilisant le binaire 'fullbolt' (qui s'affranchit de la limitation débit de 10ko/s dans slirp 'classique'):

host# /usr/src/linux ubda=sarge-debootstrap umid=deb eth0=slirp,,/usr/bin/slirp-fullbolt

Dans UML, quelques étapes spécifiques à slirp sont nécessaires:

# Configurer l'interface sur 10.2.0.15 (IP de choix pour slirp)
ifconfig eth0 10.2.0.15
# Utiliser la redirection DNS 10.0.2.3
echo "nameserver 10.0.2.3" > /etc/resolv.conf
# Ajouter une route par défaut vers eth0:
route add default dev eth0

Note: ping ne fonctionne pas, car il nécessite un accès root (sur l'hôte, ping est d'ailleurs souvent setuid).

/etc/network/interfaces

Voici comment configurer automatiquement le réseau au démarrage d'UML, dans son fichier interfaces:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static

# eth0=tuntap,,,10.10.10.1
#  address 10.10.10.10
#  netmask 255.0.0.0
#  gateway 10.10.10.1

# eth0=slirp,,/usr/bin/slirp-fullbolt
  address 10.2.0.15
  netmask 255.0.0.0
  dns-nameservers 10.0.2.3
  up route add default eth0

(dns-nameservers nécessite le paquet resolvconf)

Autre solution pour gérer automatiquement les DNS: installez un serveur DNS dans l'UML, et évitez ainsi de vous faire suer à déterminer ceux de l'hôte. In-dé-pen-dan-ce ;) À moins que vous n'ayez besoin du serveur DNS de votre réseau interne.

Lancer un UML en tâche fond

./linux ubda=... con=null &


Versions

La version officielle est vraisemblablement celle intégrée au noyau kernel.org. Aucune version de développement n'est vraisemblablement accessible. La version kernel.org ne compile pas nécessairement (eg. 2.6.19.2). Jeff Dyke publie de temps à autre un combo précompilé noyau + image FC5 sur la page d'accueil du site.

Patches

Cf. http://www.user-mode-linux.org/~blaisorblade/

Clarifions un peu:

  • skas3+sysemu: patch pour le noyau hôte pour gagner en rapidité,
  • -bb: patch pour le noyau invité, fonctionnalités supplémentaires en test. À utiliser en bloc, ou en choissant une fonctionnalité en particulier parmi un jeu de patches séparés (splitout/broken-out). Il y a un jeu de patches correspondants pour les uml-utilities.

C'est un peu confus sur le site, mais c'est tout.

Liens

Dépannage

Kernel panic - not syncing: start_userspace : expected SIGSTOP, got status = 256

Cf. http://www.mail-archive.com/user-mode-linux-devel@lists.sourceforge.net/msg03414.html

Votre noyau (hôte) est, si j'ai bien compris, mal configuré. Recompilez-le ou utilisez-en un autre.

Vous pouvez également activer CONFIG_HOST_2G_2G dans la configuration du noyau UM.