12
votes

Détection du système de fichiers Linux

J'essaie de suivre ce livre gagner un peu de comprendre comment fonctionne le noyau Linux.

Ce que je ne peux pas vraiment envelopper ma tête, c'est que je ne comprends pas comment Linux détecte un type de système de fichiers, il existe un système de fichiers Gazillion pris en charge sous Linux chacun avec ses particularités.

Quelqu'un pourrait-il me diriger à un morceau de code dans le noyau censé distinguer entre disons FAT et EXT4?

Le MBR ne contient pas ce type d'information et le superbloc de chaque type est différent.

Lors de l'émission d'un montage / dev / quel que soit le support Il n'est pas nécessaire d'ajouter le type de système de fichiers.


1 commentaires

BTW, profitez du livre, je pense que c'est une très bonne introduction à la structure du noyau.


3 Réponses :


18
votes

La raison pour laquelle vous ne pouvez pas trouver est parce que, pour la plupart, ce n'est pas dans le noyau - c'est dans l'utilitaire montage , qui se trouve dans le util-linux package. Si vous ne lui donnez pas de type de système de fichiers, ou si vous lui donnez un type de "tout", montage passe simplement dans la liste de tous les systèmes de fichiers que le noyau sait et essaie chacun en ordre jusqu'à ce que l'un d'entre eux monte avec succès (ou renvoie une erreur si aucun d'entre eux ne le fait).

Comment découvre-t-il quels types de systèmes de fichiers le noyau sait? Il lit le fichier / proc / fichier de fichiers , qui marche la liste file_systems lié ​​dans fs / fichiersysts.ca . Lorsqu'un pilote de système de fichiers est chargé, il appelle register_filesystem dans le même fichier pour s'ajouter à cette liste. Par exemple, il y a un appel à register_fileystem in init_ext2_fs in fs / ext2 / super.c - init_ext2_fs est le Module-init Fonction pour le module ext2.

Certains systèmes de fichiers sont des erreurs de bruyance et d'impression sur le journal de débogage du noyau lorsque quelqu'un tente de monter un périphérique avec le mauvais système de fichiers, c'est pourquoi, par exemple, vous pouvez voir des erreurs sur "Système de fichiers XFS invalide" lorsque / em> montage d'un système de fichiers ext4, si Mont est arrivé d'essayer XFS d'abord.


1 commentaires

Et la façon dont le pilote sait s'il est valide, c'est que la plupart des systèmes de fichiers ont un "nombre magique" près du début de la partition qu'elle cherche.



5
votes

de Mount Homme Page:

Si aucune option non est donnée ou si le type automatique est spécifié, le mont va essayer de deviner le type souhaité. Si le mont a été compilé avec la bibliothèque Blkid, la supposition est effectuée par cette bibliothèque. Sinon, le montage se suppose en sondant le superbloc; Si cela ne présente rien qui a l'air familier, le mont tentera de lire les systèmes de fichiers / etc / de fichiers, ou, si cela n'existe pas, / Proc / FileSystems. Tous les types de systèmes de fichiers répertoriés là-bas seront essayés, à l'exception de ceux qui sont étiquetés «NODEV» (par exemple, DevPTS, PROC, NFS et NFS4). Si / etc / FileSystems se termine dans une ligne avec un seul * uniquement, le montage LIRE / PROC / FIXTYSTEMS sera ensuite.

En outre, ma boîte Ubuntu est cette page Mount Man (mention volume_id bibliothèque)

Si aucune option non est donnée ou si le type automatique est spécifié, le mont va essayer de deviner le type souhaité. Mont la bibliothèque Blkid ou Volume_ID pour supposer le type de système de fichiers; Si cela ne renverse rien qui a l'air familier, le montage tentera de lire les systèmes de fichiers / etc / de fichiers, ou si cela n'existe pas, / Proc / FileSystems. Tous des types de systèmes de fichiers répertoriés là-bas seront essayés, à l'exception de ceux qui sont étiquetés "NODEV" (par exemple, DevPTS, PROC et nfs). Si / etc / FileSystems se termine dans une ligne avec un seul * uniquement, le montage LIRE / PROC / FIXTYSTEMS sera ensuite.


1 commentaires

Merci d'avoir souligné cela, malheureusement, je n'ai pas 15 ans de réputation pour vous donner un "bravo"



6
votes

BLKID -O TYPE -S -S TYPE / DEV / PATH / TO / PIED


1 commentaires

Ne pas répondre à la question de l'opération, mais une doublure utile pratique néanmoins