Puis-je répertorier les systèmes de fichiers pris en charge par un noyau en cours d'exécution?


27

J'essaie de détecter les systèmes de fichiers qu'un noyau peut prendre en charge. Idéalement dans une petite liste de leurs noms mais je prendrai tout ce que vous avez.

Notez que je ne veux pas dire les systèmes de fichiers actuels utilisés , juste ceux que le noyau actuel pourrait, en théorie, supporter directement (évidemment, les fusibles pourraient supporter plus de nombres infinis).

Réponses:


12

Puis-je répertorier les systèmes de fichiers pris en charge par un noyau en cours d'exécution?

Eh bien, la réponse /proc/filesystems est tout simplement fausse - elle ne reflète que les FS qui sont déjà utilisés, mais il y a généralement beaucoup plus:

ls /lib/modules/$(uname -r)/kernel/fs

Une autre source est celle /proc/config.gzqui pourrait être absente dans votre distribution (et je me demande toujours «pourquoi?!» Au cas où).


2
La configuration du noyau d'Ubuntu est incluse, juste dans un endroit différent:/boot/config-$(uname -r)
Oli

2
/proc/filesystemsce n'est pas faux , c'est juste incomplet .
scai

3
@poige Selon cette logique, votre réponse est également terriblement incomplète et erronée. /lib/modules/$(uname -r)/kernel/fsn'aidera que les systèmes de fichiers qui ont été activés en tant que modules, pas ceux qui sont intégrés dans le noyau. De plus, un nom de module peut ne pas correspondre au nom de système de fichiers qu'il fournit et un seul module peut fournir plusieurs systèmes de fichiers.
Patrick

4
Cette réponse est trompeuse, si un module n'est pas chargé, le noyau ne peut tout simplement pas charger ce type de système de fichiers tant qu'il ne l'est pas. Affirmer que le noyau peut se charger n'est pas correct - vous ne savez pas si c'est possible jusqu'à ce que vous ayez réussi à charger le module. Il n'y a même aucune garantie que vous pouvez charger ce module.
Chris Down

3
@poige en fait, je ne néglige pas /proc/config.gzdu tout. 1) il n'est pas garanti d'exister, 2) Un nom de module peut ne pas correspondre au nom de système de fichiers qu'il fournit et un seul module peut fournir plusieurs systèmes de fichiers.
Patrick

11

/proc/filesystemsrépertorie tous les types de système de fichiers pris en charge par le noyau en cours d'exécution, ainsi que les attributs du système de fichiers, nodevpour indiquer que ce système de fichiers n'est pas soutenu par un périphérique de bloc, par exemple.

man 5 filesystems donne des informations plus approfondies.


1
Que nodevsignifie la sortie lorsque vous cat /proc/filesystems?
slm

Sur mon ordinateur portable Arch linux, cat /proc/filesystemsrépertorie un tas de "nodev", évidemment des systèmes de fichiers spéciaux, plus ext2, ext3, ext4. Quand je regarde /lib/modules/3.11.6-1-ARCH/kernel/fsdedans, j'en vois un certain nombre d'autres, comme "fats", "btrfs", "reiserfs" qui sont également des systèmes de fichiers sur disque réguliers, mais n'apparaissent pas dans la /proc/filesystemliste. Qu'est-ce qui se passe avec ça?
Bruce Ediger

1
nodevindique que le système de fichiers en question n'est pas un système de fichiers physique qui a besoin d'un périphérique de bloc pour vivre, mais plutôt un système de fichiers virtuel qui est soutenu par autre chose qu'un périphérique de bloc.
Jonathan Callen

5
@BruceEdiger: /proc/filesystemsaffiche uniquement les systèmes de fichiers que le noyau a chargés - jusqu'à ce que vous insériez ces modules dans le noyau (ce qui se produit généralement automatiquement lorsque vous en avez besoin), le noyau ne peut pas prendre en charge ces systèmes de fichiers.
Jonathan Callen

0

Je crois que cela vous donnera ce que vous voulez:

(cat /proc/filesystems | awk '{print $NF}' | sed '/^$/d'; ls -1 /lib/modules/$(uname -r)/kernel/fs) | sort -u

Explication

Sur la base de ma meilleure compréhension:

  • cat /proc/filesystems | awk '{print $NF}' | sed '/^$/d' vous donne tous les systèmes de fichiers pris en charge nativement par le noyau (comme sysfs) ainsi que ceux dont les modules du noyau sont actuellement chargés
  • ls -1 /lib/modules/$(uname -r)/kernel/fs vous donne la liste des modules de système de fichiers disponibles pour votre noyau
  • sort -u trie les résultats combinés des deux premières commandes avec les doublons supprimés (affiche uniquement les résultats uniques -u)

J'apprends toujours linux, cela fonctionne sur Arch linux mais je pense qu'au moins ubuntu vous devrez peut-être changer le chemin /lib/modules/$(uname -r)/kernel/fsvers un répertoire différent approprié pour votre distribution.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.