介质文件系统和系统文件系统,df -Th可以查看节点的系统文件系统
列出内核已注册的文件系统驱动 [rootautoelec ] # cat /proc/filesystems nodev sysfs nodev rootfs nodev tmpfs nodev bdev nodev proc nodev devtmpfs nodev configfs nodev debugfs nodev sockfs nodev pipefs nodev ramfs nodev devpts ext3 ext2 ext4 squashfs vfat yaffs yaffs2 nodev mqueue fuseblk nodev fuse nodev fusectl msdos ntfs exfat [rootautoelec ] # 查看已挂载设备的文件系统 [rootautoelec ] # df -Th Filesystem Type Size Used Available Use% Mounted on udev tmpfs 182.1M 16.0K 182.1M 0% /dev /dev/mmcblk2p4 ext4 59.0M 39.3M 18.4M 68% /hat/app0 /dev/mmcblk2p11 ext4 45.2M 3.5M 40.8M 8% /hat/log /dev/mmcblk2p6 ext4 1.9M 808.0K 1008.0K 44% /hat/config /dev/mmcblk2p15 ext4 3.8M 115.0K 3.4M 3% /hat/secure /dev/mmcblk2p1 vfat 28.6G 28.4G 253.5M 99% /tmp/mmc21 /dev/mmcblk0p1 vfat 29.1G 27.9G 1.2G 96% /tmp/mmc01查看已挂载设备的文件系统df -Th内核支持的文件系统列表cat /proc/filesystems以下是关于 **介质文件系统MFS** 和 **系统文件系统SFS** 的解析结合代码的详细说明---### **1. 基本概念**#### **介质文件系统MFS, Medium File System**- **定义**存储设备如 SD 卡、U 盘上实际使用的文件系统格式。- **特点**- 直接管理物理存储块如 FAT32 的簇、ext4 的 inode。- 与设备兼容性相关如相机通常要求 SD 卡为 FAT32/exFAT。- **常见类型**cMEDIUM_FORMAT_FAT32 / FAT16 / NTFS / exFAT / EXT4 / YAFFS2#### **系统文件系统SFS, System File System**- **定义**操作系统内核中对应的文件系统驱动类型。- **特点**- 是内核识别和挂载介质文件系统的接口。- 名称可能与介质文件系统不同如 FAT32 在 Linux 中对应 vfat 驱动。- **常见类型**cSYS_MEDIUM_FS_VFAT / NTFS / EXFAT / EXT4 / YAFFS2---### **2. 核心区别**| **维度** | **介质文件系统MFS** | **系统文件系统SFS** ||----------------|--------------------------------------|--------------------------------------|| **作用层级** | 存储设备上的数据组织格式 | 内核中用于解析该格式的驱动模块 || **命名差异** | 通用标准名称如 FAT32 | 内核实现名称如 vfat || **修改方式** | 通过格式化工具mkfs | 通过内核配置或模块加载 || **示例对应** | MEDIUM_FORMAT_FAT32 → FAT32 格式 | SYS_MEDIUM_FS_VFAT → Linux 的 vfat 驱动 |---### **3. 代码解析**#### **函数功能**cINT32 medium_manager_convert_mfs_to_sfs(MEDIUM_FORMAT_TYPE_E eType, SYS_MEDIUM_FS_TYPE_E *eFsType)- **作用**将介质的文件系统类型用户层转换为系统内核支持的文件系统类型驱动层。- **参数**- eType输入参数介质格式如 MEDIUM_FORMAT_FAT32。- eFsType输出参数返回系统文件系统类型如 SYS_MEDIUM_FS_VFAT。#### **转换逻辑**cswitch(eType) {case MEDIUM_FORMAT_FAT32:case MEDIUM_FORMAT_FAT16:*eFsType SYS_MEDIUM_FS_VFAT; // FAT16/32 均使用 Linux 的 vfat 驱动break;case MEDIUM_FORMAT_NTFS:*eFsType SYS_MEDIUM_FS_NTFS; // NTFS 直接对应break;case MEDIUM_FORMAT_EXFAT:*eFsType SYS_MEDIUM_FS_EXFAT; // exFAT 直接对应break;default:*eFsType SYS_MEDIUM_FS_EXFAT; // 默认 fallback 到 exFAT}- **关键点**- FAT16/32 在 Linux 中统一由 vfat 驱动处理代码合并逻辑。- YAFFS2 是嵌入式专用文件系统通常用于 NAND 闪存。- 默认返回 exFAT 可能是因兼容性或项目需求。---### **4. 为什么需要这种转换**1. **内核与用户层的命名差异**- 用户格式化工具如 mkfs.fat使用 FAT32但内核模块名为 vfat。2. **统一驱动接口**- 不同介质文件系统可能共享同一内核驱动如 FAT16/32 均用 vfat。3. **安全性与抽象**- 用户层不直接操作内核驱动需通过中间层转换。---### **5. 实例说明**- **用户操作**用 mkfs.vfat 格式化 SD 卡为 FAT32介质文件系统。- **系统挂载时**内核需加载 vfat 驱动系统文件系统来解析该卡。- **代码作用**当用户指定 MEDIUM_FORMAT_FAT32 时函数返回 SYS_MEDIUM_FS_VFAT告知内核使用 vfat 驱动挂载。---### **6. 扩展知识**- **查看内核支持的文件系统**bashcat /proc/filesystems # 列出已注册的文件系统驱动- **手动加载驱动**如 NTFSbashsudo modprobe ntfs # 加载 ntfs 内核模块通过这种转换机制系统可以灵活支持多种存储设备同时保持用户层与内核层的解耦。