如何列出支持的文件系统?更准确地说,如何确定是否支持 NTFS 等文件系统?

如何列出支持的文件系统?更准确地说,如何确定是否支持 NTFS 等文件系统?

我需要一种方法来允许用户将磁盘格式化为他们选择的文件系统,就像 GParted 那样。我们有使用 NTFS、EXT4、XFS 和 JFS 的设备,所以我主要对这些感兴趣。

我只需要一份支持内容的列表。

GParted 提供了以下可用内容列表:

在此输入图像描述

不过,我无法弄清楚如何获得类似的列表。

该命令cat /proc/filesystems提供以下输出:

nodev   sysfs
nodev   rootfs
nodev   ramfs
nodev   bdev
nodev   proc
nodev   cgroup
nodev   cpuset
nodev   tmpfs
nodev   devtmpfs
nodev   debugfs
nodev   securityfs
nodev   sockfs
nodev   pipefs
nodev   anon_inodefs
nodev   configfs
nodev   devpts
nodev   hugetlbfs
nodev   autofs
nodev   pstore
nodev   mqueue
nodev   selinuxfs
        xfs
nodev   rpc_pipefs
nodev   nfsd
nodev   binfmt_misc
        fuseblk
nodev   fuse
nodev   fusectl
        btrfs
        jfs
        ext3
        ext2
        ext4

不过,这个列表并没有让我清楚地看出 NTFS 是受支持的。它是否包含在不同名称的模块中?我还了解到该命令没有提供完整的列表。

ls -l /lib/modules/$(uname -r)/kernel/fs然后我尝试了提供以下输出的命令:

total 52
drwxr-xr-x. 2 root root    18 Mar  7  2017 9p
-rw-r--r--. 1 root root 21853 Mar  2  2017 binfmt_misc.ko
drwxr-xr-x. 2 root root    21 Mar  7  2017 btrfs
drwxr-xr-x. 2 root root    26 Mar  7  2017 cachefiles
drwxr-xr-x. 2 root root    20 Mar  7  2017 ceph
drwxr-xr-x. 2 root root    20 Mar  7  2017 cifs
drwxr-xr-x. 2 root root    22 Mar  7  2017 cramfs
drwxr-xr-x. 2 root root    19 Mar  7  2017 dlm
drwxr-xr-x. 2 root root    24 Mar  7  2017 ecryptfs
drwxr-xr-x. 2 root root    22 Mar  7  2017 exofs
drwxr-xr-x. 2 root root    20 Mar  7  2017 ext4
drwxr-xr-x. 2 root root    48 Mar  7  2017 fat
drwxr-xr-x. 2 root root    23 Mar  7  2017 fscache
drwxr-xr-x. 2 root root    34 Mar  7  2017 fuse
drwxr-xr-x. 2 root root    20 Mar  7  2017 gfs2
drwxr-xr-x. 2 root root    21 Mar  7  2017 isofs
drwxr-xr-x. 2 root root    20 Mar  7  2017 jbd2
drwxr-xr-x. 2 root root    19 Mar  7  2017 jfs
drwxr-xr-x. 2 root root    21 Mar  7  2017 lockd
-rw-r--r--. 1 root root 19629 Mar  2  2017 mbcache.ko
drwxr-xr-x. 6 root root  4096 Mar  7  2017 nfs
drwxr-xr-x. 2 root root    38 Mar  7  2017 nfs_common
drwxr-xr-x. 2 root root    20 Mar  7  2017 nfsd
drwxr-xr-x. 2 root root  4096 Mar  7  2017 nls
drwxr-xr-x. 2 root root    23 Mar  7  2017 overlayfs
drwxr-xr-x. 2 root root    23 Mar  7  2017 pstore
drwxr-xr-x. 2 root root    24 Mar  7  2017 reiserfs
drwxr-xr-x. 2 root root    24 Mar  7  2017 squashfs
drwxr-xr-x. 2 root root    19 Mar  7  2017 udf
drwxr-xr-x. 2 root root    19 Mar  7  2017 xfs

再次强调,这并没有让我明显看出该系统支持 NTFS。

我目前正在使用 CentOS(默认情况下不支持 NTFS,但通过安装ntfs-3g和添加ntfsprogs),但我需要一个跨平台解决方案来创建受支持的文件系统列表。主要适用于 CentOS、Ubuntu 和 Raspbian。

答案1

首先,我不会假设 GParted 从底层系统检索文件系统列表。它可能只是常见文件系统的硬编码列表。

也就是说,要检测 ntfs 支持,最简单且(可能!)跨平台的方法是查找 mount.ntfs 二进制文件。 RedHat(和 CentOS)的 ntfs-3g 软件包会将其放入 /usr/sbin 中。

但这并不适用于所有文件系统类型;例如,没有 mount.ext4。

您还可以查找 /usr/sbin/mkfs.* ,它可能更完整(并且对您来说也更有趣,因为这是您用来格式化分区的内容)。

不过,这些文件的位置可能因发行版而异,有些可能会将其放入 /sbin,并且您也可能在 /usr/local/sbin 中找到它,特别是如果 NTFS 支持是从源代码编译的。您甚至可能在相应的 /bin 目录中找到它。

相关内容