我需要一种方法来允许用户将磁盘格式化为他们选择的文件系统,就像 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 目录中找到它。