Association Bordelaise des Utilisateurs de Logiciels libres
User Mode Linux (1), comment faire ?
User Mode Linux permet de faire tourner un linux comme processus utilisateur d’un autre linux. Ca permet -entre autres - de faire le "root" sur sa petite machine (virtuelle) à soi, sans risquer de casser la vraie machine. On peut aussi jouer à faire du réseau entre machines virtuelles, histoire de se faire la main.
Les ingrédients
Pour faire fonctionner le truc, il vous faut récupérer trois choses
– un noyau spécial, compilé avec des options qui vont bien
– des utilitaires (uml_utilities)
– l’image d’un système de fichiers (en gros, c’est la copie d’une
partition avec linux installé dessus)
J’ai récupéré tout ça sur http://ftp.nl.linux.org/pub/uml :
– uml_utilities_20030903.tar.bz2 (utilitaires)
– linux-2.4.19-5.bz2 (noyau)
– root_fs_slack8.1.bz2 (système de fichiers avec slackware)
L’installation
– désarchiver uml_utilities et l’installer
(tar, make, make install) [1]
Note : il vous faut la bibliothèque de développement
readline [2]
– décompressez le noyau, rendez-le exécutable (bunzip2, chmod +x)
– décompressez le système de fichiers, mettez-le en lecture seule (bunzip2 ..., chmod -w ....)
Préparez aussi un script de lancement du genre :
#
KERNEL=/spare/UML/linux-2.4.19-5
ROOTFS=/spare/UML/root_fs_slack8.1
COW=/tmp/myslack.cow
$KERNEL umid=slack ubd0=$COW,$ROOTFS
(Vous l’avez deviné, j’ai tout collé dans /spare/UML.)
Démarrage et arrêt
On lance le script et hop : une machine virtuelle Slackware
apparaît avec trois consoles
dans autant de fenêtres séparées. Le compte root n’a pas de mot de passe. Vous pouvez y aller !
Pour arrêter proprement la machine virtuelle, se connecter en root, et lancer "shutdown -h now"
Sinon, depuis une autre fenêtre, lancez
uml_mconsole slack halt
C’est quoi le fichier COW ?
Après ça, vous allez voir apparaître un fichier /tmp/myslack.cow
Vu comme ça il a l’air énorme, en fait il est plein de trous. Compressez-le avec bzip2, vous verrez.
Explication : si vous avez bien suivi ce que j’ai écrit, vous avez mis l’image
de systeme de fichiers en READ-ONLY. Donc vos bidouillages sous slackware virtuelle n’ont pas pu être enregistrés dans l’image.
Les blocs de donnés modifiés ont donc été enregistrés
dans ce fichier "copy on write", qui donne une "différentiel" entre
l’état initial du système de fichier et son état actuel.
C’est tout pour aujourd’hui
Enfin presque : juste deux mots : si vous travaillez sur des partitions NFS, vous allez rencontrer quelques difficultés.
1. Le lancement du noyau bidouillé crée chez vous un répertoire ".uml", et tente
d’y mettre des sockets [3].
Si votre répertoire d’accueil est monté par NFS, ça ne marche pas.
Un remède :
mkdir /tmp/truc
ln -s /tmp/truc ~/.uml
2. Apparemment (il faudrait que je revérifie) les fichiers COW doivent aussi être sur un disque local.
Pas un vrai problème : je les transfère de mon répertoire partagé vers /tmp en les décompressant, et inversement.
bunzip2 -c \ ~/MyCows/myslack.cow.bz2 >/tmp/myslack.cow/
... LANCEMENT....
bzip2 -c tmp/myslack.cow ~/MyCows/myslack.cow.bz2
Liens, références, tout ça
– le site http://user-mode-linux.sourceforge.net/
P.-S.
A la prochaine fois
Si vous n’êtes pas sages, une prochaine fois je vous raconterai
– comment on fait un réseau (virtuel) de deux machines virtuelles
(ou plus)
– comment (et pourquoi) on connecte une machine virtuelle à internet.