一图流理解:Linux系统启动过程中都经历了什么?
![fdccd165a2ae949ffaede1e1b87d2446.png](https://i-blog.csdnimg.cn/blog_migrate/6a800b3025f1fcaf9117fe00342c9826.jpeg)
将主要过程提取出来,接下来我们将按顺序分析每个条目
![5c026ae0abc0a58305454fd87c724365.png](https://i-blog.csdnimg.cn/blog_migrate/458dba2cf6b8983192b82dbeee22a4eb.jpeg)
- BIOS自检
检测硬件故障;选择磁盘驱动器
- 读取MBR
主引导记录(Master Boot Record)
- 读取GRUB菜单
选择启动哪个操作系统/内核
- 启动内核
初始化设备
- 运行 init
初始化操作系统
- 运行其它程序
- 启动完成
一.MBR
主引导记录,一般是磁盘的第一个扇区,编号0。
包含主引导程序(Bootloader)、 硬盘分区表 DPT 和硬盘有效标志(55AA)。
读取分区表,识别文件系统后,加载grub程序
通过dd,mount,救援模式备份/恢复磁盘分区表[1]
二.GRUB
配置文件 /boot/grub/grub.conf
![3204ca4f9d41db5fa1b892cdb76b1160.png](https://i-blog.csdnimg.cn/blog_migrate/40ac24c09c17ddb0da17a5d317720996.jpeg)
此一步页面如下:
![aeea6ee4b98d89f8434abb713912544f.png](https://i-blog.csdnimg.cn/blog_migrate/b60ad4eec469ee53241d15656496f30c.png)
忘记root密码时,可以按 E 进入编辑模式,重置root密码[2]
三.内核-kernel
内核是操作系统对接硬件的第一层软件集合,主要负责存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用
查看内核命令:
cat /proc/version
uname -a
查看操作系统命令:
cat /etc/issue
cat /etc/redhat-release
lsb_release -a
四.init进程
init是内核启动的第一个用户级进程,顾名思义,该程序就是进行OS初始化操作
是所有进程的父进程[3]
第一个被执行的脚本为/etc/rc.d/rc.sysinit,这个脚本的实际功能包括:
- 激活udev和selinux;
- 根据/etc/sysctl.conf文件,来设定内核参数;
- 设定系统时钟;
- 装载硬盘映射;
- 启用交换分区;
- 设置主机名;
- 根文件系统检测,并以读写方式重新挂载根文件系统;
- 激活RAID和LVM设备;
- 启用磁盘配额;
- 根据/etc/fstab,检查并挂载其他文件系统;
- 清理过期的锁和PID文件
五.运行级别-Runlevel
runlevel,运行级别,不同的级别会启动的服务不一样,init会根据定义的级别去执行相应目录下的脚本,Linux的启动级别分为以下几种
0:关机模式
1:单一用户模式(直接以管理员身份进入)
2:多用户模式(无网络)
3:多用户模式(命令行)
4:保留
5:多用户模式(图形界面)
6:重启
修改linux运行级别步骤:
vim /etc/inittab;
修改 id:5:initdefault
表示当前系统默认运行级别是5
替换为其他,不能是0或6[4]
致谢:
本文内容细节来源于网络,经个人整理,感谢所有乐于分享技术经验的工程师们
参考
- ^https://zhidao.baidu.com/question/303958230570501884.html
- ^https://jingyan.baidu.com/article/a3aad71a18c2bcb1fb0096b8.html
- ^https://baike.baidu.com/item/%E7%88%B6%E8%BF%9B%E7%A8%8B/614062?fr=aladdin
- ^https://jingyan.baidu.com/article/e2284b2b3e6088e2e7118d77.html