系统的启动首先检测主机自身的各硬件有没有问题,而后会点亮显示屏,之后会根据CMOS中存储的启动优先级按次序查找各引导设备,第一个有引导程序的设备即为本次启动要用到的设备,引导后会通过bootloader引导加载器来提供一个允许用户选择要启动的系统或不同的内核版本的菜单,bootloader在Linux系统上的实现是GRUB(CentOS 5、6:grub 0.x Grub Legacy; CentOS 7: grub 1.x Grub2)位于MBR中在通常在第一块硬盘的第一个分区的前446字节中,而在446个字节中实现启动并加载内核功能的grub很难,所以系统设计者在在此用了三个阶段来实现内核的加载;
grub legacy:
stage1: mbr
stage1_5: mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统;
stage2:磁盘分区(/boot/grub/)
配置文件:/boot/grub/grub.conf<-- /etc/grub.conf
内核设计体系:单内核、微内核
Linux:单内核设计,但充分借鉴了微内核体系的设计的优点;为内核引入了模块化制;
内核的组成部分:
kernel:内核核心,一般为bzImage,通常位于/boot目录,名称为vmlinuz-VERSION-release;
kernelobject:内核对象,即内核模块,一般放置于/lib/modules/VERSION-release/
内核模块与内核核心版本一定要严格匹配;
[ ]:N
[M]:Module
[*]:Y,编译进内核核心
内核:动态装载和卸载;
ramdisk:辅助性文件,并非必须,这取决于内核是否能直接驱动rootfs所在的设备;
目标设备驱动,例如SCSI设备的驱动;
逻辑设备驱动,例如LVM设备的驱动;
文件系统,例如xfs文件系统;
ramdisk:是一个简装版的根文件系统;
内核启动init后首先设定默认运行级别,以CentOS5为例来进行说明:
运行级别:为了系统的运行或维护等目的而设定的机制;
0-6:7个级别;
0:关机, shutdown
1:单用户模式(singleuser),root用户,无须认证;维护模式;
2、多用户模式(multiuser),会启动网络功能,但不会启动NFS;维护模式;
3、多用户模式(mutliuser),完全功能模式;文本界面;
4、预留级别:目前无特别使用目的,但习惯以同3级别功能使用;
5、多用户模式(multiuser),完全功能模式,图形界面;
6、重启,reboot
默认级别:3, 5
配置文件:/etc/inittab
每行定义一种action以及与之对应的process
id:runlevels:action:process
id:一个任务的标识符;
runlevels:在哪些级别启动此任务;#,###,也可以为空,表示所有级别;
action:在什么条件下启动此任务;
process:任务;
action:
wait:等待切换至此任务所在的级别时执行一次;
respawn:一旦此任务终止,就自动重新启动之;
initdefault:设定默认运行级别;此时,process省略;
sysinit:设定系统初始化方式,此处一般为指定/etc/rc.d/rc.sysinit脚本;
例如:
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
…………
l6:6:wait:/etc/rc.d/rc 6
意味着去启动或关闭/etc/rc.d/rc3.d/目录下的服务脚本所控制服务;
K*:要停止的服务;K##*,优先级,数字越小,越是优先关闭;依赖的服务先关闭,而后关闭被依赖的;
S*:要启动的服务;S##*,优先级,数字越小,越是优先启动;被依赖的服务先启动,而依赖的服务后启动;
系统初始化脚本:/etc/rc.d/rc.sysinit
(1)设置主机名;
(2)设置欢迎信息;
(3)激活udev和selinux;
(4) 挂载/etc/fstab文件中定义的所有文件系统;
(5)检测根文件系统,并以读写方式重新挂载根文件系统;
(6)设置系统时钟;
(7)根据/etc/sysctl.conf文件来设置内核参数;
(8)激活lvm及软raid设备;
(9)激活swap设备;
(10)加载额外设备的驱动程序;
(11)清理操作;
GRUB应用:
Grub登录菜单中功用:
(1) 提供菜单、并提供交互式接口
e: 编辑模式,用于编辑菜单;
c: 命令模式,交互式接口;
(2) 加载用户选择的内核或操作系统
允许传递参数给内核
可隐藏此菜单
(3) 为菜单提供了保护机制
为编辑菜单进行认证
为启用内核或操作系统进行认证
配置文件:/boot/grub/grub.conf
配置项:
default=#: 设定默认启动的菜单项;落单项(title)编号从0开始;
timeout=#:指定菜单项等待选项选择的时长;
splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径;
hiddenmenu:隐藏菜单;
password[--md5] STRING: 菜单编辑认证;
title TITLE:定义菜单项“标题”, 可出现多次;
root(hd#,#):grub查找stage2及kernel文件所在设备分区;为grub的“根”;
kernel/PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核
initrd/PATH/TO/INITRAMFS_FILE: 内核匹配的ramfs文件;
password[--md5] STRING: 启动选定的内核或操作系统时进行认证;
进入单用户模式:
(1) 编辑grub菜单(选定要编辑的title,而后使用e命令);
(2) 在选定的kernel后附加
1, s, S或single都可以;
(3)在kernel所在行,键入“b”命令;
安装grub:
(1) grub-install
grub-install--root-directory=ROOT /dev/DISK
(2) grub
grub>root (hd#,#)
grub>setup (hd#)