CentOS5、6、7啟動具體流程
基於Intel X86架構平臺的系統啟動流程:
1.POST:Power-On Self Testing,加電自檢;
CMOS:在這裏面有一個EPROM,可擦寫可編程的只讀存儲器;在這裏面保存了一小段程序叫做BIOS程序,全稱為Basic Input Output System,基本輸入輸出系統;
主要目的:對所有的能檢測到的硬件硬件進行功能測試,保證硬件可以正常工作;保證能夠正確的使用各種硬件; 例如:內存條沒插好或者未識別,BIOS就會一直報警,也就是蜂鳴器會一直嘟嘟的響,原來鍵盤沒插好也會報警,現在不會了都是隨接隨用的USB接口的,像光驅、硬盤、軟盤未被檢測到是不會報警的; 1]自檢完成各硬件沒有問題以後後,接下來就會按照BIOS當中定義好的啟動順序來完成系統的啟動引導;
2.BIOS程序中,包含有BootSequence(啟動順序) 也就是你的計算機到底是從光盤引導啟動、還是從硬盤引導啟動,還是...
主要目的:決定到底從何種設備上加載操作系統內核;通常可選的設備包括:光驅,硬盤,可移動設備(U盤),網絡接口; 主要方式:按照給定的順序,依次查找各個設備,第一個被找出有引導程序(Bootloader)的設備即為本次啟動要用到的設備; Bootloader:引導程序,引導加載器;有一部分保存在MBR當中 對於Linux來說一般有有兩種引導加載工具: 1)LILO:Linux Loader;有缺陷:不支持大硬盤,超過1024個柱面的磁盤都不支持;優點:引導速度很快 2)GRUB:GRand Uniform Bootloader,全球統一引導加載器; 先裝Windows再裝linux照樣可以使用grub引導啟動,實現兩種系統共存,Windows 8以後就不行了; CentOS 6-: GRUB 0.x:Legacy GRUB CentOS 7+: GRUB 1.x:grub2 GRUB提供的功能: 1) 為用戶提供了一個可供選擇的菜單,菜單中以列表的方式列舉了各個可以引導啟動的操作系統內核; 2) 可以將用戶選定的內核核心文件裝載到RAM中,並予以解壓縮,展開之後,將系統的控制權移交給內核; 3) 可以提供交互式的命令行接口; 4) 通過私密口令來保證菜單和內核啟動屬性的安全性; 2]找到引導程序後,引導程序開始負責將內核核心文件解壓縮展開並且移交管理權,接下來就由內核掌管以後的工作了
3.內核被加載後:
進行自身的初始化:
1) 探測能夠識別到的所有的硬件設備;
2) 加載硬件的驅動程序,有可能要借助於ramdisk/ramfs加載驅動程序;
3) 以只讀的方式掛載根文件系統;
4) 在根文件系統中查找並運行第一個用戶空間中的應用程序:/sbin/init
3]內核的加載完成,文件系統的使用完成,並且找到了真正的init程序的位置,然後管理權移交給init
4.Init:
CentOS 5中的init程序:
SysV Init
配置文件:/etc/inintab ※※※非常重要
CentOS 6中的init程序: Upstart Init 配置文件:/etc/inittab現在只保存了默認的運行級別是什麽樣的這一行,幾乎被廢棄; 更多的功能會被設置在/etc/init/*.conf CentOS 7: Systemd基本上就與init沒關系了,借鑒了蘋果的MACOS引導加載方式 配置文件:/usr/lib/systemd/system/*
CentOS7系統的啟動流程
1.內核啟動流程:
POST(BIOS) --> BootSequence(BIOS) --> Bootloader(GRUB) --> vmlinuz(initrd|initramfs) --> rootfs(ro) --> /sbin/systemd
Init程序:systemd,與經典的init程序完全不同;
systemd的配置文件:
/etc/systemd/system/*
/usr/lib/systemd/system/*
其中保存的文件,統稱為“Systemd的Unit file”
註:/etc/inittab文件被徹底廢棄;
systemd在設計分隔上完全兼容了SysV風格的Init程序及腳本;因此,service類的命令在CentOS中依然可以被使用,但其結果是執行命令時重定向到systemctl命令上;建議使用CentOS7中systemd的服務管理命令:systemctl,來管理和控制系統服務的關閉和啟動
systemctl命令:
systemctl - Control the systemd system and service manager
systemctl [OPTIONS...] COMMAND [NAME...]
其中:
COMMAND為子命令了,systemd實現的功能的體現;
NAME:保存了/usr/lib/systemd/system目錄下的UnitFile的文件名:可以寫完整的UnitFile名稱,可以省略後綴名稱,一旦省略後綴名,默認為service後綴;
用法:
使用systemctl系統管理服務:
systemctl {start|stop|restart|reload|status} name[.service]
設置CentOS 7的默認運行級別
systemctl ste-default {multi-user.target|graphical.target}
查看CentOS 7的當前運行級別
systemctl get-default
systemd程序引導啟動系統的特點:
1.依靠Unit File來啟動所有的服務及功能;
2.每次系統啟動,systemd只啟動自身,其余的程序如果不需要,都不啟動;
小結:
CentOS 7的用戶空間啟動流程:
systemd --> unit file --> 完成啟動
CentOS5、6、7啟動具體流程