Linux启动流程
POST–>Boot Sequence–>MBR–>Grub–>Kernel(initramfs)–>rootfs–chroot(根切换)–>/sbin/init–>RunLevel–>rc.sysinit—>rc 3(rc.local)–>启动终端
1、Post加电自检
2、运行BIOS程序,选择启动源(硬盘,网络,CD/DVD,USB)
3、MBR 512Byte,(Bootloader,FAT,55AA)
Bootloader:占446Byte,是Grub的第1阶段,有安装系统时写入到磁盘
FAT:占64Byte,分区表,一个分区表占16Byte,所以主分区最多4个
55AA:占2Byte,表示Bootloader是否有效
4、Grub
Grub第1阶段:MBR中Bootloader程序,加载至内存中运行,可找到Grub第1.5阶段所在位置
Grub第1.5阶段:透过Grub第1阶段,找到Grub第1.5阶段,使能够挂载Grub第2阶段所在分区(boot分区)
Grub第2阶段:向内核传递参数,并加载内核运行
5、Kernel(initramfs)
运行中的内核挂载initramfs文件系统(精简内核将部分文件系统驱动做到此微系统中),使得内核能挂载硬盘真的根文件系统
6、rootfs
内核挂载硬盘的根文件系统
7、chroot
根文件系统切换,从initramfs切换至我们安装linux的根分区
8、/sbin/init
运行init程序
9、Runlevel
CentOS5:运行起来的init程序会去读取/etc/inittab文件,根据配置文件启动相应运行级别
id:3:initdefault: #确定默认运行级别3 si::sysinit:/etc/rc.d/rc.sysinit #运行系统初始化脚本,完成系统初始化 l3:3:wait:/etc/rc.d/rc 3 #以运行级别为3,运行/etc/rc.d/rc脚本
CentOS6:读取/etc/inittab,执行/etc/init/目录下以.conf结尾的脚本,
[root@neolinux init]# ls control-alt-delete.conf plymouth-shutdown.conf rc.conf rcS-sulogin.conf start-ttys.conf init-system-dbus.conf prefdm.conf rcS.conf serial.conf tty.conf kexec-disable.conf quit-plymouth.conf rcS-emergency.conf splash-manager.conf [root@neolinux init]# cat rc.conf # rc - System V runlevel compatibility # # This task runs the old sysv-rc runlevel scripts. It # is usually started by the telinit compatibility wrapper. # # Do not edit this file directly. If you want to change the behaviour, # please create a file rc.override and put your changes there. start on runlevel [0123456] stop on runlevel [!$RUNLEVEL] task export RUNLEVEL console output exec /etc/rc.d/rc $RUNLEVEL #运行/etc/rc.d/rc此脚本 [root@neolinux init]# cat rcS.conf #*********** #** exec /etc/rc.d/rc.sysinit #运行/etc/rc.d/sysinit脚本 #**
10、rc.sysinit
sysinit脚本运行功能:
a、设置主机名 b、激活udev,selinux c、挂载/etc/fstab中设定的文件系统 d、根据/etc/sysctl.conf文件设置内核参数 e、加载额外驱动 f、....等等,还有很多
11、rc 3(rc.local)–>Service
运行rc脚本传递运行级别,rc脚本会跟据对应的运行级别去运行/etc/rc.d/目录下以rc.#开头的目录下各种脚本
K##开头的脚本表示关机时运行,##数字越大越优先关闭
S##开头的脚本表示开机时运行,##数字越小越优先开启
以运行级别为3,/etc/rc.d/rc3.d/目录下,以S99开头的链接文件,此脚本链接到/etc/rc.d/rc.local,用户自己有需要开机运行的脚本可以放在此处
12、终端启动
用户输入用户名密码,认证通过加载配置文件进入bash环境
原创文章,作者:nice_neo_linux,如若转载,请注明出处:http://www.178linux.com/17825