本篇文章以S3C6410公版的Linux BSP和U-Boot来进行分析,文中所有提及的名词和数据都是以该环境为例,所有的代码流程也是以该环境为例来进行分析。哈哈。如果有不正确或者不完善的地方,欢迎前来拍砖留言或者发邮件到[email protected]进行讨论,先行谢过。 简单的来说,根文件系统包括虚拟根文件系统和真实根文件系统。在Kernel启动的初始阶段,首先去创建虚拟的根文件系统,接下来再去调用do_mount来加载真正的文件系统,并将根文件系统切换到真正的文件系统,也即真实的文件系统。 ### Linux根文件系统挂载过程详解 #### 一、引言 本文主要针对S3C6410公版Linux BSP(Board Support Package)及U-Boot环境下对Linux根文件系统的挂载过程进行深入分析。文章中涉及的所有名词、数据及代码流程均以此环境为背景。若发现任何不准确或不足之处,敬请读者不吝赐教,可通过电子邮件[email protected]进行交流。 #### 二、根文件系统概述 ##### 2.1 根文件系统定义 在Linux系统中,“/”代表根目录,它是系统中唯一的顶级目录,其他所有目录均为其子目录或孙目录。与Windows操作系统中的多个逻辑盘根目录不同,Linux仅有一个根目录。例如,在S3C6410公版中,通常将mtdblk2分区作为根文件系统挂载点。 ##### 2.2 根文件系统的分类 根文件系统分为两种类型: - **虚拟根文件系统**:在系统启动初期创建的一个临时文件系统,用于过渡至真实根文件系统。 - **真实根文件系统**:包含完整文件系统结构的分区,是系统运行时真正使用的根文件系统。 #### 三、相关概念 ##### 3.1 Initrd Initrd(Initial RAM Disk)是一种在系统启动过程中由Bootloader加载到内存中的临时文件系统。它包含了必要的驱动程序和文件,用于加载真实的根文件系统之前提供基本的服务和支持。 - **第一阶段**:执行Initrd中的脚本或程序,完成驱动程序的加载和其他必要的初始化任务。 - **第二阶段**:切换到真实的根文件系统,并执行/sbin/init。 在S3C6410公版中,通常采用RAMDisk Initrd的形式,即Linux Kernel与Initrd分别加载到内存中。 #### 四、根文件系统加载流程分析 ##### 4.1 VFS(Virtual File System)的注册 **启动过程中的关键步骤**: - **函数start_kernel()**:内核启动过程的核心函数之一,负责初始化各种核心组件和服务。 - **函数vfs_caches_init()**:用于初始化VFS相关的缓存和数据结构。 - **mnt_init()**:创建一个虚拟的根文件系统,并将其配置为当前的根文件系统。 - **init_mount_tree()**: - 创建虚拟根文件系统。 - 将其配置为当前的根文件系统。 **具体实现**: - **代码[1]**:创建虚拟根文件系统。 - **代码[2]**:注册根文件系统。 ##### 4.2 VFS的挂载 **后续步骤**: - **rest_init()**:启动系统初始化过程。 - **Kernel_Init进程**:负责调用所有模块的初始化函数,其中包括根文件系统的初始化。 **代码分析**: - **rest_init()**:创建Kernel_Init进程。 - **Kernel_Init()**:调用各个模块的初始化函数,其中包括根文件系统的初始化。 - 调用`do_mount()`函数挂载真实根文件系统。 #### 五、总结 在Linux系统启动过程中,根文件系统的挂载是一个复杂而关键的过程。首先创建一个虚拟的根文件系统来确保系统能够正常初始化必要的驱动和服务,随后将真实的根文件系统挂载到系统中,从而完成系统的启动过程。这一过程涉及到VFS的注册与挂载等多个步骤,对于理解Linux系统的启动机制具有重要意义。





















剩余24页未读,继续阅读


- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 网络电视(IPTV)技术在北京石景山鲁谷小区的应用.doc
- 网络游戏账号交易协议书范本.doc
- 办事处项目管理手册.doc
- 企业认证抄报综合数据采集系统.ppt
- 某小区宽带网络工程施工竣工文档.docx
- 函数的连续性和运算法则.ppt
- (人脸识别考勤)基于SpringBoot Vue线上教学系统 java毕业设计,基于微信小程序,基于安卓App,机器学习,大数据毕业设计,Python+Django+Vue ,php ,node.js
- 同轴电缆网络.pptx
- 通信维护个人年度考核总结5篇.docx
- 网络化财务管理整体性案例XX0423.ppt
- 机器学习研究及最新进展.ppt
- 最新国家开放大学电大《人体生理学(专)》网络核心课形考网考作业及答案.pdf
- 本科设计基于AVR单片机的数据采集系统设计.doc
- 网络营销的市场环境.ppt
- 基于WEB构建的财富快车电子商务系统决赛方案.doc
- 大学生与网络的社会调查报告docdoc.doc


