文件系统驱动开发完整流程
📚 共计 30 章节
01
文件系统概述
什么是文件系统 · 本地/网络/伪文件系统 · VFS作用与地位
基础
VFS
02
内核开发环境搭建
Linux源码获取 · 编译内核 · QEMU调试 · 内核模块基础
环境
QEMU
03
VFS核心数据结构 (上)
超级块 super_block · 索引节点 inode · 目录项 dentry
VFS
结构
04
VFS核心数据结构 (下)
文件对象 file · 文件系统类型注册 · 挂载描述符 mount
VFS
挂载
05
文件系统操作接口
file_operations · inode_operations · super_operations
接口
回调
06
注册与注销文件系统
register_filesystem · unregister · 模块初始化/退出
注册
模块
07
超级块的实现
填充超级块 · 读取磁盘超级块 · 分配与初始化
超级块
磁盘
08
索引节点的实现
inode分配/初始化 · 销毁 · 操作函数实现
inode
核心
09
目录项的实现
dentry创建/查找 · dcache缓存 · 操作函数
dentry
缓存
10
文件的打开与关闭
open()内核路径 · file结构体创建 · close()实现
系统调用
file
11
文件的读写操作
read/write流程 · 同步/异步I/O · page cache
I/O
缓存
12
文件系统布局设计
磁盘分区规划 · 元数据/数据区 · 块大小与块组
布局
磁盘
13
磁盘块管理
位图实现 · 块分配/回收 · 块描述符设计
位图
分配
14
目录结构实现
目录项磁盘存储 · 查找算法 · 增删改查
目录
查找
15
文件数据存储
直接/间接块寻址 · extent树 · 文件空洞处理
寻址
extent
16
文件系统挂载流程
mount系统调用 · 查找类型 · fill_super()
挂载
流程
17
文件系统卸载流程
umount分析 · 同步脏数据 · 释放资源
卸载
同步
18
页缓存 (Page Cache)
address_space · 缓存回写 · 脏页刷新策略
缓存
回写
19
块I/O层 (Block I/O)
bio结构体 · 请求队列 · I/O调度器
块I/O
调度
20
文件系统一致性
日志(Journaling) · 写时复制(CoW) · fsck工具
一致性
日志
21
简易文件系统实战 (一)
项目规划 · 磁盘布局 · 定义磁盘数据结构
实战
布局
22
简易文件系统实战 (二)
超级块读写 · 块分配器实现
实战
分配器
23
简易文件系统实战 (三)
inode分配/读写 · 目录操作实现
实战
inode
24
简易文件系统实战 (四)
文件读写 · 文件系统注册与挂载
实战
挂载
25
简易文件系统实战 (五)
测试调试 · 边界情况 · 性能优化思路
实战
调试
26
调试技巧
printk · ftrace · kprobe · crash工具
调试
追踪
27
性能优化
减少锁竞争 · RCU · 预读策略 · 批量处理
优化
RCU
28
兼容性与可移植性
字节序(大端/小端) · 32/64位兼容 · 跨平台
兼容
移植
29
安全与权限
文件权限 · capability · SELinux · 符号链接攻击
安全
权限
30
文件系统前沿技术
FUSE · ZFS/Btrfs · 持久内存PMFS · NVMe优化
前沿
FUSE