Apparence
Uubu.fr

Les systèmes Linux, l’open source, les réseaux, l’interopérabilité, etc.
« Il vaut mieux viser la perfection et la manquer que viser l’imperfection et l’atteindre. » (Bertrand Arthur William RUSSEL)
22 May 2017

htmlpdflatexmanmd

boot Linux initramfs           Démarrage du système


dracut

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 boot
1. 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/linux‹EFI-MACHINE-TYPE-NAME›.efi.stub. ou /usr/lib/gummiboot/linux‹EFI-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