\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{lun. mai 22 10:53:44 CEST 2017}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={dracut},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Outil bas niveau pour générer une image initramfs},
CreationDate={D:20170522105344},
ModDate={D:20170522105344},
Keywords={boot;Linux;initramfs}
}}
\begin{document}
 
\begin{center}
{\Huge dracut }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Outil bas niveau pour générer une image initramfs}
 
\vspace{10mm}
 
\hspace{1mm}  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 \textbf{rd.debug} à la ligne de commande du kernel. /run/initramfs/rdsosreport.txt contient tous les logs et la sortie de certains outils.
\vspace{5mm} \\
 
 
\hspace{1mm} Pour créer une image initramfs, la commande la plus simple est: \\
\hspace{1mm} \textbf{dracut} \\
\hspace{1mm} Si l'initramfs existe déjà, dracut affiche une erreur. Pour écraser l'image existante: \\
\hspace{1mm} \textbf{dracut --force} \\
\hspace{1mm} Pour spécifie un autre nom de fichier pour l'image \\
\hspace{1mm} \textbf{dracut foobar.img} \\
\hspace{1mm} Pour générer une image pour une version kernel spécifique: \\
\hspace{1mm} \textbf{dracut foobar.img 2.6.40-1.rc5.f20} \\
\hspace{1mm} Un raccourci pour générer l'image à l'emplacement par défaut: \\
\hspace{1mm} \textbf{dracut --kver 2.6.40-1.rc5.f20} \\
 
\hspace{1mm}  Pour créer des images plus petites, utiliser l'option --hostonly.
\vspace{5mm} \\
 
 
\hspace{1mm} Pour voir le contenu d'une image créé: \\
\hspace{1mm} \textbf{lsinitrd | less} \\
\hspace{1mm} Pour afficher le contenu d'un fichier dans l'initramfs: \\
\hspace{1mm} \textbf{lsinitrd -f /etc/ld.so.conf} \\
\hspace{1mm} 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. \\
\hspace{1mm} \textbf{dracut --att bootchart initramfs-bootchart.img} \\
\hspace{1mm} Pour voir une liste des modules dracut disponible \\
\hspace{1mm} \textbf{dracut --list-modules} \\
\hspace{1mm} 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. \\
\hspace{1mm} \textbf{dracut --add-drivers mymod initramfs-with-mymod.img} \\
\hspace{1mm} 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: \\
\hspace{1mm} \textbf{dracut --print-cmdline} \\
\hspace{1mm} Spécifier le périphérique root: \\
\hspace{1mm} \textbf{root=/dev/sda2} \\
\hspace{1mm} Spécifier les paramètres clavier \\
\hspace{1mm} \textbf{rd.vconsole.font=latarcyrheb-sun16 rd.vconsole.keymap=de-latin1-nodeadkeys rd.locale.LANG=de\_DE.UTF-8} \\
\hspace{1mm} blacklister les modules kernel \\
\hspace{1mm} \textbf{rd.driver.blacklist=mptsas rd.driver.blacklist=nouveau} \\
\hspace{1mm} 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 \\
\hspace{1mm} \textbf{rd.luks=0 rd.lvm=0 rd.md=0 rd.dm=0} \\
\hspace{1mm} Injecter des fichiers personnalisés avec l'option --include \\
\hspace{1mm} \textbf{dracut --include cmdline-preset /etc/cmdline.d/mycmdline.conf initramfs-cmdline-pre.img} \\
\hspace{1mm} L'option --install permet de spécifier de nombreux fichier qui sont installés dans l'image initramfs aux même emplacement. \\
\hspace{1mm} \textbf{dracut --install 'strace fsck.ext3 ssh' initramfs-dbg.img} \\
\hspace{1mm} boot réseaux \\
\hspace{1mm} \textbf{ip=dhcp} \\
\hspace{1mm} 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: \\
\hspace{1mm} \textbf{dracut -m "nfs network base" initramfs-nfs-only.img} \\
\hspace{1mm} puis on eut réduire encore la taille avec --host-only \\
\hspace{1mm} \textbf{dracut -m "nfs network base" --host-only initramfs-nfs-host-only.img} \\
 
\vspace{1cm}{\huge Résolution de problèmes }
 
\
 
\hspace{1mm}  Si le processus de boot échoue, il existe de nombreuses options pour debugger la situation:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} 1.]{Supprimer "rhgb" et "quiet"}
\item[\hspace{1mm} 2.]{Ajouter 'rd.shell'}
\item[\hspace{1mm} 3.]{ajouter 'rd.shell rd.debug log\_bug\_len=1M'}
\item[\hspace{1mm} 4.]{/run/initramfs/rdsosreport.txt est généré et contient tous les logs et la sortie des outils important.}
\end{description}
 
\vspace{1cm}{\huge debugger dracut }
 
\
 
\hspace{1mm} Debugger dracut nécessite une console durant le boot. Cette section documente uen connection série pour enregistrer les messages de boot \\
\hspace{1mm} \textbf{1. Activer la console série pour le kernel et le bootloader} \\
\hspace{1mm} \textbf{2. ouvrir /boot/grub2/grub.cfg, sous la ligne timeout=5, ajouter:} \\
\hspace{1mm} serial --unit=0 --speed=9600 \\
\hspace{1mm} terminal --timeout=5 serial console \\
\hspace{1mm} \textbf{3. ouvrir /boot/grub2/grub.cfg, ajouter les arguments de boot à la ligne kernel:} \\
\hspace{1mm} console-tty0 console=ttys0,9600 \\
\hspace{1mm} \textbf{4. Rediriger la sortie non-interactive} \\
\hspace{1mm} exec >/dev/kmsg 2>\&1 </dev/console \\
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} --kver <kernel version>]{Définis la version kernel}
\item[\hspace{1mm} -f, --force]{Écrase un initramfs existant}
\item[\hspace{1mm} -a, --add <list of dracut modules>]{Ajoute des modules dracut. peut être spécifié plusieurs fois}
\item[\hspace{1mm} --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}
\item[\hspace{1mm} -o, --omit <list of dracut modules>]{Omet les modules dracut spécifié Peut être spécifié plusieurs fois}
\item[\hspace{1mm} -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}
\item[\hspace{1mm} -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.}
\item[\hspace{1mm} --add-drivers <list of kernel modules>]{Liste de modules kernel à ajouter à l'initramfs}
\item[\hspace{1mm} --force-drivers <list of kernel modules>]{idem à add-drivers, mais s'assure que les pilotes sont chargés très tôt via modprobe}
\item[\hspace{1mm} --omit-drivers <list of kernel modules>]{Liste de modules kernel à exclure de l'initramfs. peut être spécifié plusieurs fois}
\item[\hspace{1mm} --filesystems <list of filesystems>]{Liste de modules de systèmes de fichier à inclure exclusivement dans l'initramfs. peut être spécifié plusieurs fois}
\item[\hspace{1mm} -k, --kmoddir <kernel directory>]{Répertoire où rechercher les modules kernel.}
\item[\hspace{1mm} --fwdir <dir>\texttt{[}:<dir>...\texttt{]}++]{Répertoires additionnels, où rechercher des firmwares. Peut être spécifié plusieurs fois}
\item[\hspace{1mm} --kernel-cmdline <parameters>]{Paramètres de ligne de commande kernel par défaut}
\item[\hspace{1mm} --kernel-only]{N'installe que les pilotes kernel et les firmwares}
\item[\hspace{1mm} --no-kernel]{N'installe par les pilotes kernel ni les firmwares}
\item[\hspace{1mm} --early-microcode]{Combine le microcode avec ramdisk}
\item[\hspace{1mm} --no-early-microcode]{Ne combine pas le microcode avec ramdisk}
\item[\hspace{1mm} --print-cmdline]{Affiche la ligne de commande kernel pour le layout disque courant}
\item[\hspace{1mm} --mdadmconf]{Inclus /etc/mdadm.conf}
\item[\hspace{1mm} --nomdadmconf]{N'inclus pas /etc/mdadm.conf}
\item[\hspace{1mm} --lvmconf]{inclus /etc/lvm/lvm.conf}
\item[\hspace{1mm} --nolvmconf]{N'inclus pas /etc/lvm/lvm.conf}
\item[\hspace{1mm} --fscks \texttt{[}LIST\texttt{]}]{Ajoute une liste d'outils fsck, en plus de ceux spécifiés dans la configuration.}
\item[\hspace{1mm} --nofscks]{inhibe l'installation des outils fsck}
\item[\hspace{1mm} --strip]{strip les binaires dans l'initramfs}
\item[\hspace{1mm} --nostrip]{ne strip pas les binaires dans l'initramfs}
\item[\hspace{1mm} --prelink]{prelink les binaires dans l'initramfs}
\item[\hspace{1mm} --noprelink]{ne prelink pas les binaires dans l'initramfs}
\item[\hspace{1mm} --hardlink]{hardlink les fichiers dans l'initramfs}
\item[\hspace{1mm} --nohardlink]{ne haldlink pas les fichiers dans l'initramfs}
\item[\hspace{1mm} --prefix <dir>]{préfixe les fichiers dans l'initramfs avec le répertoire spécifié}
\item[\hspace{1mm} --noprefix]{ne préfixe pas les fichiers dans l'initramfs}
\item[\hspace{1mm} --debug]{Affiche des inforamtion de débuggage durant la construction}
\item[\hspace{1mm} -v, --verbose]{mode verbeux}
\item[\hspace{1mm} -q, --quiet]{mode silencieux}
\item[\hspace{1mm} -c, --conf <dracut configuration file>]{spécifie le fichier de configuration à utiliser}
\item[\hspace{1mm} --confdir <configuration directory>]{Spécifie le répertoire de configuration à utiliser}
\item[\hspace{1mm} --tmpdir <temporary directory>]{Spécifie le répertoire temporaire à utiliser}
\item[\hspace{1mm} --sshkey <sshkey file>]{Fichier de clé ssh utilisé avec le module ssh-client}
\item[\hspace{1mm} --logfile <logfile>]{Fichier de log à utiliser}
\item[\hspace{1mm} -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.}
\item[\hspace{1mm} -H, --hostonly]{Mode host-only: n'installe que ce qui est nécessaire pour booter l'hôte locale.}
\item[\hspace{1mm} -N, --no-hostonly]{Désactive le mode host-only}
\item[\hspace{1mm} --hostonly-cmdline]{Stocke les arguments de ligne de commande kernel nécessaires dans l'initramfs}
\item[\hspace{1mm} --no-hostonly-cmdline]{Ne stocke pas les arguments de ligne de commande nécessaires dans l'initramfs}
\item[\hspace{1mm} --hostonly-i18n]{Installe seulement le clavier nécessaire et les fonts en accord avec la configuration de l'hôte}
\item[\hspace{1mm} --no-hostonly-i18n]{Installe tous les claviers et fonts disponibles}
\item[\hspace{1mm} --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)}
\item[\hspace{1mm} --fstab]{Utilise /etc/fstab au lieu de /proc/self/mountinfo}
\item[\hspace{1mm} --add-fstab <filename>]{Ajoute les entrées du fichier au fstab de l'initramfs}
\item[\hspace{1mm} --mount "<device> <mountpoint> <filesystem type> \texttt{[}<filesystem options> \texttt{[}<dump frequency> \texttt{[}<fsck order>\texttt{]}\texttt{]}\texttt{]}"]{Monte de périphérique dans l'iniramfs.}
\item[\hspace{1mm} --mount "<mountpoint>"]{idem, mais les paramètres manquant sont déterminés en recherchant dans les montages courants}
\item[\hspace{1mm} --add-device <device>]{Connecte le périphérique. Utile en mode hostonly pour le supporte du swap dans une partition lvm chiffrée.}
\item[\hspace{1mm} -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}
\item[\hspace{1mm} -I, --install <file list>]{Installe la liste de fichiers dans l'initramfs}
\item[\hspace{1mm} --install-optional <file list>]{Installe la liste des fichiers dans l'initramfs, s'ils existent}
\item[\hspace{1mm} --gzip]{Compresse l'initramfs avec gzip}
\item[\hspace{1mm} --bzip2]{Compresse l'initramfs avec bzip2}
\item[\hspace{1mm} --lzma]{Compresse l'initramfs avec lwma}
\item[\hspace{1mm} --xz]{Compresse l'initramfs avec xz}
\item[\hspace{1mm} --lzo]{Compresse l'initramfs avec lzop}
\item[\hspace{1mm} --lz4]{Compresse l'initramfs avec lz4}
\item[\hspace{1mm} --compress <compressor>]{Compresse l'initramfs avec le programme de compression spécifié.}
\item[\hspace{1mm} --no-compress]{Ne compresse pas l'initramfs généré}
\item[\hspace{1mm} --reproducible]{Crée des images reproductible}
\item[\hspace{1mm} --no-reproducible]{Ne créé pas d'images reproductibles}
\item[\hspace{1mm} --list-modules]{Liste les module dracut disponibles}
\item[\hspace{1mm} -M, --show-modules]{Les les modules inclus durant la construction}
\item[\hspace{1mm} --keep]{Conserve le répertoire temporaire pour débuggage}
\item[\hspace{1mm} --printsize]{Affiche la taille du module installé}
\item[\hspace{1mm} --profile]{Affiche les informations de profile du processus de construction}
\item[\hspace{1mm} --ro-mnt]{Mount / et /usr en lecture seule}
\item[\hspace{1mm} -L, --stdlog <level>]{Niveau de log, de 0 à 6.}
\item[\hspace{1mm} --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.}
\item[\hspace{1mm} --loginstall <DIR>]{Log tous les fichiers installés depuis l'hôte dans le répertoire spécifié}
\item[\hspace{1mm} --uefi]{Créé un exécutable uefi.}
\item[\hspace{1mm} --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}
\item[\hspace{1mm} --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>}
\end{description}
 
\vspace{1cm}{\huge Fichiers }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} /var/log/dracut.log]{Fichier de log de la création de l'initramfs}
\item[\hspace{1mm} /tmp/dracut.log]{fichier de log, si /var/log/dracut n'est pas accéssible en écriture}
\item[\hspace{1mm} /etc/dracut.conf]{Fichier de configuration de dracut}
\item[\hspace{1mm} /etc/dracut.conf.d/*.conf]{Fichiers de configurations de dracut}
\item[\hspace{1mm} /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}
\item[\hspace{1mm} /etc/conf.d/]{(initramfs) Fichiers sourcés dans l'initramfs pour définir les valeurs initiales}
\item[\hspace{1mm} /etc/cmdline]{(initramfs) Contient des options de ligne de commande additionnelles}
\item[\hspace{1mm} /etc/cmdline.d/*.conf]{(initramfs) Contient des options de ligne de commande additionnelles}
\end{description}
\end{flushleft}
\end{document}
