
Sommaire :
Pour une quelconque raison, vous pouvez être amener à inclure des modules supplémentaires dans l’image de boot afin que des pilotes (modules) soit chargés dès le démarrage de la machine (module de carte raid par exemple).
Cette opération est relativement simple.
Contexte
- Linux Debain Edth
- Kernel 2.6.16 (kernel 2.6.16-1-686-smp)
- PIV @3Ghz , 1Go de RAM, Chipset I865P
- Controleur RAID 3WARE SATA-RAID 8500
- Controleur SATA intel
- Grub
Méthode
1 – Installation de l’outil nécessaire
Pour générer une image RAMFS, nous avons besoin du binaire mkinitramfs.
Vous pouvez l’installer grâce à l’outil apt-get pour debian ou up2date ou yum pour RedHat ES ou bien urpmi pour mandrake
Bref l’outil d’installation de votre distribution préférée.
2 – Ajout des modules souhaités
Pour ajouter un module, il suffit d’éditer le fichier /etc/initramfs-tools/modules et d’y ajouter le nom du pilote à charger
Note : 1 module par ligne
Dans cette exemple, nous allons ajouter le module concernant la carte RAID 3ware.
Cette carte utilise le module (pilote) 3w_xxxx.
Nous allons également ajouter le module ata_piix servant au contrôleur SATA de la carte mère.
Le module ata_piix sera mis en 1er car il s’agit du disque système, les partitions se nommant /dev/sdaX (et non sdb).
Si on le mettait en 2ème position, elles se nommeraient sdb et cela poserait un problème au linux pour booter (nommage des partitions dans les fichiers de conf. ie: /etc/fstab)
Donc éditez ce fichier avec votre éditeur préféré (emacs pour ma part) et ajoutez les modules :
emacs /etc/initramfs-tools/modules
Puis dedans :
# List of modules that you want to include in your initramfs. # # Syntax: module_name [args ...] ata_piix 3w_xxxx
3 – Génération de l’image
Pour générer l’image, nous utiliserons donc mkinitramfs qui prend 2 arguments (ou options) :
- l’image à créer (son nom avec son chemin) => option -o
- le chemin vers les modules
Le chemin vers les modules se trouve généralement dans /lib/modules/le-nom-du-noyau
Pour savoir quel noyau vous utilisez :
sambanux:~# uname -r 2.6.16-1-686-smp
Exemple pour un noyau 2.6.16-1-686-smp et le fichier image qui s’appellera initrd.img-2.6.16-1-RAID et se situra dans le répertoire /boot :
sambanux:~# mkinitramfs -o /boot/initrd.img-2.6.16-1-RAID /lib/modules/2.6.16-1-686-smp
Vérifier ensuite que l’image à bien été créé :
sambanux:~# file /boot/initrd.img-2.6.16-1-RAID /boot/initrd.img-2.6.16-1-RAID: gzip compressed data, from Unix, last modified: Sun Jul 30 15:04:02 2006, max compression
4 – Configuration du BootLoader ( GRUB )
Ensuite il ne reste plus qu’a configurer le gestionnaire de démarrage (ici GRUB) pour qu’il prenne en compte notre nouvelle image.
Choisissez l’ajout d’une nouvelle entrée plutôt que de modifier l’existante au cas ou votre nouvelle image ne soit pas bonne.
Donc voici la section concerné de mon entrée GRUB (/boot/grub/menu.lst):
title Debian GNU/Linux, kernel 2.6.16-1-686-RAID root (hd0,0) kernel /boot/vmlinuz-2.6.16-1-686-smp root=/dev/sda1 ro initrd /boot/initrd.img-2.6.16-1-RAID savedefault boot
La ligne modifiée est :
initrd /boot/initrd.img-2.6.16-1-RAID
Il ne reste plus qu’à rebooter et le tour est joué.
note : n’oubliez pas que si vous utilisez lilo, il faut regénérer le lilo grâce à la commande…. ba … lilo
Conclusion
Cette manipulation est nécessaire pour le Dell 2950 par exemple car le driver megaraid_sas n’a pas le temps de s’initialiser assez rapidement et donc linux ne trouve pas la partition /dev/sda1.
Si vous êtes amené à jouer avec plusieurs images je vous conseille de faire pointer le bon noyau avec un lien symbolique
N’hésitez pas à me laisser vos commentaires ou remarque : wimpy chez freenux.fr
Ce tuto est plutôt orienté Debian mais il doit pouvoir s’adapter à une autre distrib.
Article lu 1644 fois
Bonjour,
Peut-on avoir l’équivalent de cette procédure avec {{open suse}}. Apparement la commande {{mkinitramfs}} y est inconnue