学习如何从零开始开发一个基于磁盘的 Linux 内核文件系统。
您将会学到
了解 Linux 用户进程如何与内核 VFS 层交互,以及内核和文件系统之间的相互作用。
学习如何构建可加载的内核模块,掌握 mkfs 与 fsdb 等支持命令,并了解如何在格式化磁盘(mkfs)时创建额外文件。
通过理解应遵循的过程和操作应实现的顺序,从头开始开发基于磁盘的文件系统
你将介绍如何挂载和卸载文件系统,以及如何在目录、普通文件、硬链接和符号链接上进行所有文件和目录操作。
从简单的 printk 调用理解内核调试技术,到使用 gdb/KGDB 进行源级调试。
要求
描述
本课程将指导你如何从零开始开发 Linux 内核文件系统。
你将全面学习构建命令和内核模块、加载模块、挂载文件系统、卸载和移除模块等操作。所有基本文件/文件系统操作都通过独立的模块支持。内容涵盖文件、目录、符号链接和硬链接的创建,以及文件的读取和写入,深入探讨文件系统与内核的交互。此外,还将介绍如何恢复删除的文件,并分析潜在的安全问题。借助内核模块、mkfs 和 fsdb 命令,SPFS 文件系统仅包含 2300 行代码。源代码可在网上获取,并会每年更新以适配新的 Ubuntu Linux 版本。
你将学习构建新文件系统的策略,了解哪些操作应优先进行,哪些可以稍后处理。
你还将学习如何运用多种技术调试文件系统,从简单的 printk 使用到通过 gdb/KGDB 进行源代码级别的调试。
文件系统设计得相当简单,里面故意包含了一些错误,这有助于我们理解为何操作顺序在文件系统设计中至关重要。
这门课程提供一本免费的在线 Linux 内核文件系统书籍,共 450 页。
此课程面向哪些人:
- 期望深入 Linux 内核开发,特别是在文件系统方面的有经验的开发者