Linux kernel 如何在挂载的时候确定具体文件系统类型

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文通过分析内核挂载和初始化源码剖析内核是如何知道调用的是具体哪个文件系统的函数。

 

一:文件系统注册结构体函数(参考:https://books.google.co.jp/books?id=h0lltXyJ8aIC&pg=PT498&lpg=PT498&dq=struct+file_system_type&source=bl&ots=gP5rKV8fKT&sig=ACfU3U0GOHI4xtDWlFbLBKh6G8swkzA-ig&hl=en&sa=X&ved=2ahUKEwjd_rnI85fkAhXpxYsBHVneC6k4ChDoATAGegQICBAB#v=onepage&q=struct%20file_system_type&f=false

   先来看两个函数

在系统初始化时,register_filesystem() 函数在编译内核时被调用给每个指定的文件系统;该函数插入file_system_type对象到filesystem-type列表中。

该函数也可以在一个模块实现一个文件系统被加载时调用(意思大概就是我们可以手动加载一个模块,该模块是实现一个文件系统时可以被调用)。这种情况下文件系统也可以在卸载模块是被取消注册(通过调用unregister_filesystem函数)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值