Answers:
我可以列出正在运行的内核可以支持的文件系统吗?
好吧,答案 /proc/filesystems
是错误的,它只反映那些已经投入使用的FS,但是通常还有更多的方法:
ls /lib/modules/$(uname -r)/kernel/fs
另一个来源是/proc/config.gz
您的发行版中可能缺少的那个(我总是想知道“为什么?!”,以防万一)。
/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
,会看到许多其他内容,例如“ fats”,“ btrfs”,“ reiserfs”,它们也是常规的磁盘文件系统,但未出现在/proc/filesystem
列表中。那是怎么回事?
nodev
表示所讨论的文件系统不是需要使用块设备的物理文件系统,而是由除块设备以外的内容支持的虚拟文件系统。
/proc/filesystems
仅显示内核已加载的文件系统-除非您将这些模块插入内核(通常在需要它们时自动发生),否则内核将不支持这些文件系统。
我相信这会给您您想要的:
(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
适合您的发行版的其他目录。
/boot/config-$(uname -r)