目录
Linux的引导过程
Linux操作系统概述1——操作系统、Shell、Kernal内核讲解-优快云博客
Linux操作系统概述3——进程相关操作讲解(进程概念、xinetd守护进程、进程管理命令)-优快云博客
同Linux系统的引导过程大体一致,不一样的是管理方式不一样,过程是一样的
以下的介绍是以CentOS6为例子的
启动系统内核
BIOS开机自检
BIOS开机自检也称为加电自检,是计算机BIOS的一个功能,在开机后会运行
针对计算机进行硬件检测,包含CPU、内存、硬盘等
自检过程中发现故障后会通过某些方式来提示硬件问题(告警灯、显示屏、LED等)
MBR引导
自检完成后BIOS中定义的BOOT启动项去寻找具有MBR引导程序的硬盘,启动该系统
如果启动盘有多个,则依次去检查,如果第一个启动盘有MBR引导,则就启动该启动盘,否则依次往下检查;如果检查中遇到启动盘的MBR引导程序有故障,会停留在该错误的界面,需要我们去排查故障
GRUB菜单
MBR引导结束后,进行GRUB菜单选择(如果启动盘有多个系统,选择哪个系统)
GRUB包含三个部分
Stage1 存储于MBR中前446字节,用于实现引导Stage2
Stage1.5 存储于/boot/grub目录中,用于识别内核所在分区的文件类型
Stage2 存储于/boot/grub目录中,结合grub.conf配置文件实现引导操作系统
具体工作
确定设备的MBR后,会将计算机的控制权转交给MBR中位于前446字节的Stage1
然后引导stage1.5,结合stage2实现操作系统的选择
启动Kernel
启动所选系统的内核(Kernel),再次检查硬件设备,并加载设备启动所需要的驱动
硬件设备驱动是在系统内的,我们现在还没有启动系统,如何加载驱动
需要使用内核下或者BOOT根分区下的initramfs.img文件来加载驱动
initramfs.img文件是在内核启动时提供一个基本的,最小的文件系统,以便于内核能够访问系统所需要的驱动程序和工具并启动,以此来进入到真实的系统中
kernel初始化过程
- 启动所选系统的内核
- 进行设备检查探测
- 进行驱动初始化(可能从initrd(initramfs)文件中装载设备驱动模块)
- 以只读挂载根文件系统
- 装载第一个进程init(PID:1)
启动init进程
进入到真实的操作系统中之后,此时就需要启动相关服务、进程
init进程是系统所有进程的起点(PID为1),其它进程都为此进程的子进程;作用是初始化系统环境
读取/etc/inittab配置文件——定义了系统运行级别
运行init进程需要读取的/etc/inittab配置文件,该配置文件定义了系统的运行级别、/etc/rc.d、rc.sysinit文件夹、/etc/rc.d/rc[0-6].d文件夹以及mingetty进程
系统运行级别
通过该配置文件来识别系统启动到哪个运行级别下;不同的运行级别对应不同的运行模式,不同的运行模式系统所需要提供的服务是不一样的
0级别是关机
1级别 单用户
2级别 多用户,但是没有网络服务
3级别 多用户,全功能(一般为3级别)
4级别 系统保留,不会使用
5级别 图形化界面
6级别 重启
/etc/rc.d/rc.sysinit文件——存放系统初始化脚本
包含主机名、挂载的磁盘分区、关闭SELinux等初始化工作
etc/rc.d/rc[0-6].d文件——存放各种服务的启动/关闭脚本
通过该文件下的信息来识别需要开启/关闭该运行级别下需要开启/关闭的应用服务,并需要读取开机自启动文件(/etc/rc.d/rc.local文件)下的应用或服务将其开启
K开头表示关闭该服务、L开头表示开启该服务;先关闭服务,再开启服务
mingetty进程
运行mingetty进程打开登录窗口,同时执行/bin/login跳出登录界面,输入用户名密码登录到系统,进行相应的操作