dracut
Outil bas niveau pour générer une image initramfs
Créé une image initramfs pour la version kernel spécifiée. Si la version kernel est omise, la version courante est utilisée. Si l'image n'est pas spécifié, l'emplacement par défaut est utilisée. Si vous être basculé dans un shell de récupération durant le boot, le fichier /run/initramfs/rdsosreport.txt est créé. Des informations de debuggage peuvent être ajoutés au boot en ajoutant rd.debug à la ligne de commande du kernel. /run/initramfs/rdsosreport.txt contient tous les logs et la sortie de certains outils.
Pour créer une image initramfs, la commande la plus simple est:
dracut
Si l'initramfs existe déjà, dracut affiche une erreur. Pour écraser l'image existante:
dracut --force
Pour spécifie un autre nom de fichier pour l'image
dracut foobar.img
Pour générer une image pour une version kernel spécifique:
dracut foobar.img 2.6.40-1.rc5.f20
Un raccourci pour générer l'image à l'emplacement par défaut:
dracut --kver 2.6.40-1.rc5.f20
Pour créer des images plus petites, utiliser l'option --hostonly.
Pour voir le contenu d'une image créé:
lsinitrd | less
Pour afficher le contenu d'un fichier dans l'initramfs:
lsinitrd -f /etc/ld.so.conf
Certains modules dracut sont désactivés par défaut et doivent être activés manuellement. Les modules peuvent être ajoutés dans /etc/dracut.conf ou /etc/dracut.conf.d/myconf.conf.
dracut --att bootchart initramfs-bootchart.img
Pour voir une liste des modules dracut disponible
dracut --list-modules
Pour ajouter des modules kernel dans l'initramfs qui ne sont pas automatiquement ajoutés par dracut, utiliser l'option --add-drivers ou dans /etc/dracut.conf.
dracut --add-drivers mymod initramfs-with-mymod.img
Un initramfs généré sans le mode hostonly ne contient aucun fichiers de configuration système, donc la configuration doit être faite sur la ligne de commande kernel. Pour afficher la ligne de commande:
dracut --print-cmdline
Spécifier le périphérique root:
root=/dev/sda2
Spécifier les paramètres clavier
rd.vconsole.font=latarcyrheb-sun16 rd.vconsole.keymap=de-latin1-nodeadkeys rd.locale.LANG=de_DE.UTF-8
blacklister les modules kernel
rd.driver.blacklist=mptsas rd.driver.blacklist=nouveau
Pour accélerer le processus de démarrage il est possible de spécifier plus d'informations. Par exemple, on peut indiquer à dracut que la partition root n'est pas un volume LVM ni un raid
rd.luks=0 rd.lvm=0 rd.md=0 rd.dm=0
Injecter des fichiers personnalisés avec l'option --include
dracut --include cmdline-preset /etc/cmdline.d/mycmdline.conf initramfs-cmdline-pre.img
L'option --install permet de spécifier de nombreux fichier qui sont installés dans l'image initramfs aux même emplacement.
dracut --install 'strace fsck.ext3 ssh' initramfs-dbg.img
boot réseaux
ip=dhcp
Pour réduire la taille de l'image, il est possible d'omettre tous les modules dracut. On peut également spécifie les modules kernel et dracut exacte. Par exemple pour une image NFS:
dracut -m "nfs network base" initramfs-nfs-only.img
puis on eut réduire encore la taille avec --host-only
dracut -m "nfs network base" --host-only initramfs-nfs-host-only.img
Résolution de problèmes
Si le processus de boot échoue, il existe de nombreuses options pour debugger la situation:1. Supprimer "rhgb" et "quiet"
2. Ajouter 'rd.shell'
3. ajouter 'rd.shell rd.debug log_bug_len=1M'
4. /run/initramfs/rdsosreport.txt est généré et contient tous les logs et la sortie des outils important.
debugger dracut
Debugger dracut nécessite une console durant le boot. Cette section documente uen connection série pour enregistrer les messages de boot1. Activer la console série pour le kernel et le bootloader
2. ouvrir /boot/grub2/grub.cfg, sous la ligne timeout=5, ajouter:
serial --unit=0 --speed=9600
terminal --timeout=5 serial console
3. ouvrir /boot/grub2/grub.cfg, ajouter les arguments de boot à la ligne kernel:
console-tty0 console=ttys0,9600
4. Rediriger la sortie non-interactive
exec /dev/kmsg 2&1 /dev/console
OPTIONS
--kver kernel version Définis la version kernel-f, --force Écrase un initramfs existant
-a, --add list of dracut modules Ajoute des modules dracut. peut être spécifié plusieurs fois
--force-add list of dracut modules Force l'ajoute de modules dracut dans le jeu de modules par défaut. Peut être spécifié plusieurs fois
-o, --omit list of dracut modules Omet les modules dracut spécifié Peut être spécifié plusieurs fois
-m, --modules list of drucat modules Spécifie une liste de modules dracut à appeler pendant la construction de l'initramfs. Les modules sont localisé dans /usr/lib/dracut/modules.d. Peut être spécifié plusieurs fois. Cette option force dracut à n'inclure que les modules spécifiés dans la liste
-d, --drivers list of kernel modules Liste de modules kernel à inclure exclusivement dans l'initramfs, sans le suffixe .ko. Peut être spécifié plusieurs fois.
--add-drivers list of kernel modules Liste de modules kernel à ajouter à l'initramfs
--force-drivers list of kernel modules idem à add-drivers, mais s'assure que les pilotes sont chargés très tôt via modprobe
--omit-drivers list of kernel modules Liste de modules kernel à exclure de l'initramfs. peut être spécifié plusieurs fois
--filesystems list of filesystems Liste de modules de systèmes de fichier à inclure exclusivement dans l'initramfs. peut être spécifié plusieurs fois
-k, --kmoddir kernel directory Répertoire où rechercher les modules kernel.
--fwdir dir[:dir...]++ Répertoires additionnels, où rechercher des firmwares. Peut être spécifié plusieurs fois
--kernel-cmdline parameters Paramètres de ligne de commande kernel par défaut
--kernel-only N'installe que les pilotes kernel et les firmwares
--no-kernel N'installe par les pilotes kernel ni les firmwares
--early-microcode Combine le microcode avec ramdisk
--no-early-microcode Ne combine pas le microcode avec ramdisk
--print-cmdline Affiche la ligne de commande kernel pour le layout disque courant
--mdadmconf Inclus /etc/mdadm.conf
--nomdadmconf N'inclus pas /etc/mdadm.conf
--lvmconf inclus /etc/lvm/lvm.conf
--nolvmconf N'inclus pas /etc/lvm/lvm.conf
--fscks [LIST] Ajoute une liste d'outils fsck, en plus de ceux spécifiés dans la configuration.
--nofscks inhibe l'installation des outils fsck
--strip strip les binaires dans l'initramfs
--nostrip ne strip pas les binaires dans l'initramfs
--prelink prelink les binaires dans l'initramfs
--noprelink ne prelink pas les binaires dans l'initramfs
--hardlink hardlink les fichiers dans l'initramfs
--nohardlink ne haldlink pas les fichiers dans l'initramfs
--prefix dir préfixe les fichiers dans l'initramfs avec le répertoire spécifié
--noprefix ne préfixe pas les fichiers dans l'initramfs
--debug Affiche des inforamtion de débuggage durant la construction
-v, --verbose mode verbeux
-q, --quiet mode silencieux
-c, --conf dracut configuration file spécifie le fichier de configuration à utiliser
--confdir configuration directory Spécifie le répertoire de configuration à utiliser
--tmpdir temporary directory Spécifie le répertoire temporaire à utiliser
--sshkey sshkey file Fichier de clé ssh utilisé avec le module ssh-client
--logfile logfile Fichier de log à utiliser
-l, --local Active le mode locale. dracut utilise les modules depuis le répertoire courant au-lieu des modules installés dans /usr/lib/dracut/modules.d.
-H, --hostonly Mode host-only: n'installe que ce qui est nécessaire pour booter l'hôte locale.
-N, --no-hostonly Désactive le mode host-only
--hostonly-cmdline Stocke les arguments de ligne de commande kernel nécessaires dans l'initramfs
--no-hostonly-cmdline Ne stocke pas les arguments de ligne de commande nécessaires dans l'initramfs
--hostonly-i18n Installe seulement le clavier nécessaire et les fonts en accord avec la configuration de l'hôte
--no-hostonly-i18n Installe tous les claviers et fonts disponibles
--persistent-policy policy Utiliser la stratégie pour adresses les disques et partitions. peut être un nom de répertoire dans /dev/disk (ex by-uuid, by-label)
--fstab Utilise /etc/fstab au lieu de /proc/self/mountinfo
--add-fstab filename Ajoute les entrées du fichier au fstab de l'initramfs
--mount "device mountpoint filesystem type [filesystem options [dump frequency [fsck order]]]" Monte de périphérique dans l'iniramfs.
--mount "mountpoint" idem, mais les paramètres manquant sont déterminés en recherchant dans les montages courants
--add-device device Connecte le périphérique. Utile en mode hostonly pour le supporte du swap dans une partition lvm chiffrée.
-i, --include SOURCE TARGET Inclus les fichiers dans le répertoire source dans le répertoire cible dans l'initramfs. Peut être spécifié plusieurs fois
-I, --install file list Installe la liste de fichiers dans l'initramfs
--install-optional file list Installe la liste des fichiers dans l'initramfs, s'ils existent
--gzip Compresse l'initramfs avec gzip
--bzip2 Compresse l'initramfs avec bzip2
--lzma Compresse l'initramfs avec lwma
--xz Compresse l'initramfs avec xz
--lzo Compresse l'initramfs avec lzop
--lz4 Compresse l'initramfs avec lz4
--compress compressor Compresse l'initramfs avec le programme de compression spécifié.
--no-compress Ne compresse pas l'initramfs généré
--reproducible Crée des images reproductible
--no-reproducible Ne créé pas d'images reproductibles
--list-modules Liste les module dracut disponibles
-M, --show-modules Les les modules inclus durant la construction
--keep Conserve le répertoire temporaire pour débuggage
--printsize Affiche la taille du module installé
--profile Affiche les informations de profile du processus de construction
--ro-mnt Mount / et /usr en lecture seule
-L, --stdlog level Niveau de log, de 0 à 6.
--regenerate-all Régénère toutes les images initramfs dans l'emplacement par défaut avec les versions kernel trouvés dans le système.
--loginstall DIR Log tous les fichiers installés depuis l'hôte dans le répertoire spécifié
--uefi Créé un exécutable uefi.
--uefi-stub FILE Spécifie le stub loader UEFI, qui charge le kernel, initramfs et ligne de commande attachés. Défaut: /lib/systemd/boot/efi/linuxEFI-MACHINE-TYPE-NAME.efi.stub. ou /usr/lib/gummiboot/linuxEFI-MACHINE-TYPE-NAME.efi.stub
--kernel-image FILE Spécifie l'image kernel à inclure dans l'exécutable UEFI. Défaut: /lib/modules/KERNEL-VERSION/vmlinuz ou /boot/vmlinuz-KERNEL-VERSION
Fichiers
/var/log/dracut.log Fichier de log de la création de l'initramfs/tmp/dracut.log fichier de log, si /var/log/dracut n'est pas accéssible en écriture
/etc/dracut.conf Fichier de configuration de dracut
/etc/dracut.conf.d/*.conf Fichiers de configurations de dracut
/usr/lib/dracut/dracut.conf.d/01-dist.conf /usr/lib/dracut/dracut.conf.d/02-rescue.conf /usr/lib/dracut/dracut.conf.d/50-nss-softokn.conf Fichiers de configurations de dracut
/etc/conf.d/ (initramfs) Fichiers sourcés dans l'initramfs pour définir les valeurs initiales
/etc/cmdline (initramfs) Contient des options de ligne de commande additionnelles
/etc/cmdline.d/*.conf (initramfs) Contient des options de ligne de commande additionnelles