Voulant installer des VServers sur un eServer d’IBM, nous avons rencontré un problème, un module (sd_mod) pour le scsi n’était pas compilé dans le noyau de notre ami Jacques Gélinas. Il faut donc compiler notre propre noyau ! Ho ! On va se salir les mains ;o)
Voici donc comment nous avons procédé.
Télécharger le noyau 2.4, sur kernel.org
Déplacer l’archive du noyau vers /usr/src
- mv linux-2.4.26.tar.bz2 /usr/src
Décompresser l’archive du noyau :
- tar xvfj linux-2.4.26.tar.bz2
Télécharger le patch vserver, sur http://www.13thfloor.at/vserver/s_r...
Déplacer le patch vers /usr/src/
Appliquer le patch au noyau « vanilla » (le noyau vanille, c’est le noyau original. La plupart des distributions "patchent" leur noyau, ce qui fait que ce ne sont plus des noyaux vanille) :
- cd /usr/src/
- patch -p0 < patch-2.4.26-vs1.27.diff
Dans /usr/src/linux-2.4.26 on fait la commande pour sélectionner les options du noyau (ici c’est délicat et assez long) :
- make menuconfig [1]
ATTENTION : options importantes pour éviter des problèmes avec initrd, en faisant ça, on aura PAS besoin de faire mkinitrd. L’initrd sert à monter en « Ramdisk » les modules qui doivent être « loadés » très tôt lors du démarrage. Si on ne fait pas de initrd, on doit alors compiler certains modules dans le noyau.
Alors, on compile dans le noyau (Y) ou en modules (M) ? Le noyau se charge avant les modules, donc si vous utilisez le type de partitions EXT3, on doit pouvoir y accéder le plus tôt possible (c’est logique). C’est pourquoi on a les lignes ci-dessous :
- CONFIG_EXT3_FS=y plutot que m [2]
- CONFIG_BLK_DEV_SD=y
- CONFIG_SCSI_AIC7XXX=y au lieu de m
Lorsque votre configuraiton est terminée, vous pouvez donc faire la commande suivante.
- make dep clean bzImage modules modules_install [3]
Après un temps dépendant de la puissance de votre ordinateur, la compilation se terminera sans erreur nous l’espérons. Nous sommes donc prêts pour l’installation du noyau. On doit copier deux fichiers dans le répertoire /boot. Le premier est la bzImage et l’autre est le System.map. On les renomme aussi comme ci-dessous :
- cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.26-vs1.27 (c’est le noyau)
- cp System.map /boot/System.map-2.4.26-vs1.27 [4]
Notre chargeur de démarrage LILO doit être modifié pour que notre noyau soit reconnu, éditez /etc/lilo.conf
On ajoute ceci [5] :
image=/boot/vmlinuz-2.4.26-vs1.27
label="vserver"
root=/dev/sda1
append="devfs=mount acpi=ht splash=silent"
read-onlyPuis on fait la commande lilo -v (s’il n’y a pas d’erreur, vous êtes prêt pour un reboot).
Si tout va bien, vous pouvez maintenant mettre votre noyau au démarrage par défaut. Rééditez lilo.conf et modifier la ligne default="Linux" pour inscrire le nom de votre noyau (ici vserver).
Kernel panic ! Voilà le message qui fait frémir le nouveau compileur de noyau. Comment trouver ce qui ne fonctionne pas ? Et bien on redémarre l’ordinateur sur un noyau qui fonctionne. Puis on va consulter le log « dmesg ». Il contient les messages du noyau. De là, vous aurez peut être à refaire un make menuconfig pour ajuster votre noyau à votre matériel. On doit alors refaire une compilation complète :o(
Voilà, nous avons compilé notre propre noyau. Quelle expérience !
Note : vous avez déjà compilé un noyau, vous avez eu des erreurs et vous avez trouvé des solutions, partagez vos expériences dans le forum au bas du présent article. Nous compilerons ;o) ces expériences et nous feront un article sur le sujet. Merci de partager !
Sources :


