Mkinitrd

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Régénération d'un initrd
Commande mkinitrd
Contexte RHEL/CentOS 5 et 6 — remplacé par dracut (RHEL7+) ou update-initramfs (Debian/Ubuntu)
Voir aussi Initrd (concept général)

mkinitrd est l'outil historique de RHEL/CentOS 5 et 6 pour (re)générer une image initrd complète en une seule commande — modules à inclure, sonde du matériel, compression. Sur RHEL7 et plus, il est remplacé par dracut, et sous Debian/Ubuntu par update-initramfs ; les deux reprennent le même principe mais avec une syntaxe d'options différente (voir plus bas). Pour le fonctionnement général d'un initrd (rôle, structure interne, méthode manuelle d'ajout de module), voir Initrd.

Cas d'usage : régénérer l'initrd après un changement de contrôleur virtuel

Cas classique lors d'une migration P2V ou d'un changement d'hyperviseur : le disque ou la carte réseau virtuelle change de type (par exemple passage au pilote paravirtualisé VMware vmxnet3 pour le réseau, ou pvscsi pour le stockage). L'initrd existant ne contient pas le module correspondant, puisqu'il a été généré pour l'ancien matériel — au redémarrage, le noyau ne trouve ni la carte réseau ni parfois la racine, et le boot échoue. La solution consiste à régénérer l'initrd en forçant l'inclusion du bon module :

mkinitrd -f --force-lvm-probe --force-scsi-probe --without-usb --without-multipath --without-dmraid --omit-raid-modules --with=vmxnet3 /boot/initrd-2.6.18-308.el5.img 2.6.18-308.el5

Ici, --with=vmxnet3 ajoute le pilote réseau paravirtualisé VMware à l'image ; les options --force-lvm-probe/--force-scsi-probe forcent la détection LVM/SCSI même si la sonde automatique ne la déclenche pas, et les --without-*/--omit-raid-modules excluent volontairement des sous-systèmes non utilisés (USB, multipath, dmraid, RAID logiciel) pour garder une image plus légère.

Options clés

mkinitrd -f initrd-<version>.img <version>   # force l'écriture, même si le fichier cible existe déjà
mkinitrd --with=<module> ...                 # ajoute un module supplémentaire à l'image (ex. un pilote réseau ou disque)
mkinitrd --omit-raid-modules ...             # exclut les modules RAID logiciel (md), utile quand ils ne sont pas nécessaires

D'autres options ciblent la sonde matérielle (--force-scsi-probe, --force-lvm-probe) ou l'exclusion explicite de sous-systèmes (--without-usb, --without-multipath, --without-dmraid) — utiles pour garder l'image minimale ou contourner une sonde automatique qui ne détecte pas le bon matériel. Voir Initrd pour --preload (chargement forcé d'un module au démarrage), déjà détaillé pour le cas d'une carte RAID matérielle.

⚠️ Comme pour toute régénération d'initrd, écrire vers un nouveau fichier plutôt que d'écraser l'image en place, et déclarer la nouvelle entrée dans GRUB avant de la rendre permanente — un système qui ne boote plus est bien plus difficile à corriger.

Sur les systèmes récents

mkinitrd n'existe plus sur RHEL7+ (remplacé par dracut) ni sous Debian/Ubuntu (où l'outil est update-initramfs) : ces deux outils modernes régénèrent l'intégralité de l'image plutôt que d'y injecter un module à la main, avec une syntaxe d'options propre à chacun — ne pas essayer de transposer les options mkinitrd ci-dessus telles quelles. Détails et exemples de commande pour dracut : voir Initrd.

Voir aussi

  • Initrd — concept général de l'initrd, structure interne et détail de dracut