linux 启动过程
Linux 系统启动过程
Linux启动过程可以分为5个阶段:
1. 内核的引导
2. 运行 init
3. 系统初始化
4. 建立终端
5. 用户登录系统
流程解析:
1. 内核引导
BIOS
打开计算机电源,系统将有一个对内部设备进行检查的过程,这是由POST(Power On Self Test)程序完成的,这也是BIOS的一个功能。
完整的POST自检将包括CPU、64K基本内存、1M以上扩展内存、ROM、主板、CMOS存储器、串口、显卡、硬盘、键盘。
POST自检的大致过程:通电>CPU>ROM>BIOS>System Clock>DMA>64K RAM>IPR>显卡>硬盘>键盘、鼠标。
CPU-内存-显卡-硬盘,自检过程中若发现问题,系统将会给出提示信息或者鸣笛警告。
寻找磁盘,每一种BIOS都会由开机启动菜单,可以在菜单里设置以那个设备启动系统,如:硬盘、U盘等
MBR(Master Boot Record)
会根据MBR所指的活动中心上寻找系统分区上的bootloader,boot loader称为一段程序,占用446/512/?字节。在boot loader中配置了要引导
操作系统的内核所在的位置,因此BIOS载入内存后,实现了将控制权交给bootloader,bootloader根据用户的设置去读取相应操作系统的内核,
载入内存空间,并解压缩。根据kernel本身的功能在内存中探索硬件并加载硬件驱动程序完成内核初始化,把控制权交给内核。
boot loader grub引导菜单
boot loader有若干种:grub、lilo、spfdisk等。系统读取内存中的grub配置信息
Ubuntu20.04:/boot/grub/grub.cfg
加载kernel(初始化)
根据grub配置的内核镜像路径,系统读取内核镜像,解压缩。
系统将解压后的内核放置在内存中,并调用start_kernel()函数来启动一系列初始化函数并初始化各种设备,完成linux内核环境的搭建,
基于Linux程序就可以正常运转了。
start_kernel(): 内核完成的主要任务:
硬件的特性
硬件驱动初始化
挂在根文件系统
启动init进程
内核在系统启动后的更能:
进程调度、内存管理、文件系统管理、硬件驱动、网络。。。
6.initrd
7.rootfs(/sbin/init) init程序依据inittab文件夹设定运行级别。
内核加载完成之后,第一运行的程序是sbin/init, 读取/etc/inittab文件,进行初始化工作。
/etc/inittab文件主要是设置liunx的启动级别。
Linux系统有7个运行级别(runlevel):
-
- 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
- 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
- 运行级别2:多用户状态(没有NFS)
- 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
- 运行级别4:系统未使用,保留
- 运行级别5:X11控制台,登陆后进入图形GUI模式
- 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
8.init执行/etc/rc.d/rc.sysinit
设定好系统的启动级别后,Linux系统执行第一个用户层文件/etc/rc.d/rc.sysinit脚本程序, 该脚本做的工作:
检测,并以读写方式挂载根文件系统
设定主机名
检测并挂载/etc/fstab中其它文件系统
启动swap分区
初始化外围硬件设备驱动
根据/etc/sysctl.conf设定内核参数
激活udev和selinux
激活LVM和RAID设备
清理过期锁文件和PID文件
装载键映射-->键盘上每个键的功能
9.启动内核文件
具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块
10.执行不同运行级别的脚本程序
根据系统运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务
11.执行/etc/rc.d/rc.local
rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里
12.执行/bin/login程序,启动mingetty,进入登录状态
参考:
https://blog.51cto.com/mrxiong2017/2084767
https://blog.51cto.com/guodayong/1168731
https://blog.csdn.net/weixin_48242422/article/details/121093819
https://blog.csdn.net/weixin_42381214/article/details/121491623