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