Могу ли я перечислить файловые системы, которые может поддерживать работающее ядро?

27

Я пытаюсь определить, какие файловые системы может поддерживать ядро. В идеале в небольшом списке их имен, но я возьму все, что у тебя есть.

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

Oli
источник

Ответы:

12

Могу ли я перечислить файловые системы, которые может поддерживать работающее ядро?

Ну, ответ /proc/filesystems просто неправильный - он отражает только те ФС, которые уже введены в действие, но обычно их гораздо больше:

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

Другой источник, /proc/config.gzкоторый может отсутствовать в вашем дистрибутиве (и я всегда задаюсь вопросом «почему ?!»).

poige
источник
2
Конфигурация ядра Ubuntu включена, просто в другом месте:/boot/config-$(uname -r)
Oli
2
/proc/filesystemsэто не неправильно , это просто неполноценно .
Scai
3
@poige По этой логике твой ответ ужасно неполный и неправильный. /lib/modules/$(uname -r)/kernel/fsбудет помогать только с файловыми системами, которые были включены как модули, а не как встроенные в ядро. Кроме того, имя модуля может не совпадать с именем файловой системы, которое оно предоставляет, и один модуль может предоставлять несколько файловых систем.
Патрик
4
Этот ответ вводит в заблуждение, если модуль не загружен, ядро ​​просто не может загрузить этот тип файловой системы, пока он не будет загружен. Неправильно утверждать, что ядро ​​может загружаться - вы не знаете, может ли оно, пока вы успешно не загрузите модуль. Нет даже гарантии, что вы можете загрузить этот модуль.
Крис Даун
3
@ Пойдж на самом деле я не пропускаю /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к другому каталогу, подходящему для вашего дистрибутива.

Крис Магнусон
источник