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配置文件加載內核。

[root@CentOS6 ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0   #系統默認
timeout=5   #超時時間
splashimage=(hd0,0)/grub/splash.xpm.gz   #grub啟動壁紙
hiddenmenu  
title CentOS 6 (2.6.32-642.el6.x86_64)  #grub標題
   root (hd0,0) #指定根所在的位置
   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  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet  #指定內核位置并只讀掛載
   initrd /initramfs-2.6.32-642.el6.x86_64.img #指定init位置

四、Kernel階段

  1. 探測可識別的所有硬件設備;

  2. 加載硬件驅動程序;(有可能會借助于randdisk加載驅動)

  3. 以只讀方式掛載根文件系統;

  4. 運行用戶空間的第一個應用程序:/sbin/init

五、init初始化

(1)設置默認運行級別(配置文件:/etc/inittab)

運行級別:為了系統的運行或維護等墓地而設定的機制;

[root@C6red ~]# cat /etc/inittab

# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
id:3:initdefault:
這里默認級別是3 、 配置文件中的格式是:id:runlevel:action:process。

0-6級別定義
0:關機,shutdown
1:單用戶模式(single user),root用戶,無需認證;維護模式;
2;多用戶模式(multi user),會啟動網絡功能,但不會啟動NFS;維護模式
3;多用戶模式(multi user),完全功能模式;文本界面;
4:預留級別;目前無特別使用目的;同3
5:多用戶模式(multi user),完全功能模式,圖形界面;
6:重啟模式,reboot;

默認級別:3、5 
級別切換:init #

[root@C6red ~]# init 4
[root@C6red ~]# who -r
        run-level 4  2016-11-22 21:25                   last=3

級別查看: who -r runlevel

[root@C6red ~]# who -r
        run-level 3  2016-11-22 10:05
[root@C6red ~]# runlevel
N 3
[root@C6red ~]#

(2) 運行系統初始化腳本,完成系統初始化 (/etc/rc.d/rc.sysinit)

[root@CentOS6 ~]# cat /etc/rc.d/rc.sysinit
#!/bin/bash
#
# /etc/rc.d/rc.sysinit - run once at boot time
#
# Taken in part from Miquel van Smoorenburg's bcheckrc.
#

HOSTNAME=$(/bin/hostname)

set -m

if [ -f /etc/sysconfig/network ]; then
   . /etc/sysconfig/network
fi
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
   HOSTNAME=localhost
fi

if [ ! -e /proc/mounts ]; then
   mount -n -t proc /proc /proc
   mount -n -t sysfs /sys /sys >/dev/null 2>&1
fi
if [ ! -d /proc/bus/usb ]; then
   modprobe usbcore >/dev/null 2>&1 && mount -n -t usbfs /proc/bus/usb /proc/bus/usb
else
   mount -n -t usbfs /proc/bus/usb /proc/bus/usb
fi

#remount /dev/shm to set attributes from fstab #669700
mount -n -o remount /dev/shm >/dev/null 2>&1
#remount /proc to set attributes from fstab #984003
mount -n -o remount /proc >/dev/null 2>&1
#####腳本過長以下省略######
主要執行了以下操作


(1)  設置主機名
(2)  設置歡迎信息
(3)  激活udev 和selinux
(4)  掛載/etc/fstab 文件中定義的文件系統
(5)  檢測根文件系統,并以讀寫方式重新掛載根文件系統
(6)  設置系統時鐘
(7)  激活swap 設備
(8)  根據/etc/sysctl.conf 文件設置內核參數
(9)  激活lvm 及software raid 設備
(10)  加載額外設備的驅動程序
(11) 執行清理操作

(3) 關閉對應級別下需要停止的服務,啟動對應級別下需要開啟的服務; 
(4) 設置登陸終端[5級別啟動圖形界面]


至此Centos6系統啟動完成

原創文章,作者:M21-13-王振中,如若轉載,請注明出處:http://www.www58058.com/60614

(0)
M21-13-王振中M21-13-王振中
上一篇 2016-11-24
下一篇 2016-11-24

相關推薦

  • 計算機;GPL等開源協議;Linux 哲學思想的煉成;MBR & GPT—fazion in magedu 20.July

    入門Linux的基礎知識 fazionlan blog in 178Linux.July 22nd. 第一臺計算機 1946第一臺計算機ENIAC(electronic numerical integrator and calculator)在美國濱州大學誕生,是美國奧伯丁武器試驗場為了滿足計算彈道而研制的 馮諾依曼體系結構:1946年數學家提出運算器、控制…

    Linux干貨 2016-07-29
  • 關于find命令的實際應用

    1、查找/var目錄下屬主為root,且屬組為mail的所有文件 2、查找/var目錄下不屬于root、lp、gdm的所有文件 3、查找/var目錄下最近一周內其內容修改過,同時屬主不為root,也不是postfix的文件 4、查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件 5、查找/etc目錄下大于1M且類型為普通文件的所有文件 6、查找/e…

    Linux干貨 2016-08-16
  • 初涉Linux基本要點概括(1)續

       6. Linux發行版都基本遵循文件系統層級標準(Filesystem Hierarchy Standard)。                 續   …

    Linux干貨 2016-10-13
  • 手動編譯內核+busybox+dropbear+nginx

    我們需要先在宿主機上添加一個磁盤,然后,把這個磁盤做好分區和文件系統: fdisk /dev/sdb 創建第一個分區: n p 1 +512M 創建第二個分區: n p 2 +10G 保存退出: w 為分區提供文件系統: kpartx /dev/sdb 為分區提供文件系統: mke2fs -t ext4 /dev/sd…

    Linux干貨 2015-09-24
  • keepalived高可用lvs集群

    實驗拓撲   keepalived高可用配置 HA01和HA02的keepalived安裝及配置(安裝及配置均相同) ~]# yum -y install keepalived HA01和HA02做時間同步,crontab中添加時間同步腳本 ~]# date; ssh 192.168.150.140 'date'   …

    Linux干貨 2016-12-06
  • 8.5-文本處理工具(命令篇)

     1、文件查看命令: cat, tac,rev cat [OPTION]… [FILE]…     -E: 顯示行結束符$     -n: 對顯示出的每一行進行編號     -A:顯…

    Linux干貨 2016-08-07
欧美性久久久久