学习操作系统有必要了解一下系统的启动过程,这样在面对各种系统故障的时候能快速定位解决问题,下面以Centos来分析linux系统的启动过程。
1、BIOS自检:当开机的时候,系统进行bios自检工作,当识别出第一块硬盘(IDE SCSI)及其空间之后,系统控制将从BIOS传递到引导装载程序
2、引导装载程序(grub lilo):装载第一块硬盘的前512个字节的物理数据扇区即主引导区MBR到内存中,位于此扇区开始位置的引导装载程序将接管系统控制。
(也可以这么理解,在第一步完成之后,加载MBR到内存中,引导装载程序接管系统管制)
3、加载RAM盘:提供了一个最小的linux环境,可在装入实际根文件系统之前执行程序。
4、RAM盘运行init:此程序执行装入真正的根文件系统所需的所有操作。
***装载内核模块:要访问最终的根文件系统,内核需要装载适当的文件系统驱动程序
***管理RAID和LVM:若系统配置在RAID或LVM下保存根文件系统,那么init将设置LVM或RAID以支持稍后对根文件系统的访问
****加载最终的根文件系统:找到根文件系统后,对其进行错误检查并装入。
5、运行根文件系统上的init:如果上面四步都成功的话,将清除RAM盘并读取系统引导配置文件 /etc/inittab执行真正的根文件系统上的init 程序
有关术语说明:
一、/etc/rc.d/rc.sysinit:指系统初始化脚本
初始化的相关内容为:
1、挂载/proc文件系统
2、设置系统时钟
3、一般系统环境变量设置
4、初始化妆USB和HID
5、设置PnP
6、加载键盘映射、加载系统字体、加载系统模块
7、初始化RAID、初始化卷映射
8、检查文件系统、挂载文件系统
9、激活磁盘限额、激活SWAP分区
10、初始化串口设备
11、生成系统启动信息log文件
二、/etc/rc.d/rcX.d/[KS]*:根据运行级别配置服务
K表示终止以K开头的服务
S表示启动以S开头的服务
三、/etc/rc.d/rc.local:执行本地特殊配置
其他:不同运行级别的特殊服务
mingetty:除了运行级别1
xdm/gdm/kdm:运行级别5
init进程
init 进程由linux内核引导运行的,是系统运行中第一个进程,其进程号永远都是1。init 进程运行后将安装其配置文件,引导运行系统所需的其他进程, init 进程将作为这些进程的父进程。
init进程在运行时读取系统引导配置文件/etc/inittab中的信息。
下面是/etc/inittab中的配置信息:如图示
定义各种运行级别
0 - halt (Do NOT set initdefault to this)
1 - Single user mode 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
3 - Full multiuser mode
4 - unused
5 - X11
6 - reboot (Do NOT set initdefault to this)
定义默认的运行级别
id:3:initdefault:
系统初始化
si::sysinit:/etc/rc.d/rc.sysinit
不同级别的脚本调用
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
在2、3、4、5运行级别中启动6个虚拟控制台
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
在5运行级别中启动xdm管理器
x:5:respawn:/etc/X11/prefdm -nodaemon
6、显示源文件
7、登录