通常狀況下X86架構平臺的啓動流程:
1.POST:Power-on Self Testing,加電自檢
保證硬件的正常操做,從而可以正確的使用各類硬件
2.BootSequence(程序的啓動順序)
決定到底從何種設備加載操做系統內核;一般可選的設備包括:光驅,硬盤,U盤,網絡接口;shell
按照給定的順序,依次查找各個設備,第一個被找出有引導程序(BootLoader)即爲本次啓動要用到的設備;c#
Bootloader:引導程序,引導加載器
GRUB:GRand Uniform BootLoader 全球統一引導加載器;
Centos 6之前的都是
GRUB 0.x:legacy GRUB
Centos 7:
GRUB 1.x:grub2安全
grub提供的功能:
1.爲用戶提供了一個可供選擇的菜單,菜單以列表的方式列舉了各個能夠引導啓動的操做系統內核;
2.能夠將用戶選定內核核心文件裝載到RAM中,並予以解壓縮,展開以後,將系統的控制權交給內核;
3.能夠提供交互式的命令行接口;
4.經過私密口令來保證菜單和內核啓動屬性的安全性;網絡
3.內核
自身初始化:
1)探測全部能被誰別到的全部的硬件設備;
2)加載硬件的驅動程序,有可能要藉助於ramdisk/ramfs加載驅動程序;
3)以只讀的方式掛載根文件系統;
4)在根文件系統中查找並運行第一個用戶空間中的應用程序:/sbin/init架構
4.Init
init程序:
運行級別(Run-level);爲了系統的運行和維護等目的而設置的管理機制;全部的管理類操做都必須依靠shell腳本實現;
七個運行級別:
0 - 關機
1 - 單用戶模式,無需密碼認證,維護和調試;
2 - 多用戶模式,不會啓動NFS,維護模式;
3 - 徹底的多用戶模式,不包含圖形界面,只能使用CLI;
4 - 預留級別,目前無特殊使用目的;但其設置習慣上與運行級別3保持相同;
5 - 徹底多用戶模式,默認激活GUI和CLI;默認使用GUI;
6 - 重啓ide
查詢當前運行級別:
#who - r
#runlevel
修改運行級別:
實時修改:
init [0-6]
永久修改:
修改init的配置文件:/etc/inittab
id:#:initdefault:操作系統
/etc/inittab文件的主要做用: 1.在整個系統初始化的過程當中決定執行那些操做; 啓動或關閉那些後臺服務; 如何進行系統初始化; 在驗證用戶身份無誤以後,如何爲用戶提供登陸提示界面; 當備用電源失效或從新生效以後,如何指揮系統操做; 定義了"Ctrl+Alt+Delete"組合鍵被同時按下時,系統將採起的行爲; /etc/rc.d/rc.sysinit的主要做用: 1.設置主機名; 2.設置啓動時的歡迎信息; 3.激活udev和SELINX; 4.掛載/etc/fstab/文件中定義的全部有效的文件系統; 5.激活swap設備; 6.檢測rootfs,並從新以讀寫的方式掛載rootfs; 7.設置系統時間 8.根據/etc/sysctl.conf/設置內核參數; 9.激活lvm和軟件RAID等高級邏輯設備; 10.加載額外的設備驅動程序; 11.完成初始化以後的清理工做; /etc/rc.d/rc腳本的主要做用: 1.根據特定的運行級別啓動或關閉對應目錄中的系統服務進程; K*:要中止的系統服務進程 S*:要啓動的系統服務進程 根據for循環遍歷的順序,數字的大小將絕定腳本被執行的前後順序; 2.rc腳本能夠接受一個運行級別的數字表示做爲參數; 3.有rc腳本關聯的/rc.d/rc#.d中的文件實際上是連接文件,其連接目標路徑爲:/etc/rc.d/init.d目錄中的各服務管理腳本; /etc/rc.d/rc.local 是在init程序引導用戶空間進程的過程當中,所執行的最後一個腳本;所以不便於或不須要寫在系統服務相關的腳本中內容,但又指望能夠開機運行的功能,能夠直接寫在此腳本中; 打印登陸提示符:/sbin/mingetty $TTY mingetty程序會調用login程序,打開虛擬終端;除了mingetty以外,諸如getty等之類的程序也能夠完成此類生成虛擬控制檯的功能; 若是默認的運行級別爲5,則須要/etc/x11/preform腳本打卡圖形用戶界面終端; 不管哪一個程序或腳本,最後都會給用戶打印一個登陸提示符;
小結:CentOS 五、6:
1.內核啓動流程:
POST(BIOS) --> BootSequence(BIOS) --> Bootloader(GRUB) --> vmlinuz(initrd|initramfs) --> rootfs(ro) --> /sbin/init命令行
2.用戶空間啓動流程: /sbin/init --> /etc/inittab(/etc/init/*.conf) --> 設置默認的運行級別 --> /etc/rc.d/rc.sysinit,完成系統初始化 --> /etc/rc.d/rc,關閉或啓動相應的運行級別下的各系統服務 --> Ctrl+Alt+Delete組合熱鍵功能 --> UPS電源失效或恢復以後的操做 --> /etc/rc.d/rc.local腳本 --> 生成登陸界面,打印登陸提示符