grub相關說明

GRUB相關說明: linux


主要是由device.map,menulst,stage1,stage2,以及一系列的stage1_5組成。網絡


device.map:存放的是內核文件的根分區ide


menu.lis:爲菜單列表,裏面爲可選擇的菜單列表,存放於stage2中。spa


stage:用於grub引導程序過大,因此分2段引導,第一段存放在MBR中,第二段存放於內核文件系統中,第一段引導完成後能夠找到第二段。 可是,第二段是存放於內核文件系統中的,此時尚未格式化文件系統,如何能夠訪問到第二段的menu.lst,就須要藉助於中間層 stage1_5,有它來協助 stage1 段來訪問stage2階段。stage1_5一般位於stage1 字段後的 63 個扇區。 因爲stage2 在內存中存放可使用的文件系統不肯定,因此這就是有多個stage1_5 的緣由。操作系統


Grub Legacy:分三階段接口

stage1:存放在MBR上進程

stage1_5:存放在MBR以後的扇區,讓stage1中的bootloader能識別stage2所在的分區上的文件系統;內存

stage2:磁盤分區(/boot/grub/)it


引導加載程序先讀取MBR上的gurb第一階段,因爲MBR很小隻有512字節採用grub這種方式引導程序,隨後讀取扇區中的stage1.5階段,讀取1.5階段之後從而就能驅動第二階段stage2所在的磁盤分區,stage2是存放在磁盤分區上的還包括了內核文件及ramdisk等都在這個分區上存放的;這就是爲何經過Bootloader之grub就可以加載內核文件的緣由。io


注意:當前硬件平臺,主板BIOS必須能識別硬盤,而後BIOS才能加載硬盤中的Bootloader,磁盤中的Bootloader自身加載完之後,就可以識別當前主機上的硬盤設備了。


但硬盤設備能識別,並不表明硬盤上的文件系統能識別,由於文件系統是額外附加的一層軟件組織的文件結構,因此要可以對接一種文件系統,必需要用到文件系統驅動;對應的應用程序必須能識別和理解這樣的文件系統才能夠,這種程序就稱爲文件系統驅動;grub的1.5階段就是給gurb提供了文件系統驅動的,從而就可以訪問對應的第二階段和內核所在的分區了,這一般是一個基本磁盤分區;因此grub第二階段以及內核和ramdisk文件一般都會放在一個基本磁盤分區上;由於grub驅動不了邏輯卷這種高級接口。


stage2通常是掛載至/boot/grub/目錄下;grub也有本身的配置文件:/boot/grub/grub.conf且一般有個符號連接文件:/etc/grub.conf;


stage2的功用:

 (1)提供菜單或交互式接口;

 (2)能加載用戶選擇的內核或操做系統;

 (3)爲菜單經過了保護機制。


/boot/grub/grub.conf配置文件詳解:


進入單用戶模式: 

1)編輯grub菜單,選定要編輯的title,然後使用e命令  

2)在選定的kernel後附加1 ,s 或single  

3)在kernel所在的行,鍵入b鍵      

演示:

啓動時按e鍵:


上下選擇到kernel後按e編輯輸入1或s、S、single,再次按b鍵重啓


六、根切換

  在掛載根文件系統時爲了不內核中有bug或操做過程當中有bug致使根文件系統被損壞,先只讀掛載根文件系統,加載完成後纔讀寫掛載,完成整個掛載根文件系統後,直接去找/sbin/init程序,即開始運行用戶空間的第一個程序。


用戶空間啓動流程

七、/sbin/init程序

  init程序主要依賴於配置文件:/etc/inittab,大致分爲:設定默認啓動級別 --> 設定系統初始化腳本 --> 啓動對應級別的服務 --> 打印各終端登陸界面(若是級別爲3處理提供文本登陸界面,若是級別爲5還提供圖形登陸界面)


八、設置默認運行級別

  (1)運行級別:爲了系統的運行或維護等目的而設定的機制;

    0-6:共7個級別;

     0:關機,shutdown

     1:單用戶模式(single user),root用戶,無須認證,維護模式;

     2:多用戶模式(multi user),會啓動網絡功能,但不會啓動NFS,維護模式;

     3:多用戶模式(multi user),徹底功能模式,文本界面;

     4:預留級別:目前無特別使用目的,但習慣以同3級別功能使用;

     5:多用戶模式(multi user),徹底功能模式,圖形界面;

     6:重啓,reboot


圖示:

讀取配置文件:/etc/inittab


(2)配置文件:/etc/inittab定義了不少功能,每一行定義一種操做(action)以及與之對應的process(僅適用於CentOS 5),一行就定義了init要執行的任務,甚至是一堆任務,每一行的語法格式爲:   

                                                          id:runlevels:action:process

  id爲一個任務的標識符;

  runlevels:在哪些運行級別下啓動此任務;例:3,2345,也可爲空表示全部級別;

  action:在什麼條件下啓動此任務;

    wait:等待切換至此任務所在的級別時執行一次(剛剛切換進來時);

    respawn:一旦此任務終止時,就自動重啓;(如:登陸終端執行logout登出後會再次啓動)

    initdefault:設定默認容許級別;此時process省略爲空;

    sysinit:設定系統初始化方式,此處通常爲指定/etc/rc.d/rc.sysinit腳本;(CentOS 5,6都用到此腳本,CentOS 7是靠systemd完成的),在CentOS 6中僅保留此配置文件中設定啓動運行級別的功能。

    process:具體任務;一般爲應用程序,或腳本,或二進制的程序,取決於自定義。


演示:


九、系統初始化腳本

系統初始化腳本:/etc/rc.d/rc.sysinit

(1)設置主機名;

(2)設置歡迎信息;

(3)激活udev和selinux;

(4)掛載/etc/fstab文件中定義的全部文件系統;

(5)檢測根文件系統,並以讀寫方式從新掛載根文件系統;(從新掛載是指根文件檢測完以後)

(6)設置系統時鐘;

(7)根據/etc/sysctl.conf文件來設置內核參數;

(8)激活lvm即軟raid設備;

(9)激活swap設備;

(10)加載額外設備的驅動程序;(內核加載驅動只加載根文件系統的)

(11)清理操做;


注意:在init配置文件:/etc/inittab中,有一行內容是定義/etc/rc.d/rc.sysinit,此腳本文件是負責完成系統初始化的腳本文件。


十、關閉/啓動對應級別下的服務

  腳本文件/etc/rc.d/rc做用爲當級別切換時啓動或中止服務;此腳本接受傳遞的參數給腳本中$runlevel變量,而後,讀取/etc/rc$runlevel.d/K*和/etc/rc$runlevel.d/S*全部文件,這些文件就是爲何開機啓動後,有些服務會自動啓動,有些服務沒有啓動的緣由。

K*:要中止的服務,K##*,優先級,數字越小,越優先關閉,依賴的服務先關閉,而後再關閉被依賴的。

S*:要啓動的服務,S##*,優先級,數字越小,越是優先啓動,被依賴的服務先啓動,而依賴的服務後啓動。

/etc/rc.d/init.d目錄還有個連接目錄爲/etc/init.d目錄,這兩目錄下文件相同。


如上訴定義將會啓動3級別下的以S打頭的進程:

圖示:


十一、啓動終端(圖形終端)

 操做系統啓動完成

相關文章
相關標籤/搜索