Kann ich die Dateisysteme auflisten, die ein laufender Kernel unterstützen kann?

27

Ich versuche herauszufinden, welche Dateisysteme ein Kernel unterstützen kann. Idealerweise in einer kleinen Liste ihrer Namen, aber ich nehme alles, was Sie haben.

Beachten Sie, dass ich nicht die aktuell verwendeten Dateisysteme meine, sondern nur diejenigen, die der aktuelle Kernel theoretisch direkt unterstützen könnte (offensichtlich könnte Fuse unendlich viele mehr unterstützen).

Oli
quelle

Antworten:

12

Kann ich die Dateisysteme auflisten, die ein laufender Kernel unterstützen kann?

Die Antwort /proc/filesystems ist einfach falsch - sie gibt nur die FSs wieder, die bereits in Gebrauch sind, aber normalerweise gibt es noch einen Weg mehr:

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

Eine andere Quelle /proc/config.gzkönnte in Ihrer Distribution fehlen (und ich frage mich immer, warum ?!).

Poige
quelle
2
Ubuntus Kernel-Konfiguration ist enthalten, nur an einer anderen Stelle:/boot/config-$(uname -r)
Oli
2
/proc/filesystemsist nicht falsch , es ist nur unvollständig .
Scai
3
@poige Nach dieser Logik ist deine Antwort furchtbar unvollständig und auch falsch. /lib/modules/$(uname -r)/kernel/fshilft nur bei Dateisystemen, die als Module aktiviert wurden, nicht bei solchen, die in den Kernel integriert sind. Außerdem stimmt ein Modulname möglicherweise nicht mit dem angegebenen Dateisystemnamen überein, und ein einzelnes Modul kann mehrere Dateisysteme bereitstellen.
Patrick
4
Diese Antwort ist irreführend. Wenn ein Modul nicht geladen ist, kann der Kernel diesen Dateisystemtyp erst dann laden, wenn er geladen ist. Zu behaupten, dass der Kernel ihn laden kann, ist nicht korrekt - Sie wissen nicht, ob dies möglich ist, bis Sie das Modul erfolgreich geladen haben. Es gibt nicht einmal eine Garantie, dass Sie dieses Modul laden können .
Chris Down
3
@poige eigentlich hab ich gar nicht übersehen /proc/config.gz. 1) Es kann nicht garantiert werden, dass das Modul existiert. 2) Ein Modulname stimmt möglicherweise nicht mit dem angegebenen Dateisystemnamen überein, und ein einzelnes Modul kann mehrere Dateisysteme bereitstellen.
Patrick
11

/proc/filesystemslistet alle vom laufenden Kernel unterstützten Dateisystemtypen zusammen mit den Dateisystemattributen auf, nodevum anzuzeigen, dass dieses Dateisystem beispielsweise nicht von einem Blockgerät gesichert wird.

man 5 filesystems gibt etwas ausführlichere Informationen.

Chris Down
quelle
1
Was bedeutet das nodevin der Ausgabe bei dir cat /proc/filesystems?
slm
cat /proc/filesystemsListet auf meinem Arch-Linux-Laptop eine Reihe von "nodev" -Dateisystemen auf, offensichtlich für spezielle Zwecke, sowie ext2, ext3, ext4. Wenn ich /lib/modules/3.11.6-1-ARCH/kernel/fsreinschaue, sehe ich eine Reihe anderer, wie "fats", "btrfs", "reiserfs", die ebenfalls reguläre Dateisysteme auf der Festplatte sind, aber nicht in der /proc/filesystemListe aufgeführt werden. Was ist damit?
Bruce Ediger
1
nodevGibt an, dass es sich bei dem betreffenden Dateisystem nicht um ein physisches Dateisystem handelt, auf dem ein Blockgerät ausgeführt werden muss, sondern um ein virtuelles Dateisystem, das von etwas anderem als einem Blockgerät unterstützt wird.
Jonathan Callen
5
@BruceEdiger: Zeigt /proc/filesystemsnur die Dateisysteme an, die der Kernel geladen hat - bis Sie diese Module in den Kernel einfügen (was normalerweise automatisch geschieht, wenn Sie sie benötigen), kann der Kernel diese Dateisysteme nicht unterstützen.
Jonathan Callen
0

Ich glaube, das wird dir geben, was du willst:

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

Erläuterung

Nach meinem besten Verständnis:

  • cat /proc/filesystems | awk '{print $NF}' | sed '/^$/d' gibt Ihnen alle Dateisysteme, die vom Kernel nativ unterstützt werden (wie sysfs), sowie diejenigen, deren Kernelmodule derzeit geladen sind
  • ls -1 /lib/modules/$(uname -r)/kernel/fs Zeigt eine Liste der verfügbaren Dateisystemmodule für Ihren Kernel an
  • sort -u sortiert die kombinierten Ergebnisse der ersten beiden Befehle mit entfernten Duplikaten (nur eindeutige Ergebnisse anzeigen -u)

Ich lerne immer noch Linux, dies funktioniert unter Arch Linux, aber ich glaube, zumindest für Ubuntu müssen Sie möglicherweise den Pfad /lib/modules/$(uname -r)/kernel/fsin ein anderes Verzeichnis ändern, das für Ihre Distribution geeignet ist.

Chris Magnuson
quelle