Looking for Computer Science  & Information Technology online courses ?
Check my new web site: https://www.yesik.it !


De la même manière que vous pouvez souhaiter compiler votre propre noyau pour votre machine, vous pouvez être tenté de compiler aussi votre propre version de User Mode Linux. En ce qui me concerne, ça a été le cas au moment d'installer une vieille Fedora sur une machine virtuelle UML. J'avais besoin de certaines options non disponibles dans la version d'UML livrée dans les paquets de Debian. Voici donc un résumé des opérations permettant de compiler une version personnalisée de User Mode Linux sous Debian.


Procédure

Sources debianisées

Ici, comme la procédure vise spécifiquement une installation de Debian, je vais utiliser apt(8) pour récupérer le paquet source associé à UML. C'est à dire l'ensemble des fichiers nécessaires à la compilation du paquet user-mode-linux.

Remarque:

Pour une autre distribution que Debian, vous devrez adapter cette étape à votre système. Par contre, la suite du processus sera identique, puisque je vais compiler le noyau UML avec les outils standards des sources du kernel Linux.

sh$ mkdir user-mode-linux-custom
sh$ cd user-mode-linux-custom
sh$ apt-get source user-mode-linux
sh$ sudo apt-get build-dep user-mode-linux
sh$ ls
user-mode-linux-2.6.26-1um
user-mode-linux_2.6.26-1um-2+21lenny4.diff.gz
user-mode-linux_2.6.26-1um-2+21lenny4.dsc
user-mode-linux_2.6.26-1um.orig.tar.gz
sh$ cd user-mode-linux-2.6.26-1um

Normalement, vous disposez désormais de tout le nécessaire pour construire votre paquet user-mode-linux personnalisé. Nous allons maintenant dépaqueter les sources du noyau:

sh$ debian/rules unpack
tar -x --bzip2 -f /usr/src/linux-source-2.6.26.tar.bz2
touch unpack-stamp

Versions?

Ce sont les sources du noyau de la distribution Debian associée à la version du paquet user-mode-linux que vous avez installé qui sont décompressées. Si vous souhaitez compiler un noyau d'une autre version, vous pouvez extraire manuellement les sources dans le répertoire courant, puis mettre à jour kernel_version dans devbin/rules.

L'étape suivante consiste à appliquer les patches Debian. Généralement, ceux-ci sont modestes pour ce paquet, et concernent essentiellement l'emplacement des fichiers (configuration ou log par exemple):

sh$ debian/rules patch

Construction

Cette partie est indépendante du fait que l'on compile UML pour Debian ou pas. Cette phase ressemble à la compilation d'un noyau ordinaire, la seule différence étant qu'il faut préciser que l'on construit un noyau pour l'architecture UML (ARCH=um) dans toutes les commandes:

sh$ cd linux-source-2.6.26/
# Initialise les options du kernel à leurs valeurs par défaut
sh$ make defconfig ARCH=um
# Modification personnalisée de la configuration
sh$ make menuconfig ARCH=um
sh$ make all ARCH=um

Après quelques instants (ça va plus vite que pour un vrai kernel), vous allez vous retrouver avec le noyau UML compilé sous le nom vmlinux. Par compatibilité avec d'anciennes versions, il y a aussi un fichier nommé linux – mais il s'agit juste d'un lien physique sur vmlinux:

sh$ ls -li *linux*
1079252 -rw-r--r-- 1 sylvain sylvain    15843 2010-04-12 12:12 config_user_mode-linux-2.6.26-1um
1289815 -rwxr-xr-x 2 sylvain sylvain 22281641 2010-04-12 12:34 linux
1289815 -rwxr-xr-x 2 sylvain sylvain 22281641 2010-04-12 12:34 vmlinux
1291858 -rw-r--r-- 1 sylvain sylvain 37624447 2010-04-12 12:29 vmlinux.o

Vous remarquerez aussi que la taille du fichier produit est un peu excessive. C'est parce qu'il contient les symboles de déboggages que vous pouvez éventuellement éliminer:

sh$ strip vmlinux
sh$ ls -li linux vmlinux
1289815 -rwxr-xr-x 2 sylvain sylvain 1941680 2010-04-12 12:38 linux
1289815 -rwxr-xr-x 2 sylvain sylvain 1941680 2010-04-12 12:38 vmlinux

Installation

Votre noyau UML est maintenant prêt à être utilisé. Pour en simplifier l'utilisation, vous pouvez éventuellement le copier dans un des dossiers de votre PATH. /usr/local/bin semble un bon candidat:

sh$ sudo cp vmlinux /usr/local/bin/linux-2.6.26-debian-custom

C'est la manière de procéder que je recommande si vous voulez faire coexister plusieurs noyaux UML sur votre machine. Une alternative serait de poursuivre un construisant un paquet Debian. C'est plus adapté si vous souhaitez remplacer la version livrée avec Debien par la votre.

Construire le paquet Debian

Cette phase n'est réellement nécessaire que si vous désirez distribuer votre noyau UML sous forme de paquet Debian. Ici, j'utilise une procédure un peu alambiquée juste pour garder la phase de configuration décrite à l'étape précédente indépendante de Debian.

sh$ cd ..
sh$ cp linux-source-2.6.26/.config config.`dpkg-architecture -qDEB_BUILD_ARCH`
sh$ export DEB_HOST_ARCH=um
sh$ dpkg-buildpackage -rfakeroot -nc -uc
sh$ ls ../*.deb
../user-mode-linux_2.6.26-1um-2+21lenny4_i386.deb

Vous voilà maintenant avec un paquet prêt à être distribué et installé.

Ressources