Чи можу я перелічити файлові системи, які може підтримувати запущене ядро?


27

Я намагаюся виявити, які файлові системи можуть підтримувати ядро. Ідеально в невеликому списку їхніх імен, але я візьму все, що у вас є.

Зауважте, що я не маю на увазі існуючі файлові системи, що використовуються , а лише ті, які поточне ядро ​​могло б теоретично підтримувати безпосередньо (очевидно, запобіжник може підтримувати нескінченну кількість більше).

Відповіді:


12

Чи можу я перелічити файлові системи, які може підтримувати запущене ядро?

Що ж, відповідь /proc/filesystems просто невірний - він відображає лише ті FS, які вже введені у користування, але зазвичай є спосіб більше:

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

Ще одне джерело, /proc/config.gzяке може бути відсутнім у вашому дистрибутиві (і мені завжди цікаво «чому ?!» у випадку).


2
Конфігурація ядра Ubuntu включена просто в іншому місці:/boot/config-$(uname -r)
Oli

2
/proc/filesystemsне помиляється , вона просто неповна .
scai

3
@poige За цією логікою ваша відповідь також жахливо неповна і помилкова. /lib/modules/$(uname -r)/kernel/fsдопоможе лише файловим системам, увімкнутим як модулі, а не тим, які вбудовані в ядро. Крім того, ім'я модуля може не відповідати імені файлової системи, яке він надає, і один модуль може надавати декілька файлових систем.
Патрік

4
Ця відповідь вводить в оману, якщо модуль не завантажений, ядро ​​просто не може завантажити той тип файлової системи, поки він не є. Стверджувати, що ядро ​​може завантажувати його, невірно - ви не знаєте, чи може це до успішного завантаження модуля. Не існує навіть гарантії, що ви можете завантажити цей модуль.
Кріс Даун

3
@poige насправді я зовсім не забуваю /proc/config.gz. 1) це не гарантується, 2) ім'я модуля може не відповідати імені файлової системи, яке він надає, і один модуль може надавати декілька файлових систем.
Патрік

11

/proc/filesystemsперелічує всі типи файлової системи, підтримувані запущеним ядром, а також атрибути файлової системи, nodevщоб вказати, що ця файлова система не підтримується, наприклад, блоковим пристроєм.

man 5 filesystems дає трохи більш глибоку інформацію.


1
Що nodevозначає на виході, коли ти cat /proc/filesystems?
slm

На моєму ноутбуці Arch linux cat /proc/filesystemsперелічено купу "nodev", очевидно, файлових систем спеціального призначення, плюс ext2, ext3, ext4. Коли я заглядаю /lib/modules/3.11.6-1-ARCH/kernel/fs, я бачу ряд інших, таких як "жири", "btrfs", "reiserfs", які також є звичайними файловими системами на диску, але вони не відображаються в /proc/filesystemсписку. Що з цим?
Брюс Едігер

1
nodevвказує на те, що розглянута файлова система - це не фізична файлова система, для якої потрібен блоковий пристрій, а віртуальна файлова система, яка підтримується чимось, крім блочного пристрою.
Джонатан Каллен

5
@BruceEdiger: /proc/filesystemsпоказує лише файлові системи, які ядро ​​завантажило - поки ви не вставите ці модулі в ядро ​​(що зазвичай відбувається автоматично, коли вони вам потрібні), ядро ​​не може підтримувати ці файлові системи.
Джонатан Каллен

0

Я вірю, що це дасть вам те, що ви хочете:

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

Пояснення

На основі мого найкращого розуміння:

  • cat /proc/filesystems | awk '{print $NF}' | sed '/^$/d' дає всі файлові системи, які підтримуються ядром (наприклад, sysfs), а також ті, у яких зараз завантажені модулі ядра.
  • ls -1 /lib/modules/$(uname -r)/kernel/fs надає список доступних модулів файлової системи, доступних для вашого ядра
  • sort -u сортує комбіновані результати перших двох команд із видаленими дублікатами (показують лише унікальні результати -u)

Я все ще вивчаю Linux, це працює на Arch linux, але я вважаю, що для принаймні ubuntu вам може знадобитися змінити шлях /lib/modules/$(uname -r)/kernel/fsдо іншого каталогу, відповідного для вашого розповсюдження.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.