linux 文件系统启动流程
This is my study note of file system startup process.
系统启动一共可以分为4个阶段:
bootloder阶段
1 | 主要完成第一阶段系统的引导和初始化工作,系统上电后首先是CPU开始工作,引导程序会从ROM中被加载到RAM中,对CPU寄存器 |
bootloder通常被分为两个阶段的原因主要是为了解决一些特定的问题和实现功能。
- 第一阶段
1
2第一阶段的引导程序一般非常的小巧,主要的任务是系统上电或重启时加载第二阶段的引导加载程序,它不依赖于复杂的文件系统或设
备驱动程序,而是直接从引导介质读取固定的数据。 - 第二阶段
1
2经过第一阶段的加载后,第二阶段的引导程序被加载到内存中,进一步初始化系统环境、加载操作系统内核、设置系统参数和启动操作
系统。
uboot阶段
1 | 首先DRAM、串口、flash进行检查,保证uboot的运行环境,同时为linux分配内存空间。初始化网络配置,包括mac地址,通信端口工作 |
内核启动阶段
1 | 主要负责创建进程、绑定进程、划分内存、唤醒核1、加载文件系统等基本工作,首先会生成一个init进程,后续创建的所有进程都是从 |
- 文件系统启动过程
1
2内核启动结束后,会根据用户配置的bootargs初始化文件系统,比如:
配置rdinit=/init,内核会尝试执行文件系统根目录的init,init里面脚本进行初始化 - 一般用户系统根据两种方式初始化:
1
2
3init以及systemed,init一般是嵌入式的文件系统,比如手机系统,一般文件系统只是承载启动和执行命令、脚本的工作,因此可裁剪、
只启动必要服务是首要。第二种systemed拉起服务的,一般是服务器级别的。systemd服务的配置在/etc/systemd/system.conf和/etc/systemd/system/XXX.service,
可以整体配置systemd或者配置单个拉起的任务,很方便。
app启动阶段
1 | 主要负责对各类APP的初始化。 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 风声向寂!
评论
ValineDisqus