阶段1、POST
(Power On Self Test) 开机自检、(Basic Input Output System) 基本输入 输出系统
计算机通电(短路“PWR|POWER|GND"插针)之后,计算机会加载BIOS信息,对CPU、主板、内存、磁盘等器件进行检查,并提取硬件信息,按BIOS信息中的引导顺序(Boot Sequence),来选择首先去读取哪个磁盘信息。
----------------------------------------------------------------------------------------------------------------------------
阶段2、MBR
(Mai Boot Record)主引导记录
计算机将去读取第一个有MBR信息的磁盘。如第1个磁盘中的MBR已损坏,将不会读取第2个磁盘的MBR,如第1个磁盘中无MBR信息,将顺延读取第2个磁盘。
MRB位于磁盘第0磁盘第一个扇区,为512字节。
其中446字节-为主引导程序
将系统控制转给用户指定的并在分区表中登记了的某个系统。
另外64字节-用于标记分区信息,每16个字节标记一个分区
主分区只能有四个,逻辑分区可以由多个,扩展分区只能有一个。
最后2字节-用于标记该MRB信息是否有效
----------------------------------------------------------------------------------------------------------------------------
阶段3、boot loader
Boot Loader 引导加载程序
是在操作内核运行之前的一段小程序,用于初始化硬件设备,建立内存空间映射图,“营造”一个适合操作系统运行的环境,以便调用操作系统内核做好准备。
Boot Loader类型(主要有以下几种,重点详介绍GRUB)
LILO:LInux LOader linux磁盘引导程序
GRUB:GRand Unified Bootloader 统一引导装载程序(LILO替代程序)
stage1:执行MRB中的前446字节程序(为了引导stage2)
stage1.5:识别文件系统,
stage2: /etc/grub/grub.conf (底文有详解)
----------------------------------------------------------------------------------------------------------------------------
阶段4、Kernel 内核装载
内核将解压压缩包里的内容,并将内核放置在内存之中,调用start_kernel1()函数。完成一下过程。
1、设备探测
2、驱动初始化(可能会从initrd文件中装载驱动模块)
3、以只读挂载根文件系统
4、装载第一个进程init (PID:1)
----------------------------------------------------------------------------------------------------------------------------
阶段5、VFS(initrd)
内核挂载根文件系统的桥梁,用于解决内核要挂载根文件系统需先由文件系统驱动,根文件系统要提供驱动则先挂载根的问题。
VFS (Virtual File System) 伪文件系统。使用cpio归档,含各主要目录,内核装载时由initrd来代替根文件系统提供一切的所需的动力,完成装载之后自我损毁。
initrd目录中有nash脚本,作用如下
1、驱动初始化
2、加载内核模块
3、挂载swap交换空间
4、指定根文件系统的系统类型及放置于哪个盘区下
5、以只读挂载根文件系统
----------------------------------------------------------------------------------------------------------------------------
阶段6、initrd(/etc/inittab,底文有详解)
1、设定默认运行级别;
2、运行系统初始化脚本(/etc/rc.d/rc.sysinit)、需要区别与内核初始化;
3、运行指定运行级别对应的目录下的脚本(/etc/rc0.d-rc6.d)
4、设定Ctrl+Alt+Del组合键的操作
5、定义UPS电源故障/恢复时执行的操作
6、启动虚拟终端(2345级别)
7、启动图形终端(5级别)
----------------------------------------------------------------------------------------------------------------------------
阶段7、 /etc/rc.d/rc.sysinit
1、激活udev和selinux 近200行
2、根据/etc/sysctl.conf文件,来设定内核参数
3、设定时钟
4、装载键盘映射
5、启用交换分区
6、设置主机名
7、根文件系统检测,并以读写方式重新挂载;
8、激活RAID和LVM设备;
9、启用磁盘配额
10、根据/etc/fstab,并检查挂载其他文件系统
11、清理过期的锁和PID文件
----------------------------------------------------------------------------------------------------------------------------
阶段8、 /etc/rc.d/rcX.d
启动对应级别需要启动和关闭的程序(脚本)
S表示启动 K表示停止,原则:开机时越早启动的,关机时越晚关闭,反之,避免依赖关系有所冲突。
----------------------------------------------------------------------------------------------------------------------------
阶段9、 /etc/rc.d/rc.local
开机完毕前系统最后执行的一个脚本文件,为sh脚本
----------------------------------------------------------------------------------------------------------------------------
阶段10、 /bin/login
执行/bin/login程序,打印出系统信息提示,并显示Login,输入正确账号和密码既能进入文件系统。
显示信息由该文件提供: /etc/issue
账号密码认证文件:/etc/nsswitch.conf
当显示账号、密码、属组显示使用类型为files时(有多种类型)
账号认证将由/etc/passwd /etc/shadow /etc/group 三个文件的匹配
----------------------------------------------------------------------------------------------------------------------------
配置文件介绍
配置文件:/boot/grub/grub.conf
default=0 # 设定默认启动的title的编号,从0开始
timeout=5 # 等待用户选择的超时时长,单位是秒
splashimage=(hd0,0)/grub/splash.xpm.gz # grub的背景图片
hiddenmenu # 隐藏菜单
password --md5 $1$HKXJ51$B9Z8A.X//XA.AtzU1.KuG. # grub编辑时,密码
title Red Hat Enterprise Linux Server (2.6.18-194.el5) # 内核标题或操作系统名称
root (hd0,0) # 内核文件所在的设备;对grub而言,所有类型硬盘一律hd,格式为(hd#,N);hd#, #表示第几个磁盘;最后的N表示对应磁盘的分区;
kernel /vmlinuz-2.6.18-194.el5 ro root=LABEL=/ rhgb quiet # 内核文件路径,及传递参数
initrd /initrd-2.6.18-194.el5.img #VFS(initrd)文件路径
配置文件:/etc/inittab
id:3:initdefault: #系统默认启动级别为3
si::sysinit:/etc/rc.d/rc.sysinit #系统初始化,执行rc.sysinit脚本
l0:0:wait:/etc/rc.d/rc 0 #系统登记为0时执行,将执行/etc/rc.d/rc0.d下的脚本
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
ca::ctrlaltdel:/sbin/shutdown -t3 -r now #按下Ctrl+Alt+Del组合时,将关机
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" #断电时将采取关机
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
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
x:5:respawn:/etc/X11/prefdm -nodaemon #启动图形界面终端,并在程序终止时,重新启动