Intéressé par des cours d'informatique en ligne ?
Visitez mon nouveau site https://www.yesik.it !

Il existe deux grandes familles de systèmes GNU/Linux. Ceux basés sur Debian et ceux basés sur RedHat. Dans ma pratique quotidienne, j'utilise Debian. Mais à l'occasion, j'ai besoin d'aller voir ce qui se passe de l'autre côte du miroir. Malheureusement, mon portable ne s'entend pas bien avec Xen. Ce qui m'a amené à utiliser User Mode Linux à la place. Cette solution est sans conteste moins performante, mais a aussi ses avantages. Notamment sa simplicité de mise en œuvre. Voici donc comment faire tourner une distribution CentOS sous User Mode Linux sur un hôte tournant sous Debian.

Télécharger l'image

Pour tourner un système GNU/Linux requiert un noyau (le kernel Linux) et un système de fichiers racine (le root filesystem). Ce dernier contient l'ensemble des utilitaires de l'espace utilisateur nécessaires au démarrage et à l'utilisation du système.

Le noyau est fourni par User Mode Linux – ou pour être plus précis, User Mode Linux est un noyau qui s'exécute comme un processus. Par contre, le système de fichiers racine doit être installé sur une image disque – et est spécifique à chaque distribution.

Or, la création de l'image à partir des média d'installation peut parfois s'avérer très difficile – et forcément la procédure n'est pas la même d'une distribution à l'autre! Pour contourner le problème, je vais donc ici choisir la solution de facilité, en téléchargeant une image déjà faite à partir du site http://fs.devloop.org.uk/. Comme vous le constaterez, celui-ci maintient des images pour la plupart des distributions standards. Mon choix s'étant porté ici sur CentOS, puisque je cherchais une distribution la plus proche possible de RedHat:

sh# wget http://fs.devloop.org.uk/filesystems/CentOS-5/CentOS5-x86-root_fs.bz2
# Si nécessaire, créer un dossier pour héberger les images
sh# mkdir /usr/local/share/root_fs
sh# bzcat CentOS5-x86-root_fs.bz2 | cp --sparse=always /dev/stdin /usr/local/share/root_fs/CentOS5-x86-root_fs.img
sh# chmod +r /usr/local/share/root_fs/CentOS5-x86-root_fs.img

--sparse=always?

Les images disques peuvent être très grosses. 1,5Go décompressées. Et elles contiennent beaucoup de vide – c'est à dire des secteurs entiers de zéros.

C'est pourquoi pour extraire l'archive, j'utilise bzcat conjointement avec cp qui accepte l'option --sparse=always. Celle-ci force la création d'un fichier creux (sparse file). C'est à dire un fichier où les blocs ne contenant que des zéros ne sont pas physiquement alloués sur le disque. On peut constater l'économie d'espace disque avec la commande ls:

sh# ls -lhs /usr/local/share/root_fs/CentOS5-x86-root_fs.img
702M -rw-r--r-- 1 root staff 1.6G 2010-04-13 16:22 /usr/local/share/root_fs/CentOS5-x86-root_fs.img

Dans cet exemple, la taille logique de l'image est de 1.6Go. Mais seuls 702Mo d'espace disque sont réellement utilisés. Attention cependant: tous les systèmes de fichiers (file systems) ne supportent pas les fichiers creux! Avec un système de fichier moderne comme ext3/4 ou ZFS, pas de problème. Avec un vieux système de fichier comme FAT32, ça ne sera pas le cas. Et les blocs vides occuperont autant de place sur le média que les autres. Pas de chance pour votre clé USB...

Pour une liste exhaustive des systèmes de fichiers supportant les fichiers creux, je vous renvoie sur l'article correspondant de wikipédia: Comparison of file systems: Allocation and layout policies.

Lancer la machine

Installation

Sous Debian vous aurez besoin du paquet user-mode-linux pour ce qui suit. Si ce logiciel n'est pas déjà sur votre machine utilisez le gestionnaire de paquets de votre distribution pour procéder à l'installation.

sh# apt-get install user-mode-linux

Jusqu'à présent, j'ai travaillé sous l'identité root. C'était uniquement pour pouvoir placer mon image dans le dossier /usr/local/share/root_fs/. Si sur mon ordinateur personnel l'avantage est tout relatif, cela prend une autre dimension appliqué à un ordinateur partagé par différents utilisateurs. Ainsi, j'offre à tous les utilisateurs de la machine la possibilité de lancer une machine virtuelle UML basée sur une des distributions installées – sans qu'ils ne puissent altérer l'image que je fournis.

Pour bien illustrer cela, à partir de maintenant, je vais travailler en utilisateur ordinaire. La seule concession étant que je vais être obligé d'utiliser un fichier COW (Copy On Write) puisque l'image sera en lecture seule. Mais, c'est de toute façon une bonne habitude: ne serait-ce que pour économiser de la place si vous êtes amenés à créer plusieurs machines à partir de la même image de base.

sh$ linux ubda=centos-1.cow,/usr/local/share/root_fs/CentOS5-x86-root_fs.img
[...]
CentOS release 5.4 (Final)
Kernel 2.6.26 on an i686

localhost login: root
[root@localhost ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/ubda              1548144    713844    755660  49% /
tmpfs                   786432         0    786432   0% /tmp
[root@localhost ~]# 

Remarque:

Dans les images distribuées sur le site http://fs.devloop.org.uk, le mot de passe root est vide. C'est sans doute une des premières choses que vous voudrez changer! Surtout si vous avez aussi l'intention de configurer l'accès réseau sur cette machine...

[root@localhost ~]# passwd
Changing password for user root.
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.

Et voilà! En deux temps trois mouvements, nous voici avec une machine CentOS sous la main.