我可以列出正在运行的内核可以支持的文件系统吗?

我可以列出正在运行的内核可以支持的文件系统吗?

我正在尝试检测内核可以支持哪些文件系统。最好是列出他们的名字,但我会拿走你所拥有的一切。

请注意,我的意思不是当前使用的文件系统,只是当前内核理论上可以直接支持的那些(显然,熔断可以支持无限多个)。

答案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

该列表中有一些我的系统从未见过的文件系统,更不用说当前已经安装了。

至少在我的系统上,这就是答案。我无法说出为什么目前接受的答案得出相反的结论;也许这是一个新的发展......

相关内容