Linux 啟動流程

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.www58058.com/17825

(2)
nice_neo_linuxnice_neo_linux
上一篇 2016-06-09 22:14
下一篇 2016-06-10 13:21

相關推薦

欧美性久久久久