本文通过分析内核挂载和初始化源码剖析内核是如何知道调用的是具体哪个文件系统的函数。
先来看两个函数
![]()
在系统初始化时,register_filesystem() 函数在编译内核时被调用给每个指定的文件系统;该函数插入file_system_type对象到filesystem-type列表中。
该函数也可以在一个模块实现一个文件系统被加载时调用(意思大概就是我们可以手动加载一个模块,该模块是实现一个文件系统时可以被调用)。这种情况下文件系统也可以在卸载模块是被取消注册(通过调用unregister_filesystem函数)。


本文深入探讨Linux内核在挂载文件系统时的识别过程。通过分析`register_filesystem()`和`unregister_filesystem()`函数,了解文件系统的注册与注销。当未指定或指定`auto`类型时,`mount`命令会利用`blkid`或`volume_id`库尝试猜测文件系统类型。挂载流程中,`get_fs_type`函数根据传递的文件系统名称找到对应的`file_system_type`对象,进而调用相应的超级块填充函数,例如`ext4_fill_super`。整个过程揭示了内核如何在挂载时选择正确的文件系统操作。
最低0.47元/天 解锁文章
1400

被折叠的 条评论
为什么被折叠?



