首页 > 代码库 > Linux CentOS 5/6启动流程
Linux CentOS 5/6启动流程
CentOS 5/6启动流程
1.加电自检(post)
按开机电源后通过CMOS芯片的BIOS系统检测系统硬件是否正常
2.查找系统引导
2.1 通过BIOS中的引导设置BOOT Sequence按次序查找引导程序,通过第一个有引导程序的设备启动;
2.2 加载bootloader,通过bootloader选择需要加载的内核版本,将用户选择的内核版本加载到内存中特定的位置,解压展开,然后将控制全转交给内核
(1)MBR引导程序
446字节:bootloader
64字节:分区表
2:结束标示 55AA
(2)GRUB:多操作系统管理器
bootloader:1st stage
disk:2nd stage
3.启动内核
3.1 内核的功能:进程管理、内存管理、网络管理、驱动管理、文件系统、安全功能
3.2 linux内核特点:
(1)模块化设计,而且各模块可以动态卸载和加载;
(2)内核核心文件有 /boot/vmlinuz-VERSION-release 和ramdisk。ramdisk在CentOS 5中的路径为 /boot/initrd.VERSION-release.img,在CentOS 6中的路径为 /boot/initramfs-VERSION-release.img
(3)模块文件存在路径 /lib/modules/VERSION-release
3.3 kenel自身初始化过程
(1)探测可识别的所有硬件设备;
(2)加载硬件驱动程序;(有可能会借助于ramdisk加载驱动)
(3)以只读的方式挂载跟文件系统
(4)运行用户空间第一个应用程序/sbin/init
3.4 init程序类型根据系统不同有以下几种:
(1)centos 5使用的是Sysv,配置文件路径 /etc/inittab
(2)centos 6使用的是Upstart,配置文件路径/etc/inittab /etc/init/*.conf
(3)centos 7使用的是systemd,配置文件路径 /usr/lib/systemd/system /etc/systemd/system
3.5 CentOS 5/6运行级别
分为0-6,七个级别
0:关机,
1:单用户模式(登录即为root用户,无需用户密码验证),可输入命令1或single进入,也可称为维护模式
2:多用户模式,会启动网络功能,但不会启动NFS,也可称为维护模式
3:多用户模式,3属于正常模式,仅启动文本界面
4:预留级别,同3;
5:多用户模式,可启动图形界面;
6:重启
3.6 init 的切换命令和配置解析
(1)init #:一般模式级别为3,5,#为级别编号;
(2)runlevel:查看当前运行级别与最近一次切换前的级别
(5)who -r:类似与runlevel
3.7 /etc/inittab 配置文件解析
id:runlevel:action:process
id:每一登记项的唯一表示符
runlevel:对应0-6,7个运行级别
action:表示对应登记项在一定条件下运行process的条件
wait:当进入指定runlevel后process会运行一次且在离开此runlevel时process中止
respawn:当process终止后,立刻启动一个新的
initdefault:设定默认运行级别,process省略
sysinit:系统初始化,只有系统开机或重启的时候才会运行一次,此处一般为指定/etc/rc.d/rc.sysinit
分析:
id:3:initdefault: ------->表示开机后默认会进入3模式(即命令行模式)
si::sysinit:/etc/rc.d/rc.sysinit ----->在所有的运行级别下init都会依赖/etc/rc.d/rc.sysinit这个脚本对系统进行初始化
/etc/rc.d/rc.sysinit的作用如下:
1,激活udev和selinux
2,根据/etc/sysctl.conf文件设定内核参数
3,设定系统时钟
4,键盘的键映射,即识别键盘
5,启用swap分区
6,设定主机名
7,根文件系统检测及重新以读写方式挂载
8,激活RAID和LVM设备
9,启用磁盘配额
10,检测及挂载其他文件系统(挂载/etc/fstab中定义的设备)
11,清除过期的锁和PID文件
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
上述10-16表示当进入n级别时将 /etc/rc.d/rc*.d下的S*文件启用,K*文件禁用,而且仅针对于对应的级别执行一次,退出此级别失效。每个/etc/rc.d/rc*.d
K*:K##:##表示关闭次序,数字越大越先运行,数字越小的服务,通常为依赖比人的服务
S*:S##:##表示启动次序,数字越小越先运行,数字越小的服务,通常为被别人依赖的服务。
3.8 chkconfig命令
用途:用于查看服务所在级别出于启动或关闭的状态,和设置各服务在各启动级别时的状态
使用场景1:
(1)chkconfig --list:查看所有服务器在各级别时状态,顶部的数字表示启动级别,on表示启动,off表示关闭
(2)chkconfig --list name:表示查看此项服务在各级别时的状态。
(3)chkconfig --level # name <on,off,reset>:修改服务在指定级别#时的状态,当#号省略时表示2345。
(4)添加新服务和删除服务的方法:
先将增加的脚本放置于/etc/rc.d/(/etc/init.d),编辑脚本在各级别中的状态 chkconfig :LLLL NN NN
使用chkconfig --add name 添加脚本
使用chkconfig --del name 删除脚本
注:正常级别下,最后启动一个服务S99local没有链接至/etc/rc.d/init.d一个服务脚本,而是指向了/etc/rc.d/rc.local脚本;因此,不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动运行的命令,可直接放置于/etc/rc.d/rc.local文件中;
本文出自 “学海无涯” 博客,谢绝转载!
Linux CentOS 5/6启动流程