Skip to content

Commit 92f545e

Browse files
committed
✨ feat(WIP): linux 系统启动过程
1 parent ad325cb commit 92f545e

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

os/README.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
POST加电自检-->BIOS(Boot Sequence)-->加载对应引导上的MBR(bootloader)-->主引导设置加载其BootLoader-->Kernel初始化-->initrd—>/etc/init进程加载/etc/inittab
1313

14+
1415
硬件的初始化,图像界面启动的初始化(如果设置了默认启动基本)  
1516

1617
主机RAID的设置初始化,device mapper 及相关的初始化,  
@@ -33,6 +34,70 @@ POST加电自检-->BIOS(Boot Sequence)-->加载对应引导上的MBR(bootloader)
3334

3435
最后根据mingetty程序调用login让用户登录->用户登录(完成系统启动)
3536

37+
### 第一阶段:硬件引导启动阶段
38+
39+
```sh
40+
1.1 POST(Power On Self Test) 加电自检
41+
1.2 BIOS
42+
1.2.1 初始化硬件
43+
1.2.2 查找启动介质
44+
HDD: 查找启动硬盘的第一个扇区(MBR/BootSector)
45+
1.3 MBR
46+
1.3.1 Bootloader(启动装载程序)
47+
GRUB
48+
分区表
49+
50+
```
51+
52+
### 第二阶段:BootLoader 启动引导阶段
53+
54+
```sh
55+
2.1 Stage1
56+
执行 BootLoader 主程序(位于 MBR 前 446个字节),它的作用是启动 Stage1.5 或 Stage2
57+
2.2 Stage1.5
58+
Stage1.5 是桥梁,由于 Stage2 较大,存放在文件系统中,需要 Stage1.5 引导位于文件系统中的 Stage2
59+
2.3 Stage2
60+
Stage2 是 GRUB 的核心映像
61+
2.4 grub.conf
62+
Stage2 解析 grub.conf 配置文件,加载内核到内存中
63+
```
64+
65+
### 第三阶段:内核引导阶段
66+
67+
```sh
68+
3.1 /boot/kernel and Kernel parameter
69+
内核初始化,加载基本的硬件驱动
70+
3.2 /boot/initrd
71+
引导 initrd 解压载入
72+
3.2.1 阶段一:在内存中释放供 kernel 使用的 root filesystem
73+
执行 initrd 文件系统中的 init,完成加载其他驱动模块
74+
3.2.2 阶段二:执行真正的根文件系统中的 /sbin/init 进程
75+
```
76+
77+
### 第四阶段:Sys V init 初始化阶段
78+
79+
```sh
80+
4.1 /sbin/init
81+
4.1.1 /etc/inittab
82+
init 进程读取 /etc/inittab 文件,确定系统启动的运行级别
83+
4.1.2 /etc/rc.d/rc.sysinit
84+
执行系统初始化脚本,对系统进行基本的配置
85+
4.1.3 /etc/rc.d/rcN.d
86+
根据先前确定的运行级别启动对应运行级别中的服务
87+
4.1.4 /etc/rc.d/rc.local
88+
执行用户自定义的开机启动程序
89+
4.2 登录
90+
4.2.1 /sbin/mingetty (命令行登录)
91+
验证通过 执行 /etc/login
92+
加载 /etc/profile ~/.bash_profile ~/.bash_login ~/profile
93+
取得 non-login Shell
94+
95+
4.2.2 /etc/X11/prefdm (图形界面登录)
96+
gdm kdm xdm
97+
Xinit
98+
加载 ~/.xinitrc ~/.xserverrc
99+
```
100+
36101
## Reference
37102

38103
1. <https://www.ruanyifeng.com/blog/2013/02/booting.html>

0 commit comments

Comments
 (0)