Expand description
§文件系统模块 (FS)
本模块提供了多种具体的文件系统实现,通过实现VFS的FileSystem和Inode trait与虚拟文件系统层集成。
§支持的文件系统
-
tmpfs: 临时文件系统(纯内存)
- 高性能,所有数据存储在内存中
- 支持配置最大容量限制
- 适用于
/tmp、缓存等临时存储
-
procfs: 进程信息伪文件系统
- 动态生成进程和系统信息
- 标准Linux
/proc接口 - 只读,使用Generator模式
-
sysfs: 系统设备伪文件系统
- 导出设备树和属性
- 标准Linux
/sys接口 - 使用Builder模式构建设备树
-
ext4: Linux Ext4文件系统
- 持久化存储支持
- 通过块设备访问
- 支持完整的读写操作
-
simple_fs: 简单测试文件系统
- 编译时嵌入镜像
- 快速启动,用于测试
- 只读,预加载用户程序
§文件系统初始化流程
// 1. 挂载根文件系统(Ext4或SimpleFS)
init_ext4_from_block_device()
.or_else(|_| init_simple_fs())?;
// 2. 创建必要的目录
let root = vfs::get_root_dentry()?;
root.inode.mkdir("dev", FileMode::S_IFDIR | FileMode::S_IRWXU)?;
root.inode.mkdir("proc", FileMode::S_IFDIR | FileMode::S_IRWXU)?;
root.inode.mkdir("sys", FileMode::S_IFDIR | FileMode::S_IRWXU)?;
root.inode.mkdir("tmp", FileMode::S_IFDIR | FileMode::S_IRWXU)?;
// 3. 挂载伪文件系统
init_procfs()?;
init_sysfs()?;
// 4. 挂载tmpfs
mount_tmpfs("/tmp", 64)?; // 64MB
// 5. 初始化设备文件
init_dev()?;§文档参考
详细文档请参阅: document/fs/README.md
§架构说明
FS模块位于VFS层之下,作为VFS的具体实现:
系统调用层 (sys_open, sys_read, ...)
↓
VFS抽象层 (File, Inode, FileSystem traits)
↓
FS实现层 (TmpFs, ProcFS, Ext4, ...) ← 本模块
↓
设备层 (BlockDriver, CharDriver)Modules§
- ext4
- Ext4 - Linux Ext4 文件系统支持
- proc
- ProcFS - 进程信息伪文件系统
- simple_
fs - SimpleFS - 简单测试文件系统
- smfs
- 一个简单的内存文件系统(MemFS)实现。
- sysfs
- Sysfs 虚拟文件系统
- tmpfs
- Tmpfs - 内存临时文件系统
Statics§
- SIMPLE_
FS_ 🔒IMAGE - 嵌入的 simple_fs 镜像 由 build.rs 在编译时生成
Functions§
- create_
devices 🔒 - init_
dev - init_
ext4_ from_ block_ device - 从真实的块设备初始化 Ext4 文件系统
- init_
procfs - 初始化并挂载 procfs 到 /proc
- init_
simple_ fs - 挂载 simple_fs 作为根文件系统
- init_
sysfs - 初始化并挂载 sysfs 到 /sys
- mount_
tmpfs - 挂载 tmpfs 到指定路径