Lors de l'ajout de nouveau matériel à un système, ou après avoir modifié les fichiers de configuration qui peuvent être utilisés plus tôt dans le processus de démarrage, ou lors de la modification des options sur un module du noyau, il peut être nécessaire de reconstruire le disque virtuel initial (également appelé initrd ou initramfs) pour inclure les modules de noyau, les fichiers et les directives de configuration appropriés. Dans les exemples ci-dessous, vous verrez l'utilisation de $(uname -r), qui est un moyen de passer la version actuelle du noyau dans une commande sans la saisir.
Procédure
1. Commençons par sauvegarder le Ramdisk initial d'origine :
# cp /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img.bak
2. Création d'un nouveau disque virtuel initial (après avoir ajouté les nouveaux modules dans /etc/modprobe.conf ou /etc/modules.conf pour le noyau 2.4) :
# mkinitrd -f /boot/initrd-`uname -r`-new.img `uname -r`
Vous pouvez voir qu'un nouveau fichier de disque virtuel initial initrd-[kernel-version]-new.img a été créé dans le répertoire /boot. Paramètres mkinitrd (veuillez consulter man mkinitrd pour plus de détails) :
# mkinitrd --help usage: mkinitrd [--version] [--help] [-v] [-f] [--preload [module]] [--force-ide-probe] [--force-scsi-probe | --omit-scsi-modules] [--image-version] [--force-raid-probe | --omit-raid-modules] [--with=[module]] [--force-lvm-probe | --omit-lvm-modules] [--builtin=module] [--omit-dmraid] [--net-dev=interface] [--fstab=fstab] [--nocompress] [initrd-image] [kernel-version]
Les paramètres les plus utilisés sont :
-f Permet à mkinitrd d'écraser un fichier image existant.–preload=module – Chargez le module module dans l'image initiale du disque virtuel. Le module est chargé avant tous les modules SCSI spécifiés dans /etc/modprobe.conf. Cette option peut être utilisée autant de fois que nécessaire.
–with=module – Charger le module modules dans l'image ramdisk initiale. Le module est chargé après tous les modules SCSI spécifiés dans /etc/modprobe.conf. Cette option peut être utilisée autant de fois que nécessaire.
Si vous avez choisi un nouveau nom pour votre fichier Ramdisk initial, vous devez ajouter une nouvelle entrée dans /etc/grub.conf pour pouvoir l'utiliser :
title Red Hat Enterprise Linux 5 (2.6.32-200.13.1.el5) root (hd0,0) kernel /vmlinuz-2.6.32-200.13.1.el5 ro root=LABEL=/ initrd /initrd-2.6.32-200.13.1.el5.img
Après cela, vous pourrez choisir l'entrée "New initrd" dans votre menu Grub lors du démarrage.
Travailler avec les sauvegardes
Comme mentionné précédemment, il est recommandé de faire une sauvegarde de l'initrd précédent en cas de problème avec le nouveau. Si nécessaire, il est possible de créer une entrée distincte dans /boot/grub/grub.conf pour l'image initiale du disque virtuel de sauvegarde, afin de choisir facilement l'ancienne version au démarrage sans avoir à restaurer la sauvegarde. Cet exemple de configuration permet de sélectionner la nouvelle ou l'ancienne image du disque virtuel initial dans le menu grub :
title Red Hat Enterprise Linux 5 (2.6.32-200.13.1.el5) root (hd0,0) kernel /vmlinuz-2.6.32-200.13.1.el5 ro root=LABEL=/ initrd /initrd-2.6.32-200.13.1.el5.img title Red Hat Enterprise Linux 5 w/ old initrd (2.6.32-200.13.1.el5) root (hd0,0) kernel /vmlinuz-2.6.32-200.13.1.el5 ro root=LABEL=/ initrd /initrd-2.6.32-200.13.1.el5.img.bak
Alternativement, vous pouvez entrer en mode édition dans grub si vous devez choisir l'ancien initrd et que vous n'avez pas fait d'entrée séparée dans grub.conf avant de redémarrer. Pour ce faire :
Si grub est sécurisé avec un mot de passe, appuyez sur p et entrez le mot de passe
Utilisez les touches fléchées pour mettre en surbrillance l'entrée du noyau que vous souhaitez démarrer
Appuyez sur e pour modifier
Sélectionnez la ligne initrd et appuyez à nouveau sur e
Modifiez le chemin de l'initrd vers la copie de sauvegarde que vous avez faite (comme /initrd-2.6.32-200.13.1.el5.img.bak)
Appuyez sur Entrée pour enregistrer temporairement les modifications vous avez fait
Appuyez sur b pour démarrer