Linux启动深度剖析:引导、内核与文件系统初始化
需积分: 0 54 浏览量
更新于2024-08-05
收藏 584KB PDF 举报
Linux系统的启动过程可以分为几个关键阶段,从引导过程到文件系统挂载和应用程序执行。本文将着重讨论这三个阶段:
**引导过程**:
引导过程首先由bootloader启动,例如U-Boot,其源码可以在提供的GitHub仓库中找到:[my-boot](https://github.com/luowei1995/my-boot.git)。在这个阶段,主要使用汇编语言编写,如`arch/arm/kernel/head.s` 和 `head-common.s`。启动过程包括确认内核架构、识别硬件类型、配置内存管理单元(MMU)、初始化页面表、禁用缓存、设置栈指针等基本操作。接着,内核会调用`start_kernel()`函数,进行进一步的初始化。
**内核启动过程**:
采用C语言编写的内核启动流程主要包括两个阶段。第一阶段着重于硬件和体系结构相关的设置,如CPUID保存、机器类型ID设置,以及调用`start_kernel()`。第二阶段则涉及操作系统核心初始化,如控制台设置、初始化内核服务和进程,其中`init/main.c`中的`start_kernel()`函数承担这一角色。
**文件系统启动过程**:
内核启动时,默认采用`noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0`命令行参数。一旦文件系统挂载,执行的首先是`/linuxrc`链接到的`/bin/busybox`。`busybox`的源码显示,它会执行`/etc/init.d/rcS`,这是第一个初始化脚本。`rcS`脚本(如友善之臂提供的`rootfs_qtopia_qt4/etc/init.d/rcS`)在加载时设置了机器名称为" FriendlyARM"。
接着,脚本会挂载虚拟文件系统`/proc`和`/sys`,并临时在`/dev`目录下挂载一个ramfs,以模拟SDRAM。这对于正确创建设备节点文件至关重要。通过`mdev-s`工具,rcS脚本在`/dev`目录下建立必要的设备节点。此外,rcS还设置内核的hotplug handler为`mdev`,以便在设备插入或移除时自动处理。
Linux系统的启动过程是一个复杂而有序的过程,从低级的硬件引导到高级的文件系统管理和初始化服务,每个阶段都是为了确保系统的稳定运行和功能完备。理解这些步骤有助于深入掌握Linux系统的内部运作机制。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-01-11 上传
2012-11-10 上传
2010-01-29 上传
2024-04-29 上传
2021-10-07 上传
2011-10-10 上传
今年也要加油呀
- 粉丝: 26
- 资源: 312
最新资源
- Chrome ESLint扩展:实时运行ESLint于网页脚本
- 基于 Webhook 的 redux 预处理器实现教程
- 探索国际CMS内容管理系统v1.1的新功能与应用
- 在Heroku上快速部署Directus平台的指南
- Folks Who Code官网:打造安全友好的开源环境
- React测试专用:上下文提供者组件实现指南
- RabbitMQ利用eLevelDB后端实现高效消息索引
- JavaScript双向对象引用的极简实现教程
- Bazel 0.18.1版本发布,Windows平台构建工具优化
- electron-notification-desktop:电子应用桌面通知解决方案
- 天津理工操作系统实验报告:进程与存储器管理
- 掌握webpack动态热模块替换的实现技巧
- 恶意软件ep_kaput: Etherpad插件系统破坏者
- Java实现Opus音频解码器jopus库的应用与介绍
- QString库:C语言中的高效动态字符串处理
- 微信小程序图像识别与AI功能实现源码