CentOS系统启动流程

Linux系统(Centos 5、6)启动流程

123.jpg

一、POST加电自检

Power-On-Self-Test 
按下电源键以后,系统调用存储在ROM中的BIOS和存储在RAM中的CMOS(用来保存各项参数的设定)完成系统硬件状态的检查,如果硬件有问题则提示用户问题严重无法开机的会发出警报声音;硬件自检完成后进入下一步。

二、Boot Sequence与MBR

  1. 加电自检完成后,系统会读取BIOS中的Boot Sequence中设置的引导顺序按次序检查。第一个有引导程序的设备既为本次启动需要用到的设备。

  2. 寻找到启动需要的设备后,寻找存储与该设备MBR前446个字节中的bootloader引导加载器进入下一阶段。

    1479977244939269.jpg

三、GRUB阶段

  1. 1st 、 运行bootloader,由于只有446个字节这里是用来加载下一步进程而不是内核。

  2. 1.5st、加载识别文件系统,如果此步骤无法运行就无法正常识别/boot所在分区。

  3. 2nd、 读取/boot/grub/grub.conf配置文件加载内核。


1
[root@CentOS6 ~]# cat /boot/grub/grub.conf<br /># grub.conf generated by anaconda<br />#<br /># Note that you do not have to rerun grub after making changes to this file<br /># NOTICE: &nbsp;You have a /boot partition. &nbsp;This means that<br /># &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;all kernel and initrd paths are relative to /boot/, eg.<br /># &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;root (hd0,0)<br /># &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;kernel /vmlinuz-version ro root=/dev/sda2<br /># &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;initrd /initrd-[generic-]version.img<br />#boot=/dev/sda<br />default=0 &nbsp; #系统默认<br />timeout=5 &nbsp; #超时时间<br />splashimage=(hd0,0)/grub/splash.xpm.gz &nbsp; #grub启动壁纸<br />hiddenmenu &nbsp;<br />title CentOS 6 (2.6.32-642.el6.x86_64) &nbsp;#grub标题<br /> &nbsp; &nbsp;root (hd0,0) #指定根所在的位置<br /> &nbsp; &nbsp;kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=55ce0d77-cab0-4da4-bb2b-0af5adebf8d6 rd_NO_LUKS rd_NO_LVMLANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto &nbsp;KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet &nbsp;#指定内核位置并只读挂载<br /> &nbsp; &nbsp;initrd /initramfs-2.6.32-642.el6.x86_64.img #指定init位置<br /><br />

四、Kernel阶段

  1. 探测可识别的所有硬件设备;

  2. 加载硬件驱动程序;(有可能会借助于randdisk加载驱动)

  3. 以只读方式挂载根文件系统;

  4. 运行用户空间的第一个应用程序:/sbin/init

五、init初始化

(1)设置默认运行级别(配置文件:/etc/inittab)

运行级别:为了系统的运行或维护等墓地而设定的机制;


1
[root@C6red ~]# cat /etc/inittab<br /><br /># Default runlevel. The runlevels used are:<br /># &nbsp; 0 - halt (Do NOT set initdefault to this)<br /># &nbsp; 1 - Single user mode<br /># &nbsp; 2 - Multiuser, without NFS (The same as 3, if you do not have networking)<br /># &nbsp; 3 - Full multiuser mode<br /># &nbsp; 4 - unused<br /># &nbsp; 5 - X11<br /># &nbsp; 6 - reboot (Do NOT set initdefault to this)<br />id:3:initdefault:<br />这里默认级别是3 、 配置文件中的格式是:id:runlevel:action:process。<br /><br />0-6级别定义<br />0:关机,shutdown<br />1:单用户模式(single user),root用户,无需认证;维护模式;<br />2;多用户模式(multi user),会启动网络功能,但不会启动NFS;维护模式<br />3;多用户模式(multi user),完全功能模式;文本界面;<br />4:预留级别;目前无特别使用目的;同3<br />5:多用户模式(multi user),完全功能模式,图形界面;<br />6:重启模式,reboot;<br />

默认级别:3、5 
级别切换:init #


1
[root@C6red ~]# init 4<br />[root@C6red ~]# who -r<br /> &nbsp; &nbsp; &nbsp; &nbsp; run-level 4 &nbsp;2016-11-22 21:25 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; last=3<br /><br />

级别查看: who -r runlevel


1
[root@C6red ~]# who -r<br /> &nbsp; &nbsp; &nbsp; &nbsp; run-level 3 &nbsp;2016-11-22 10:05<br />[root@C6red ~]# runlevel<br />N 3<br />[root@C6red ~]#<br />

(2) 运行系统初始化脚本,完成系统初始化 (/etc/rc.d/rc.sysinit)


1
[root@CentOS6 ~]# cat /etc/rc.d/rc.sysinit<br />#!/bin/bash<br />#<br /># /etc/rc.d/rc.sysinit - run once at boot time<br />#<br /># Taken in part from Miquel van Smoorenburg&#039;s bcheckrc.<br />#<br /><br />HOSTNAME=$(/bin/hostname)<br /><br />set -m<br /><br />if [ <span style="line-height: 1.6">-f</span> /etc/sysconfig/network ]; then<br /> &nbsp; &nbsp;. /etc/sysconfig/network<br />fi<br />if [ -z &quot;$HOSTNAME&quot; -o &quot;$HOSTNAME&quot; = &quot;(none)&quot; ]; then<br /> &nbsp; &nbsp;HOSTNAME=localhost<br />fi<br /><br />if [ ! <span style="line-height: 1.6">-e</span> /proc/mounts ]; then<br /> &nbsp; &nbsp;mount -n -t proc /proc /proc<br /> &nbsp; &nbsp;mount -n -t sysfs /sys /sys &gt;/dev/null 2&gt;&amp;1<br />fi<br />if [ ! <span style="line-height: 1.6">-d</span> /proc/bus/usb ]; then<br /> &nbsp; &nbsp;modprobe usbcore &gt;/dev/null 2&gt;&amp;1 &amp;&amp; mount -n -t usbfs /proc/bus/usb /proc/bus/usb<br />else<br /> &nbsp; &nbsp;mount -n -t usbfs /proc/bus/usb /proc/bus/usb<br />fi<br /><br />#remount /dev/shm to set attributes from fstab #669700<br />mount -n -o remount /dev/shm &gt;/dev/null 2&gt;&amp;1<br />#remount /proc to set attributes from fstab #984003<br />mount -n -o remount /proc &gt;/dev/null 2&gt;&amp;1<br />#####脚本过长以下省略######<br />主要执行了以下操作<br /><br /><br />(1) &nbsp;设置主机名<br />(2) &nbsp;设置欢迎信息<br />(3) &nbsp;激活udev 和selinux<br />(4) &nbsp;挂载/etc/fstab 文件中定义的文件系统<br />(5) &nbsp;检测根文件系统,并以读写方式重新挂载根文件系统<br />(6) &nbsp;设置系统时钟<br />(7) &nbsp;激活swap 设备<br />(8) &nbsp;根据/etc/sysctl.conf 文件设置内核参数<br />(9) &nbsp;激活lvm 及software raid 设备<br />(10) &nbsp;加载额外设备的驱动程序<br />(11) 执行清理操作<br />

(3) 关闭对应级别下需要停止的服务,启动对应级别下需要开启的服务; 
(4) 设置登陆终端[5级别启动图形界面]


至此Centos6系统启动完成

原创文章,作者:M21-13-王振中,如若转载,请注明出处:/60614

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达开户  万达主管  万达娱乐主管  万达娱乐招商QQ  万达主管  万达招商QQ  华宇招商  万达主管  万达娱乐招商QQ