CentOS开机流程:
POST--Boot sequence--Boot loader---Kernel(Ramdisk)---rootfs---switch-------/sbin/init
POST:加电
计算机加电后,CPU到ROM上寻找代码,并且这个过程扫描计算机的硬件。如果一切正常,进入下一步
Boot sequence:选择分区引导
ROM上存放着BIOS(Boot Input/Output System),根据对BIOS的设置,引导第一各有引导程序的设备启动它。
Boot loader:引导加载器
存在磁盘的第一个扇区上存放着MBR(Master Boot Record字节)占据着512字节,其中前面446字节存放着Boot loader.在Linux下Boot loader常用的是Grub,
Grub采用的工作模式是:
1 stage:bootload,加载到2stage .
1.5 stage :位于mbr之后的扇区,提供了文件系统驱动 2nd:位于/boot/grub下,加载内核。
2 stage:位于/boot/grub
Kernel:内核加载
Kernel是单核设计,把所有功能集成于一个程序。
Kernel被加载到内存后展开,在ramdisk的帮助下访问文件系统
内核展开后进行自身初始化:
1.检测所有可以识别得到的硬件设备(有可能借助于ramdisk)
2.加载硬件的驱动
3.以只读的方式挂载文件系统
4.运行/sbin/init
/sbin/init:启动init完成最后工作
1.init调用其配置文件/etc/inittable
[root@localhost rc3.d]# tail -10 /etc/inittab
# Default runlevel. The runlevels used are:
# 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:
0:关机shutdown
1:单用户模式 single user root用户,无需认证,维护模式;
2.多用户模式(multi user),会启动网络功能,但不会启动NFS维护模式
3.多用户模式,完全功能模式,文本界面
4:预留模式:目前无特别使用目的,但习惯以同3级别功能使用
5.多用户模式,完全功能模式,图形界面
6.重启,reboot
模式进行切换: init # (0-6)
2.进行系统初始化 /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) 清理操作; 清除临时文件等
3.停止,关闭对应级别服务
接受一个运行级别数字(0-6)。启动或关闭/etc/rc.d/ 目录下的服务脚本所控制服务;
K* 表示要停止的服务,数字越小需要越先关闭
S* 表示要开启的服务,数字越小越快启动。
4.开启字符串终端