理论的学习总是很必要的,但是实际的操作也是不可或缺的,这也许就是两次飞越吧。
在昨天还认为很正确的理论研究,在今天下午的实验中变得一无是处。之前第一篇中不屑的FUSE的运用,目前看来变得很有用处。
下面先简单介绍下整个文件系统的挂载过程。文件系统的挂载分为两个部分。首先是驱动的注册,其次是具体物理设备的mount。在2.4内核中的super_block中维护这一个文件系统的union,但是在2.6以后的内核中,把这个成员去掉了。我之前的两天时间一直在苦苦的追寻却不得,现在想来有点可笑。在2.6内核中是真正通过将文件系统作为一种驱动的方式来维护,这样当编译的时候加载这个模块的时候,驱动通过register_filesystem来将支持的文件系统注册。在之后的mount过程中,通过find_filesystem进行匹配,匹配到的文件系统可以mount成功。
具体的各个部分的实现细节,大家可以查阅相关资料,这里只讲网上没有的部分。