您的位置:首页 > 运维架构 > Linux

CentOS6系统启动流程

2016-04-05 20:50 507 查看

系统启动流程图



POST加电

计算机开机后对各硬件进行检测,确保系统能正常运行。

BIOS选择启动项

上阶段检测结束后,BIOS将选择带有MBR的分区的设备,进行引导启动,在这阶段将加载该设备第0扇区的前512字节到内存,前446字节为Bootloader,后64字节为分区表,最后2个字节(0x55,0xaa)为标志位。

MBR

CentOS6中的Bootloader为Grub,但MBR中的446字节,显然不够加载完。这里只存放了stage1阶段,在系统安装时,在mbr扇区后存放stage1.5,从而让bootloader存放的stage1能识别stage2所在的分区上的文件系统,stage2存放在磁盘分区(/boot/grub/)下。

Grub

在系统将要开启时,快速按下任意键即可进入Grub引导画面,如下:



回车即可启动选中CentOS6系统。

输入 e 键进去编辑模式

输入 c 键进入命令模式

Grub在磁盘上的挂载点为/boot/grub,配置文件为/boot/grub/grub.conf。

在这阶段,Grub选择要启动的内核或系统,将加载 kernel 和 解压ramdisk 到内存中,内核启动时将 ramdisk(initramfs-VERSION.img) 作为一个临时的根文件系统,进行加载硬件驱动程序。当所需的驱动程序加载完后,然后将根文件系统 rootfs 以只读的方式挂载,进行 switchroot 。

启动init

启动用户空间的第一个应用程序:/sbin/init,CentOS6系统的init程序类型为Upstart,配置文件为在 /etc/inittab,/etc/init/*.conf。

init启动后

1.读取/etc/inittab 确定运行级别

id:runlevel:action:process

runleve:共7级别 为0-6,默认级别为3

runlevel
0关机
1单用户模式(root, 无须登录), single, 维护模式;
2多用户模式,会启动网络功能,但不会启动NFS;维护模式;
3多用户模式,正常模式;文本界面;
4预留级别;可同3级别;
5多用户模式,正常模式;图形界面;
6重启
action
wait切换至此级别运行一次
respawn此process终止,就重新启动之
initdefault设定 init 默认运行级别
sysinit设定系统初始化方式,/etc/rc.d/rc.sysinit
以上为常见action
2.运行系统初始化脚本(/etc/rc.d/rc.sysinit)

(1) 设置主机名;

(2) 设置欢迎信息;

(3) 激活udev和selinux;

(4) 挂载/etc/fstab文件中定义的文件系统;

(5) 检测根文件系统,并以读写方式重新挂载根文件系统;

(6) 设置系统时钟;

(7) 激活swap设备;

(8) 根据/etc/sysctl.conf文件设置内核参数;

(9) 激活lvm及software raid设备;

(10) 加载额外设备的驱动程序;

(11) 清理操作;

3.加载开机启动程序

执行 /etc/rc.d/rc #,默认 # 为3,将读取/etc/rc.d/rc3.d/下的所有脚本,来控制系统启动的时候启动以K开头的或者关闭以S开头那些服务。

注意:正常级别下,最后启动一个服务S99local没有链接至/etc/rc.d/init.d一个服务脚本,而是指向了/etc/rc.d/rc.local脚本;因此,不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动运行的命令,可直接放置于/etc/rc.d/rc.local文件中;

4.执行/etc/rc.d/rc.local脚本

此脚本是启动过程中最后启动的一个脚本,启动加载终端,至此系统启动过程完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: