\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]{ven. nov. 4 15:19:51 CET 2016}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={debugfs},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Debugger de système de fichier ext2/3/4},
CreationDate={D:20161104151951},
ModDate={D:20161104151951},
Keywords={FileSystems;storages}
}}
\begin{document}
 
\begin{center}
{\Huge debugfs }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Debugger de système de fichier ext2/3/4}
 
\vspace{10mm}
 
\hspace{1mm}  debugfs est un debugger interactif de système de fichier. Il peut être utilisé pour examiner et changer l'état d'un système de fichier ext2/3/4.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -w]{Spécifie que le système de fichier devrait être ouvert en mode lecture écriture.}
\item[\hspace{1mm} -n ]{Désactive la vérification de checksum de métadonnées.}
\item[\hspace{1mm} -c]{Spécifie que le système de fichier devrait être ouvert en mode catastrophique, dans lequel les bitmaps d'inode et de groupe ne sont pas lus initialement. Force l'ouverture en lecture-seule.}
\item[\hspace{1mm} -i]{Spécifie que le périphérpique représente un fichier image ext2 créé par e2image. Vu qu'un fichier image ext2 ne contient que le superblock, descripteur de groupe de blocks, bitmaps d'allocation d'inode et de block, et la table d'inode, de nombreuses commandes ne fonctionneront pas correctement.}
\item[\hspace{1mm} -d data\_source\_device]{avec -i, spécifie que data\_source\_device devrait être utilisé en lisant les blocks non trouvés dans le fichier image ext2.}
\item[\hspace{1mm} -b blocksize]{Spécifie la taille de block en octet pour le système de fichier.}
\item[\hspace{1mm} -s superblock]{Force la lecture du superblock au numéro de block spécifié au lieu d'utiliser le primaire localisé à un offset de 1024 octets.}
\item[\hspace{1mm} -f cmd\_file]{Lit les commande depuis ce fichier et les exécute, puis se termine.}
\item[\hspace{1mm} -D]{Ouvre le périphérique en Direct I/O et bypasse le cache.}
\item[\hspace{1mm} -R request]{Exécute la commande spécifiée, puis quitte}
\item[\hspace{1mm} -z undo\_file]{Avant d'écraser un block, l'écris dans le fichier undo spécifié.}
\end{description}
 
\vspace{1cm}{\huge Spécifier des fichiers }
 
\
 
\hspace{1mm}  De nombreuses commandes prennent un argument filespec pour spécifier un inode dans le système de fichier. Cet argument peut être de 2 formes, un numéro d'inode entre '<>', ou un chemin de fichier.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Commandes }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} blocks filespace]{Affiche les blocks utilisés par l'inode filespec}
\item[\hspace{1mm} bmap \texttt{[} -a \texttt{]} filespec logical\_block \texttt{[}physical\_block\texttt{]}]{Afiche ou définis le numéro de bock physique correspondant an numéro do block logique logical\_block dans l'inode filespec. Si -a est spécifié, tente d'allouer un block si nécessaire.}
\item[\hspace{1mm} cat filespec]{Dump le contenu de l'inode filespec sur stdout}
\item[\hspace{1mm} cd filespec]{Change le répertoire de travail courant}
\item[\hspace{1mm} chroot filespec]{Change le répertoire root}
\item[\hspace{1mm} close \texttt{[}-a\texttt{]}]{Ferme de système de fichier ouvert. Si -a est spécifié, écris les changement dans le superblock et les descripteurs de groupe de block dans toutes les sauvegardes du superblock, pas seulement le principal.}
\item[\hspace{1mm} clri filespec]{Efface le contenu de l'inode filespec}
\item[\hspace{1mm} copy\_inode source\_inode destination\_inode]{Copie le contenu de la structure inode dans source\_inode et l'utilise pour écraser la structure inode dans destination\_inode}
\item[\hspace{1mm} dirsearch filespec filename]{Recherche dans le répertoire filespec le filename}
\item[\hspace{1mm} dirty]{Marque le système de fichier dirty, pour que le superblock soit écris en quittant}
\item[\hspace{1mm} dump\_mmp \texttt{[}mmp\_block\texttt{]}]{Affiche les valeurs de protection mmp. Si mmp\_block est spécifié, vérifie et dump les valeurs MMP pour le numéro de block donné, sinon utilise le champ s\_mmp\_block dans le superblock pour localiser et utiliser le block MMP existant.}
\item[\hspace{1mm} dx\_hash \texttt{[}-h hash\_alg\texttt{]} \texttt{[}-s hash\_seed\texttt{]} filename]{Calcule le hash de répentoire de filename. L'algorithme de hashage spécifié avec -h peut être legacy, half\_md4 ou tea.}
\item[\hspace{1mm} dump\_extents \texttt{[}-n\texttt{]} \texttt{[}-l\texttt{]} filespec]{Dump l'extent tree de l'inode filespec. -n affiche seulement les nœuds interieurs dans l'extent tree.}
\item[\hspace{1mm} ea\_get \texttt{[}-f outfile\texttt{]} filespec attr\_name]{Récupère la valeur de l'attribut étendu attr\_name dans le fichier filespec et l'écris soit sur stdout ou outfile.}
\item[\hspace{1mm} ea\_list filespec]{Liste les attributs étendus associés avec le fichier filespec sur stdout}
\item[\hspace{1mm} ea\_set \texttt{[}-f infile\texttt{]} filespec attr\_name attr\_value]{Définis la valeur de l'attribut étendu attr\_name dans le fichier filespec à la valeur attr\_value ou le lit depuis stdin}
\item[\hspace{1mm} ea\_rm filespec attr\_names...]{Supprime l'attribut étendu attr\_name du fichier filespec}
\item[\hspace{1mm} expand\_dir filespec]{Étend le répertoire filespec}
\item[\hspace{1mm} fallocate filespec start\_block \texttt{[}end\_block\texttt{]}]{Alloue et map les blocks non initialisés dans filespec entre le block logique start\_block et end\_block. Si end\_block n'est pas spécifié, cette fonction map tous les blocks disques libres ou la taille de fichier maximum. Les mappages existant sont laissés seuls.}
\item[\hspace{1mm} feature \texttt{[}fs\_feature\texttt{]} \texttt{[}-fs\_feature\texttt{]} ...]{Définis ou efface divers fonctionnalités dans le superblock, puis affiche l'état courant des fonctionnalités.}
\item[\hspace{1mm} filefrag \texttt{[}-dvr\texttt{]} filespec]{Affiche le nombre d'extents contigus dans filespec. Si filespec est un répertoire et -d n'est pas spécifié, filefrag affiche le nombre d'extent contigus pour chaque fichier dans le répertoire. -v affiche un listing avec tabulations, -r effectue un listing récursif.}
\item[\hspace{1mm} find\_free\_block \texttt{[}count \texttt{[}goal\texttt{]}\texttt{]}]{Trouver les count premier blocks libre, en commençant à goal et l'alloue. = \textbf{ffb}}
\item[\hspace{1mm} find\_free\_inode \texttt{[}dir \texttt{[}mode\texttt{]}\texttt{]}]{Trouver un inode libre et l'allouer. Si présent, dir spécifie le numéro d'inode du répertoire auquel il est alloué. mode spécifie les permissions du nouvel inode. == \textbf{ffi}}
\item[\hspace{1mm} freeb block \texttt{[}count\texttt{]}]{Marque le numéro de block comme non alloué. Si count est présent, count blocks commençant au numéro de block seront marqués non alloués}
\item[\hspace{1mm} freefrag \texttt{[}-c chunk\_kb\texttt{]}]{Affiche la fragmentation d'espace lible dans le système de fichier. avec -c, la commande filefrag affiche le nombre de chunks libre de taille chunk\_kb trouvés dans le système de fichier.}
\item[\hspace{1mm} freei filespec \texttt{[}num\texttt{]}]{Libère l'inode filespec. Si num est spécifié, efface également l'inode num-1 après l'inode spécifié}
\item[\hspace{1mm} htree\_dump filespec]{Dump le répertoire hash-indexed filespec, affichant sa structure d'arborescence}
\item[\hspace{1mm} icheck block ...]{Affiche un listing des inodes qui utilisent un ou plusieurs blocks spécifiés sur la ligne de commande.}
\item[\hspace{1mm} inode\_dump filespec]{Affiche le contenu de la structure de données d'inode en hexa et ASCII}
\item[\hspace{1mm} imap filespec]{Affiche l'emplacement de la structure de données d'inode (dans la table d'inode) de l'inode filespec}
\item[\hspace{1mm} init\_filesys device blocksize]{Créé un système de fichier ext2 dans le périphérique avec la taille blocksize. Noter que cela n'initialise pas toutes les structures de données.}
\item[\hspace{1mm} journal\_close]{Ferme un journal ouvert}
\item[\hspace{1mm} journal\_open \texttt{[}-c\texttt{]} \texttt{[}-v ver\texttt{]} \texttt{[}-j ext\_jnl\texttt{]}]{Ouvre le journal pour lecture et écriture. -c active le checksum journal; -v spécifie le format de checksum (2 ou 3).}
\item[\hspace{1mm} journal\_run]{Rejoue toutes les transactions dans le journal ouvert}
\item[\hspace{1mm} journal\_write \texttt{[}-b blocks\texttt{]} \texttt{[}-r revoke\texttt{]} \texttt{[}-c\texttt{]} file]{Écris une transaction dans le journal ouvert. La liste des blocks à écrire devrait être fournis dans blocks; les blocks eux-même devraient être lisible depuis file. Une liste de blocks à révoquer peut être fournie dans revoke. Par défaut, un commit est écris à la fin; -c écrit une transaction uncommited.}
\item[\hspace{1mm} kill\_file filespec]{Désalloue l'inode filespec et ses blocks. Noter que cela ne supprime pas d'entrées répertoire dans cet inode.}
\item[\hspace{1mm} lcd directory]{Change le répertoire de travail courant}
\item[\hspace{1mm} ln filespec dest\_file]{créer un lien nomé dest\_file qui est un lien dure vers filespec. Noter que cela n'ajuste pas le compteur de référence d'inode}
\item[\hspace{1mm} logdump \texttt{[}-acsO\texttt{]} \texttt{[}-b block\texttt{]} \texttt{[}-i filespec\texttt{]} \texttt{[}-f journal\_file\texttt{]} \texttt{[}output\_file\texttt{]}]{Dump le contenu du journal ext3. Par défaut, dump l'inode journal comme spécifié dans le superblock. -i dump le journal depuis l'inode interne donné par filespec. -f spécifie un fichier régulier contenant les données journal. -s utilise les informations de sauvegarde dans le superblock pour localiser le journal. -a affiche le contenu te tous les blocks descripteur, -b affiche tous les enregistrement journaux référés dans le block spécifié, -c affiche le contenu de toutes les données des blocks de données sélectionnés pas -a et -b. -O affiche les anciennes entrées du journal.}
\item[\hspace{1mm} ls \texttt{[}-l\texttt{]} \texttt{[}-c\texttt{]} \texttt{[}-d\texttt{]} \texttt{[}-p\texttt{]} \texttt{[}-r\texttt{]} filespec]{Affiche un listing des fichiers dans le répertoire filespec. le flag -c force les checksum de block répertoire à être affichés. -d liste les entrées supprimées. -l est plus verbeux. -p liste les fichier dans un format plus simple pour les scripts. -r force l'affichage du nom de fichier même s'il est chiffré.}
\item[\hspace{1mm} list\_deleted\_inodes \texttt{[}limit\texttt{]}]{Liste les inodes supprimés, optionnellement limité à ceux supprimés il y a limite secondes. = \textbf{lsdel}}
\item[\hspace{1mm} modify\_inode filespec]{Modifie le contenu de la structure d'inode filespec. = \textbf{mi}}
\item[\hspace{1mm} mkdir filespec]{Créer un répertoire}
\item[\hspace{1mm} mknod filespec \texttt{[}p|\texttt{[}\texttt{[}c|b\texttt{]} major minor\texttt{]}\texttt{]}]{Créer un fichier spécial.}
\item[\hspace{1mm} ncheck \texttt{[}-c\texttt{]} inode\_num ...]{Prend la liste demandée de numéro d'inode, et affiche un listing de chemin vers ces inodes. -c vérifie le type de fichier dans l'entrée répertoire pour s'assurer qu'il match le type d'inode.}
\item[\hspace{1mm} open \texttt{[}-weficD\texttt{]} \texttt{[}-b blocksize\texttt{]} \texttt{[}-s superblock\texttt{]} \texttt{[}-z undo\_file\texttt{]} device]{Ouvre un système de fichier pour l'édition. -f force l'ouverture même s'il a des fonctionnalité incompatibles, -e ouvre le fs en mode exclusif, les autres options ont les même signification que les options de debugfs.}
\item[\hspace{1mm} punch filespec start\_blk \texttt{[}end\_blk\texttt{]}]{Supprime les blocks dans l'inode entre start\_blk et end\_blk. Si end\_blk est omis, cette commande fonctionne comme une commande tronquer, c'est à diste que tous les blocks depuis start\_blk jusqu'à la fin du fichier seront désalloués}
\item[\hspace{1mm} symlink filespec target]{Créer un lien symbolique}
\item[\hspace{1mm} pwd]{Afficher le répertoire de travail courant}
\item[\hspace{1mm} quit]{Quitter debugfs}
\item[\hspace{1mm} rdump directory\texttt{[}...\texttt{]} destination]{Dump récursivement le ou les répertoires, et tous leur contenu dans la destination spécifiée}
\item[\hspace{1mm} rm pathname]{unlink pathname}
\item[\hspace{1mm} rmdir]{Supprime le répertoire filespec}
\item[\hspace{1mm} setb block \texttt{[}count\texttt{]}]{Marque le numéro de block spécifié comme alloué. si count est spécifié, count blocks sont marqués alloués}
\item[\hspace{1mm} set\_block\_group bgnum field value]{Modifie le descripteur de groupe de block bgnum pour que le champ field du descripteur de groupe de block ait la valeur value.}
\item[\hspace{1mm} seti filespec \texttt{[}num\texttt{]}]{Marque l'inode utilisé dans le bitmap d'inode. Si num est spécifié, met num-1 inodes après l'inode spécifié.}
\item[\hspace{1mm} set\_inode\_field filespec field value]{Modifie l'inode spécifié par filespec pour que le champ field ait la valeur value. La liste de champs d'inode valide peut être obtenu avec set\_inode\_field -l. = \textbf{sif}}
\item[\hspace{1mm} set\_mmp\_value field value]{Modifie les données MMP. La liste des champs modifiables peut être obtenu avec set\_mmp\_value -l. = \textbf{smmp}}
\item[\hspace{1mm} set\_super\_value field value]{Définis un champ du superblock. set\_super\_value -l pour lister les champs modifiables. = \textbf{ssv}}
\item[\hspace{1mm} show\_super\_stats \texttt{[}-h\texttt{]}]{Liste le contenu du superblock et des descripteurs de groupe de block. -h n'affiche que le contenu du superblock. = \textbf{stats}}
\item[\hspace{1mm} stat filespec]{Affiche le contenu de la structure d'inode de l'inode filespec}
\item[\hspace{1mm} testb block \texttt{[}count\texttt{]}]{Test si le numéro de block est marqué comme alloué dans le bitmap de block.}
\item[\hspace{1mm} testi filespec]{Test si l'inode est marqué comme alloué dans le bitmap d'inode}
\item[\hspace{1mm} undel <inode\_number> \texttt{[}pathname\texttt{]}]{Récupère le numéro d'inode spécifié.}
\item[\hspace{1mm} unlink pathname]{Supprime le lien spécifié. N'ajuste pas le compteur de référence d'inode}
\item[\hspace{1mm} write source\_file out\_file]{Copie le contenu du fichier source\_file dans un nouveau fichier créé}
\item[\hspace{1mm} zap\_block \texttt{[}-f filespec\texttt{]} \texttt{[}-o offset\texttt{]} \texttt{[}-l length\texttt{]} \texttt{[}-p pattern\texttt{]} block\_num]{Écrase le block spécifié par block\_num avec des 0. -p utilise l'octet spécifié, -f block\_num est relatif au début du fichier. -o et -l limitent la plage d'octets à écraser.}
\item[\hspace{1mm} zap\_block \texttt{[}-f filespec\texttt{]} \texttt{[}-b bit\texttt{]} block\_num]{change les portions du block\_num physique. -f, block\_num est un block logique relatif au début de filespec}
\end{description}
 
\vspace{1cm}{\huge Variables d'environnement }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} DEBUGFS\_PAGER]{debugfs pipe toujours la sortie de certaines commande dans un pager.}
\item[\hspace{1mm} PAGER]{Pager à utiliser}
\end{description}
\end{flushleft}
\end{document}
