grub and boot
Centos5,6的开机启动流程
grub
Centos7的开机启动流程
Centos5,6的开机启动流程
initrd / initramfs
一般存储在/boot目录下,以.img为结尾的文件,是一个小型的根目录系统的映像文件,里面存放了各类系统必须的模组,为了解决内核在加载完成之后没有模组无法访问磁盘加载rootfs的问题。
rc
在inittab的文件中,有这么一行命令 si::sysinit:/etc/rc.d/rc.sysinit ,这句话表示将设置的run level的值作为参数赋予给rc这个脚本。
我们先来看一下rc,打开/etc/rc.d/rc:
最主要的两段:
for i in /etc/rc$runlevel.d/K* ; do #循环列出/etc/rc#.d目录下以K开头的文件并赋值给i。
# Check if the subsystem is already up.
subsys=${i#/etc/rc$runlevel.d/K??} #做字符串切片,删去第一个/etc/rc$.d/K##的部分。
[ -f /var/lock/subsys/$subsys -o -f /var/lock/subsys/$subsys.init ] || continue #如果不存在相同的文件名或者文件名.init的服务脚本,则跳出当前这一轮循环。
check_runlevel "$i" || continue #检查符号链接是否有效。
# Bring the subsystem down.
[ -n "$UPSTART" ] && initctl emit --quiet stopping JOB=$subsys
$i stop #传递当前服务程序stop参数。
[ -n "$UPSTART" ] && initctl emit --quiet stopped JOB=$subsys
done
for i in /etc/rc$runlevel.d/S* ; do #循环列出/etc/rc#.d目录下以S开头的文件并赋值给i。
# Check if the subsystem is already up.
subsys=${i#/etc/rc$runlevel.d/S??} subsys #做字符串切片,删去第一个/etc/rc$.d/S##的部分。
[ -f /var/lock/subsys/$subsys ] && continue 如果存在与服务脚本相同的文件名的文件就跳出当前这轮循环。
[ -f /var/lock/subsys/$subsys.init ] && continue 如果存在服务脚本.init的文件名的文件就条和醋当前这轮循环。
check_runlevel "$i" || continue 检查符号连接是否有效。
# If we're in confirmation mode, get user confirmation
if [ "$do