Linux内核启动:根文件系统、根设备与系统调用解析
145 浏览量
更新于2024-07-15
收藏 3.89MB PDF 举报
"本文深入探讨了Linux操作系统中的根文件系统、根设备以及与文件系统操作密切相关的系统调用,包括sys_open、sys_read、sys_write、sys_mount和sys_mknod。文章首先介绍了内核启动时如何从rootfs过渡到实际的根文件系统,涉及ramdisk、cpiok-initrd和image-initrd等概念。接着,讨论了内核如何通过dentry和inode结构来关联文件。最后,提到了ext4文件系统的inode操作接口,并预告了接下来将要探讨的Linux网络相关主题。"
在Linux系统启动时,uboot负责加载kernel映像,并将控制权转交给内核。内核启动初期并没有文件系统,因此必须设置并找到根文件系统(rootfs)。rootfs是内核运行的第一个临时文件系统,用于加载真正的根文件系统。在Linux kernel 4.7.1版本中,这一过程由`start_kernel()`函数开始,该函数保存bootloader传递给内核的参数,并通过`parse_early_param()`解析这些参数。
根设备是挂载根文件系统的特殊设备,其查找是内核启动过程的关键步骤。通常,根设备的标识可以在启动参数中指定,如/dev/hda1或/dev/sda1。在找到根设备后,内核会尝试挂载相应的文件系统,例如ext4、ext3或vfat等。
内核中的dentry(目录项)和inode(索引节点)是文件系统的核心数据结构。dentry代表文件系统中的一个路径元素,可以是目录或文件,而inode存储了关于文件或目录的所有元数据,如权限、大小、修改时间等。当打开一个文件时,系统调用如sys_open会通过路径查找对应的dentry,然后通过dentry获取对应的inode,进一步进行读写操作。
sys_open、sys_read和sys_write是与文件操作密切相关的系统调用。sys_open用于打开文件,返回一个文件描述符;sys_read用于从文件中读取数据;sys_write则用于向文件写入数据。这些调用都涉及到dentry和inode的交互,确保正确地定位和访问文件。
sys_mount是用于挂载文件系统的关键系统调用,它将一个文件系统挂载到指定的挂载点上。挂载操作涉及对vfsmount结构的管理,vfsmount代表了一个已挂载的文件系统实例,包含了该文件系统的根dentry。
sys_mknod则用于创建特殊文件,如字符设备文件或块设备文件,它允许用户创建设备节点,使得应用程序能够直接与硬件交互。
文章中还提到了ext4文件系统的inode操作接口,ext4是Linux广泛使用的日志文件系统,其inode接口提供了创建、删除、修改文件元数据的功能。
作者计划在后续的文章中探讨Linux网络相关的内容,包括socket创建、send/receive、内核路由、邻居机制、网卡设备创建等,以及vlan接口的创建和vlan头的处理。
这篇文章详细介绍了Linux内核启动过程中根文件系统和根设备的设定,以及与文件系统操作相关的系统调用,对于理解Linux内核的工作原理具有很高的参考价值。
2021-05-27 上传
2010-02-06 上传
点击了解资源详情
点击了解资源详情
2023-07-16 上传
2024-11-19 上传
2024-11-19 上传
2024-11-19 上传
weixin_38517904
- 粉丝: 4
- 资源: 967
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析