我正在尝试检测内核可以支持哪些文件系统。最好是列出他们的名字,但我会拿走你所拥有的一切。
请注意,我的意思不是当前使用的文件系统,只是当前内核理论上可以直接支持的那些(显然,熔断可以支持无限多个)。
答案1
我可以列出正在运行的内核可以支持的文件系统吗?
出色地,回答 /proc/filesystems
显然是错误的——它只反映了那些已经投入使用的 FS,但内核通常可以支持更多的 FS:
ls /lib/modules/$(uname -r)/kernel/fs
另一个来源/proc/config.gz
可能在您的发行版中不存在(我总是想知道“为什么?!”以防万一),但通常可以在启动目录中找到用于构建内核的配置快照以及内核和 initrd 映像。
答案2
/proc/filesystems
例如,列出正在运行的内核支持的所有文件系统类型以及文件系统属性,nodev
以指示该文件系统不受块设备支持。
man 5 filesystems
提供了一些更深入的信息。
答案3
我相信这会给你你想要的:
(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
为适合您的发行版的不同目录。
答案4
太长了;博士
cat /proc/filesystems
将显示您正在运行的内核可以支持哪些文件系统现在。
ls /lib/modules/$(uname -r)/kernel/fs
如果您加载了适当的模块,将提供有关它可以支持哪些附加文件系统的线索。
解释
问题有已经得到了回答,但所有其他答案在某种程度上都是不完整的、误导性的、不真实的,或者至少不再真实了。
来自man 8 mount
(强调我的):
-t, --types fstype
-t 后面的参数用于指示文件系统类型。当前支持的文件系统类型取决于正在运行的内核。有关文件系统的完整列表,请参阅 /proc/filesystems 和 /lib/modules/$(uname -r)/kernel/fs。最常见的是 ext2、ext3、ext4、xfs、btrfs、vfat、sysfs、proc、nfs 和 cifs。
因此,我不能责怪任何建议这些方法的人。但是,正如其他人指出的那样,该/lib/modules/$(uname -r)/kernel/fs
目录包含与文件系统相关的内核模块,这与当前支持的文件系统不同:
- 如果未加载该模块,则当前不支持该文件系统。
- 如果内核内置支持,则文件系统将受支持,但不会显示在模块列表中。
- 不保证模块名称能够 1:1 映射到它们支持的文件系统。
因此,该列表可以包含添加、删除和/或替换。这不是很可靠。可能有一个所谓的“整体内核”,它已经内置了所有内容 - 在这种情况下(诚然不寻常),模块列表将完全为空,但内核仍将支持任意数量的东西 - 当然包括,各种文件系统。
另一方面,这是我的/proc/filesystems
文件的内容:
nodev sysfs
nodev tmpfs
nodev bdev
nodev proc
nodev cgroup
nodev cgroup2
nodev cpuset
nodev devtmpfs
nodev binfmt_misc
nodev configfs
nodev debugfs
nodev tracefs
nodev securityfs
nodev sockfs
nodev bpf
nodev pipefs
nodev ramfs
nodev hugetlbfs
nodev rpc_pipefs
nodev devpts
ext3
ext4
ext2
cramfs
squashfs
vfat
msdos
exfat
iso9660
nodev nfs
nodev nfs4
nodev nfsd
nodev cifs
nodev smb3
ntfs3
nodev autofs
fuseblk
nodev fuse
nodev fusectl
udf
f2fs
nodev efivarfs
nodev mqueue
nodev resctrl
btrfs
nodev pstore
该列表中有一些我的系统从未见过的文件系统,更不用说当前已经安装了。
至少在我的系统上,这就是答案。我无法说出为什么目前接受的答案得出相反的结论;也许这是一个新的发展......