Я пытаюсь определить, какие файловые системы может поддерживать ядро. В идеале в небольшом списке их имен, но я возьму все, что у тебя есть.
Обратите внимание, что я не имею в виду используемые в настоящее время файловые системы , только те, которые текущее ядро может теоретически поддерживать напрямую (очевидно, fuse может поддерживать больше бесконечных чисел).
/boot/config-$(uname -r)
/proc/filesystems
это не неправильно , это просто неполноценно ./lib/modules/$(uname -r)/kernel/fs
будет помогать только с файловыми системами, которые были включены как модули, а не как встроенные в ядро. Кроме того, имя модуля может не совпадать с именем файловой системы, которое оно предоставляет, и один модуль может предоставлять несколько файловых систем./proc/config.gz
вообще. 1) он не гарантированно существует, 2) имя модуля может не совпадать с именем файловой системы, которое он предоставляет, и один модуль может предоставлять несколько файловых систем./proc/filesystems
перечисляет все типы файловых систем, поддерживаемые работающим ядром, вместе с атрибутами файловой системы,nodev
чтобы указать, например, что эта файловая система не поддерживается блочным устройством.man 5 filesystems
дает более подробную информацию.источник
nodev
значит на выходе, когда выcat /proc/filesystems
?cat /proc/filesystems
найдете список "nodev", очевидно, файловых систем специального назначения, плюс ext2, ext3, ext4. Когда я заглядываю внутрь/lib/modules/3.11.6-1-ARCH/kernel/fs
, я вижу ряд других, таких как "жиры", "btrfs", "reiserfs", которые также являются обычными файловыми системами на диске, но не появляются в/proc/filesystem
списке. Что с этим?nodev
указывает на то, что рассматриваемая файловая система - это не физическая файловая система, для которой требуется блочное устройство, а виртуальная файловая система, поддерживаемая чем-то иным, чем блочное устройство./proc/filesystems
показывает только файловые системы, загруженные ядром - пока вы не вставите эти модули в ядро (что обычно происходит автоматически, когда они вам нужны), ядро не может поддерживать эти файловые системы.Я верю, что это даст вам то, что вы хотите:
объяснение
Исходя из моего лучшего понимания:
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
к другому каталогу, подходящему для вашего дистрибутива.источник