centos6啟動流程圖:
1、POST加電自檢
加載BIOS的硬件信息,獲取第一個啟動設備。自檢主要是檢測一下硬件設備是否存在并且能正常運行。
例如BIOS會檢測CPU、內(nèi)存以及I/O設備是否能夠正常運行,如果是個人計算機的話可能還會檢測一下顯示器。只要一通電,CPU就會自動去加載ROM芯片上的BIOS程序,是這樣來實現(xiàn)的。而檢測完成之后進行硬件設備的初始化。
2、MBR引導加載
當?shù)谝徊阶詸z硬件沒有問題時候,這里以BIOS為例,BIOS將會直接去找硬盤的第一個扇區(qū),找到前446字節(jié),將MBR加載到內(nèi)存中,MBR將告訴程序下一階段去哪里找系統(tǒng)grub引導。
這個階段屬于grub的第一階段。前面的BIOS通過讀取并執(zhí)行啟動設備的MBR中的bootloader,而bootloader要實現(xiàn)的功能就是提供一個菜單給用戶,讓用戶去選擇要啟動的系統(tǒng)或不同的內(nèi)核版本,因為一塊硬盤上可能不止一個操作系統(tǒng)。然后把用戶選擇的內(nèi)核版本加載到RAM中的特定空間,接著在RAM中解壓、展開,而后把系統(tǒng)控制權移交給內(nèi)核。
(推薦教程:centos教程)
3、加載系統(tǒng)內(nèi)核kernel,執(zhí)行系統(tǒng)初始化信息
在Bootloader開始讀取操作系統(tǒng)內(nèi)核文件時,接下來會將內(nèi)核文件解壓縮后裝在到內(nèi)存當中,然后根據(jù)內(nèi)核提供的功能開始加載各個設備。這里的各個操作都是由內(nèi)核來完成的,而我們的內(nèi)核文件通常都存放在/boot目錄當中,并且是一個vmlinux開頭的文件。如下圖所示:
[root@centos6 ~]# cd /boot [root@centos6 boot]# pwd /boot [root@centos6 boot]# ls config-2.6.32-696.el6.x86_64 lost+found efi symvers-2.6.32-696.el6.x86_64.gz grub System.map-2.6.32-696.el6.x86_64 initramfs-2.6.32-696.el6.x86_64.img vmlinuz-2.6.32-696.el6.x86_64 initrd-2.6.32-696.el6.x86_64kdump.img
但是,此時內(nèi)核程序還沒有加載到磁盤,如何讀取內(nèi)核文件呢?如果要先加載磁盤,就要有磁盤驅(qū)動程序,而驅(qū)動程序又在硬盤上,這樣就陷入了一個無限循環(huán)。所以我們要采用一種叫做虛擬文件系統(tǒng)的東西來解決這個問題。同樣的,這個文件系統(tǒng)也放在了/boot下,是一個initrd開頭的文件,如上圖所示。
Boot Loader可以加載kernel和initrd,然后把initrd解壓成根目錄,然后內(nèi)核就可以在這個虛擬的根文件系統(tǒng)上加載驅(qū)動程序,之后釋放根文件系統(tǒng),最后開始正常的啟動過程。
4、啟動init
對于CentOS6來說,init配置文件為:/etc/inittab, /etc/init/*.conf,也就是upstart將配置文件拆分成多個,在/etc/init/目錄下以conf結(jié)尾的都是upstart風格的配置文件,而/etc/inittab僅用于設置默認運行級別。運行級別是為了系統(tǒng)運行或維護等目的而設定,分為0-6,共七個級別:
0:關機(shutdown); 1:單用戶模式(single user):不需要通過認證,登錄進去之后為root用戶身份; 2:多用戶模式(multi user):會啟動網(wǎng)絡功能,但不會啟動NFS; 3:多用戶模式(multi user):為完全功能模式,提供文本界面; 4:預留級別,目前無特別使用目的; 5:多用戶模式(multi user):為完全功能模式,提供圖形化界面; 6:重啟(reboot),reboot;
通常我們使用默認級別3或5,不同級別的頁面是可以切換的,切換方式為:init[0-6],使用runlevel命令來查看當前運行的級別。
5、用戶登錄
相關視頻教程推薦:linux視頻教程