適用環境:MBR類的X86PC兼容架構;不適用于其它架構或UEFI的PC架構;
系統組成:
內核功能
文件系統、進程管理、網絡協議棧、內存管理、驅動、安全加密
內核功能實現通過內核模塊;裝載模塊就有此功能,不裝載就沒有此功能;
內核特點
支持模塊化
支持動態裝載或卸載
使用緩沖和緩存來加速對磁盤上的文件訪問
操作系統的組成
運行中的內核
Kernel + 根文件系統
內核空間 + 用戶空間
從磁盤的視角
內核只是一個靜態文件;
如何將一個靜態的內核啟動起來?
啟動:將內核加載至內存中,運行起來;
沒有那么契機,沒有唐僧揭去壓猴石條,猴子是蹦不出來的;
內核通過根文件系統的驅動關聯根文件系統;文件系統驅動在根上;
內核需要自帶驅動:
如果是自己使用:僅編譯進一個硬盤的驅動;
如果是所有人都使用這個內核:就要將所有的硬盤的驅動全部編譯進內核;缺點:內核體積大。
為了解決這個問題:通過ramdisk一個臨時的根文件系統,僅有當前系統獨有的驅動,在操作系統安裝后動態生成;
注意:ramdisk并非是必須的,完全可以將驅動編譯進內核供自己使用;
內核的組成:
內核文件: /boot/vmlinuz-VERION-release
根文件系統: 遵循FHS層級結構標準,內核啟動后關聯的分區;有bin, sbin, lib, lib64, etc, proc, sys, var, usr等目錄
內核模塊:/lib/modules/VERSION-release/ 目錄下有各種驅動,為實現內核功能,例如:文件系統模塊;網絡協議棧;安全加密;內核管理;等;
磁盤映像:/boot/initrd-VERSION-release.img 或 /boot/initramfs-VERSION-release.img
ramdisk:基于內存中的磁盤映像
CentOS5: initrd
CentOS6,7: initramfs
區別:
initrd: 基于內存中的磁盤映像
initramfs: 基于內存中的文件系統
內核特性之一:使用緩沖和緩存來加速對磁盤上的文件訪問
所有initrd本身在內存中,仍需要緩沖一次;
initramfs:本身是文件系統不需要再緩沖;
完整的系統啟動流程
內核空間 –> 用戶空間
LILO啟動次序:POST –> bootloader –> kernel(ramdisk) –> init(/etc/inittab)
GRUB啟動次序:POST –> bootloader(1st) –> grub(2nd) –> kernel(ramdisk) –> init(/etc/inittab)
POST(Power On SafeTesting)
ROM芯片中COMS提供的BIOS指令完成加電自檢;
內核運行在硬件之上,硬件是提供計算能力的最基礎的保證;
Boot Seqence
BIOS從啟動次序中查找第一個可引導設備(MBR),即為本次要啟動的設備
Bootloader
MBR前446Bytes是Bootloader;
Bootloader功能:提供一個菜單,允許用戶選擇要啟動的系統或不同內核版本;把用戶選定的內核裝載到RAM中的特定空間中,解壓、展開,而后把系統控制權移交給內核;
安裝在U盤、光盤、硬盤中第0磁盤的第0扇區
MBR組成:
446Bytes: bootloader
64Bytes: fat
4Bytes: 磁盤有效標識
Bootloader分類:
Windows:ntloader
Linux:
LILO: 用446Bytes(ASCII碼;一個1Bytes對應一個字符)寫bootloader程序是極困難的;
GRUB: 通過驅動完成加載磁盤,實現更多的功能;
GRUB 0.x: grub legacy
GRUB 1.x:grub2
Kernel
被加載至內存的內存,自解壓展開;內核初始化,即內核空間;
內核初始化:
(1) 探測可識別的所有硬件設備;
(2) 加載硬件驅動程序;有可能借助于ramdisk加載驅動;
(3) 以只讀方式掛載根文件系統;
(4) 運行用戶空間的第一個程序/sbin/init
注意:加載init后,內核只會參與發生中斷后運行內核空間代碼的過程
init(/etc/inittab文件)
init被創建,即用戶空間;人間的一切事務均由其代理完成;
設定默認運行級別
初始化
(1) 主機名
(2) 歡迎信息
(3) 激活udev和selinux
(4) 掛載/etc/fstab中定義的所有文件系統
(5) 檢測根文件系統,重新掛載根
(6) 設備系統時間
(7) 根據/etc/sysctl.conf設置內核參數
(8) 激活lvm及軟RAID
(9) 激活swap設備
(10) 加載額外驅動
(11) 清理臨時文件,初始化過程中生成的臨時文件;
關閉和啟動服務
打印登陸提示符
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/89053