Linux根文件系统挂载过程解析
版权申诉
52 浏览量
更新于2024-09-03
收藏 15KB DOCX 举报
"Linux根文件系统挂载过程详解"
在Linux操作系统中,根文件系统(root file system)是系统启动时必须挂载的第一个文件系统,它包含了操作系统运行所需的基本程序和配置文件。当遇到如描述中所述的问题,即无法挂载rootfs时,理解挂载过程的细节至关重要。以下是对Linux根文件系统挂载过程的详细解析。
1. **内核启动与初始化**
- 内核启动后,首先会执行一些基本的硬件初始化和内存管理设置。
- 然后,内核尝试识别并加载root设备,这个设备通常包含rootfs。
2. **设置挂载标志**
- 在挂载rootfs之前,可能会设置一些挂载标志,例如`PF_FREEZER_SKIP`,该标志可能用于跳过冻结进程,以便于挂载操作。
3. **启动初始化脚本**
- `kernel_thread`函数用于创建一个新的内核线程来执行初始化脚本,例如`/linuxrc`。
- 这个脚本会进行必要的系统设置,如网络、设备驱动等,并准备rootfs的挂载。
4. **挂载操作**
- 使用`sys_mount`系统调用将旧的rootfs(/old)移动到/new_root或/initrd目录。
- 然后,将新的rootfs挂载到根目录(/),这通常通过`MS_MOVE`标志实现,将一个已挂载的文件系统移到另一个挂载点。
- 如果root设备是RAMDisk(Root_RAM0),则会切换到/initrd目录。
5. **切换工作目录**
- 使用`sys_fchdir`和`sys_chroot`系统调用来改变当前工作目录至新rootfs,并使进程的视图限于新的根目录。
6. **处理旧rootfs**
- 尝试将旧的rootfs挂载到/root/initrd,如果成功,会打印"okay";否则,处理错误,如打开/dev/root.old失败或umount失败。
- 如果旧rootfs是ramdisk,系统会尝试卸载它并释放内存。
7. **挂载根设备**
- `new_decode_dev`函数用于解析实际的root设备,然后调用`mount_root`函数挂载它。
- `mount_root`会检查根设备类型(如ext4、vfat等)并执行相应的挂载操作。
8. **错误处理**
- 在挂载过程中,任何错误都会被记录并可能触发相应的恢复或通知机制。
了解这些步骤有助于调试和解决挂载rootfs时遇到的问题。如果在编译新内核时遇到rootfs挂载问题,可能的原因包括内核配置错误、root设备识别错误、初始化脚本问题或者挂载参数不正确等。通过深入理解这个过程,我们可以更有效地定位问题并找到解决方案。
2021-09-26 上传
131 浏览量
142 浏览量
115 浏览量
335 浏览量
208 浏览量
494 浏览量
167 浏览量
143 浏览量
ziyoudianzi15
- 粉丝: 0
- 资源: 2万+
最新资源
- Object Oriented Analysis and Design ——Understanding System Development with UML 2.0
- 数据结构, 浙大的PPT哦,很值得一看, 不过是基础篇
- 软件工程实验指导书(包括两个实验)
- Linux系统指令大全.pdf
- javaScript+验证总结
- Java数据结构 线性表,链表,哈希表是常用的数据结构
- DDR2 SDRAM 操作时序规范 中文版
- A Beginner’s Introduction to Computer Programming
- 索引Index的优化设计
- 软件建模技术教程样节_3.2类.pdf
- 国防科技大学TSM(成功sql,db2,oracle)
- 微软Word_vba范例源代码
- 3G技术普及手册(华为内部版)
- AVS视频标准研究 pdf
- Autonomy白皮书
- Oracle 面试 22种问题