Czy mogę wymienić systemy plików obsługiwane przez działające jądro?

27

Próbuję wykryć, jakie systemy plików obsługuje jądro. Idealnie na małej liście ich nazw, ale wezmę wszystko, co masz.

Zauważ, że nie mam na myśli aktualnie używanych systemów plików , tylko te, które bieżące jądro mogłoby teoretycznie obsługiwać bezpośrednio (oczywiście bezpiecznik mógłby obsługiwać nieskończone liczby więcej).

Oli
źródło

Odpowiedzi:

12

Czy mogę wymienić systemy plików obsługiwane przez działające jądro?

Cóż, odpowiedź /proc/filesystems jest po prostu zła - odzwierciedla tylko te FS, które są już w użyciu, ale zwykle jest o wiele więcej:

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

Inne źródło /proc/config.gzmoże być nieobecne w twojej dystrybucji (i zawsze zastanawiam się „dlaczego ?!” w przypadku).

poige
źródło
2
Konfiguracja jądra Ubuntu jest dołączona, tylko w innym miejscu:/boot/config-$(uname -r)
Oli
2
/proc/filesystemsnie jest źle , jest po prostu niekompletny .
scai
3
@poige Zgodnie z tą logiką twoja odpowiedź jest strasznie niepełna i błędna. /lib/modules/$(uname -r)/kernel/fspomoże tylko w systemach plików, które zostały włączone jako moduły, a nie w tych wbudowanych w jądro. Ponadto nazwa modułu może nie zgadzać się z podaną nazwą systemu plików, a pojedynczy moduł może udostępniać wiele systemów plików.
Patrick
4
Ta odpowiedź jest myląca, jeśli moduł nie jest załadowany, jądro po prostu nie może załadować tego typu systemu plików, dopóki nie zostanie. Stwierdzenie, że jądro może się ładować, jest nieprawidłowe - nie wiesz, czy może, dopóki nie załadujesz modułu. Nie ma nawet gwarancji, że możesz załadować ten moduł.
Chris Down
3
@poige właściwie wcale nie przeoczam /proc/config.gz. 1) nie ma gwarancji, że istnieje, 2) Nazwa modułu może nie pasować do podanej przez niego nazwy systemu plików, a pojedynczy moduł może udostępniać wiele systemów plików.
Patrick,
11

/proc/filesystemswyświetla listę wszystkich typów systemów plików obsługiwanych przez działające jądro, wraz z atrybutami systemu plików, nodevaby wskazać, że na przykład ten system plików nie jest wspierany przez urządzenie blokowe.

man 5 filesystems daje bardziej szczegółowe informacje.

Chris Down
źródło
1
Co nodevoznacza w danych wyjściowych, gdy ty cat /proc/filesystems?
slm
Na moim laptopie Arch z linuksem cat /proc/filesystemswymieniono kilka „nodev”, oczywiście systemów plików specjalnego przeznaczenia, a także ext2, ext3, ext4. Kiedy zaglądam do /lib/modules/3.11.6-1-ARCH/kernel/fsśrodka, widzę wiele innych, takich jak „tłuszcze”, „btrfs”, „reiserfs”, które są również zwykłymi systemami plików na dysku, ale nie pojawiają się na /proc/filesystemliście. O co chodzi?
Bruce Ediger
1
nodevwskazuje, że dany system plików nie jest fizycznym systemem plików, który wymaga urządzenia blokowego, ale wirtualnym systemem plików, który jest wspierany przez coś innego niż urządzenie blokowe.
Jonathan Callen
5
@BruceEdiger: /proc/filesystemspokazuje tylko systemy plików załadowane przez jądro - dopóki nie wstawisz tych modułów do jądra (co zwykle dzieje się automatycznie, gdy ich potrzebujesz), jądro nie może obsługiwać tych systemów plików.
Jonathan Callen
0

Wierzę, że to da ci to, czego chcesz:

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

Wyjaśnienie

Na podstawie mojego najlepszego zrozumienia:

  • cat /proc/filesystems | awk '{print $NF}' | sed '/^$/d' daje ci wszystkie systemy plików, które są natywnie obsługiwane przez jądro (jak sysfs) wraz z tymi, które mają aktualnie załadowane moduły jądra
  • ls -1 /lib/modules/$(uname -r)/kernel/fs wyświetla listę dostępnych modułów systemu plików dostępnych dla twojego jądra
  • sort -u sortuje połączone wyniki pierwszych dwóch poleceń z usuniętymi duplikatami (pokazują tylko unikalne wyniki -u)

Wciąż uczę się Linuksa, to działa na Arch Linux, ale wierzę, że przynajmniej dla Ubuntu może zajść potrzeba zmiany ścieżki /lib/modules/$(uname -r)/kernel/fsdo innego katalogu odpowiedniego dla twojej dystrybucji.

Chris Magnuson
źródło