歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> GRUB引導程序配置文件分析

GRUB引導程序配置文件分析

日期:2017/2/28 14:45:36   编辑:Linux教程

GRUB引導程序利用4項內容啟動系統:一個內核文件、驅動器名、內核文件所在的分區號和一個可選的初始RAM磁盤。GRUB有兩種啟動方式:一個是直接查找並加載想要的內核,這是大多數linux發行版本的啟動方式。GRUB還支持一種叫做鏈式加載的啟動方法:GRUB用這個方法去加載另一個引導程序,例如Windows的加載器,然後這個引導程序加載想要的操作系統內核。這樣就使GRUB可以用其他操作系統的引導程序引導進入這些操作系統。

當然,GRUB引導程序是可配置的。它的配置文件名為grub.conf(Ubuntu系統中名為menu.lst)。在RedHat中,grub.conf位於/boot/grub/路徑下,也通常會符號連接為/etc/grub.conf。下面是一個RHEL5.5中的grub.conf文件。

上圖顯示了grub引導redhat操作系統所需的信息。這和ubuntu或者其他使用grub的linux主機裡的grub.conf文件很相似。grub.conf文件列出了每個可啟動的內核(內核對應操作系統)。配置選項制定哪一個是默認加載的內核,其他選項控制菜單的顯示與配置。

繼續深入看一下這個配置文件。注釋的最後一行#boot=/dev/sda是啟動設備。它是由anaconda redhat安裝程序加載的,grub會忽略它,因此用#號注釋掉。配置的第一行default=0指明那一個內核是默認加載的,我們可以選擇任何操作系統作為啟動時默認加載的操作系統。如果所定義的內核不止一個,grub會按從頭到尾的順序讀取,第一個內核標號為0 ,第二個標號1,以此類推。例如,如果設置默認加載第三個內核,配置文件就得指定default=2。timeout=5設置超時值,它指定了grub程序應該等待多少秒才可以開始加載默認內核。如果在等待的過程中按了任意鍵,這個計數就會被打斷,然後顯示grub菜單。

配置第三行是閃屏圖像的位置,它為grub菜單提供背景圖片。它通過磁盤、分區以及在文件系統中的位置定位;這裡的(hd0,0)/grub/splash.xpm.gz表示splash.xpm.gz文件位於安裝在主機上的第一塊硬盤驅動器hd0,0中的第一個分區的/grub目錄裡。

下一行hiddenmenu指令告訴grub要默認隱藏它的菜單,並啟動加載默認內核的倒計時。按任意鍵都會停止倒計時,並顯示菜單。

再往下面是第一個內核的說明。每個可啟動的內核都會列在這裡,第一個內核是0,第二個是1,等等。在上面的圖中只有一個內核被列出。每次升級內核(一般通過安裝一個新的內核軟件包完成),都會另外增加一個輸入項,一般同時會有一個較老的內核從列表中刪除並卸載。

每個內核說明中都會有許多配置變量。第一個是title,他表示一條說明的開始。這也是那個內核在菜單屏幕上所顯示的標題字符串。下一個選項root,指明到哪尋找內核的根分區;如圖中hd0,0表示內核被安裝在主機上的第一塊硬盤驅動器上的第一個分區。grub就在這個指定的位置尋找所想要的內核。

內核選項要指定要加載的內核名、內核的位置以及如何加載內核,可能還要給要處理的內核傳遞選項。圖中配置文件指定grub將加載一個版本為2.6.18的內核,它的根分區位於一個LVM卷組上。rhgb意為redhat graphics boot,就是會看到圖片來代替啟動過程中顯示的文本信息(其實,這些信息在啟動後用dmesg命令也是能查看到的)。quite的作用是使啟動過程中只顯示重要的消息,而類似硬件自檢等消息則不會顯示。

最後,grub程序大多時候要知道一個叫initrd的特殊文件的位置。這個文件是一個微型的文件系統,它包括使用主機硬件所需的大部分驅動程序。不是所有內核都需要initrd文件,例如,一些特別編譯的內核有時不需要initrd文件。推薦使用發行版提供的主流內核。

grub還有很多配置選項,這裡不一一贅述。使用grub菜單幾乎可以處理所有的配置設置。有興趣的朋友可以查詢相關資料,如http://www.gnu.org/software/grub/manual/grub.html有相關介紹。

Copyright © Linux教程網 All Rights Reserved