『學了就忘』Linux啟動引導與修復 — 70、grub啟動載入程式的配置檔案說明

繁華似錦Fighting發表於2021-12-09

1、grub中分割槽的表示方法

在說grub啟動載入程式的配置檔案之前,我們還需要了解一下,在grub中分割槽的表示方法。

從下圖中我們可以看到,Linux系統的分割槽中是/dev/目錄下自動識別裝置分割槽名稱,關於Linux系統的分割槽命名請看之前文章中的介紹。但是在grub的分割槽中,是有自己一套獨立的標識方式,無論是SATA介面的硬碟還是IDE介面的硬碟,都用hd來表示硬碟(不再像Linux系統分割槽,識別成hdsd了)。括號中第一位數表示第幾塊硬碟,第二位表示硬碟中的分割槽號。

如下圖所示:

image

2、grub的配置檔案

上一篇文章我們說過,grub啟動載入程式的配置檔案有三個,原始檔是/boot/grub/grub.conf,而/boot/grub/menu.lst/etc/grub. conf檔案是/boot/grub/grub.conf檔案的兩個軟連結檔案,說白了三個檔案就是一個檔案。

檢視grub的配置檔案,內容如下:

執行命令:[root@localhost ~]# vim /boot/grub/grub.conf

結果如下圖所示:

image

在實際工作中的伺服器上,不可能安裝多系統,原因

  • 第一、選擇需要進入的系統需要在本機上選擇,而我們的伺服器往往遠處。
  • 第二、多個系統佔用過多的系統資源。
  • 第三、虛擬機器比真實機使用起來方便很多,比如系統崩潰了,恢復快照就可以等,根本沒有必要安裝多系統。

3、grub的配置檔案內容說明

(1)grub的整體設定

1)default屬性

default=0:預設啟動第一個系統。也就是如果在等待時間結束後,使用者沒有選擇進入哪一個系統,那麼系統會預設進入第一個系統。如果有多系統並存,那麼每個系統都會有自己的title欄位,如果想要預設進入第二個系統,這裡就可以設為 default=1,以此類推。

2)timeout屬性

timeout=5:等待時間,預設是5秒。也就是進入系統時,如果5秒內使用者沒有按下任意鍵,那麼系統會進入default欄位定義的系統。當然可以手工修改這個等待時間,如果timeout=0則不會等待直接進入系統,timeout=-1則是--直等待使用者輸入,而不會自動進入系統。

說明:

在進入Linux系統的時候,會出現如下畫面:

image

此畫面讀秒的時候,按下任意鍵,就可以進入到grub啟動載入程式,選擇需要啟動的系統。

如下圖所示:

image

這個timeout=5就是圖1中的讀秒數。

這裡還有要注意一點,在圖2介面的時候,Linux系統是沒有啟動好的,網路卡此時並沒有載入好, 所以遠端終端是無法連線的,這就是上面說的只有到本機上才能操作。

3)splashimage屬性

splashimage=hd(0,0)/grub/splash.xpm.gz:這裡是指定grub啟動時的背景影像檔案的儲存位置的。記得CentOS 6.X啟動時後臺的藍色影像吧,就是這個檔案的作用。hd(0,0)代表第一個硬碟的第一個分割槽,而我們在系統安裝時,/boot分割槽就是第一個分割槽,所以這個背景影像的實際位置就是/boot/grub/splash.xpm.gz(說明hd(0,0)=/boot)。

4)hiddenmenu屬性

hiddenmenu:隱藏選單。啟動時預設只能看到讀秒,而不能看到選單,如果想要看到選單需要按任意鍵。
如果註釋了這句話,那麼啟動時就能直接看到選單了。

以上就是grub的整體設定,個人覺得除了default屬性,其他的都沒有什麼好修改的。

(2)CentOS系統的啟動設定

接下來介紹CentOS系統的啟動設定。

1)title屬性

title CentOS(2.6.32-279.el6.i686)title就是標題的意思,也就是說在title後面寫入的是什麼,那麼系統啟動時在grub的啟動選單中看到的就是什麼,如上圖中的選項名稱。

如果有多個系統,每個系統都會有一個title屬性。

2)root屬性

root hd(0,0):是指啟動程式的儲存分割槽(也可以說是主啟動目錄的位置)。這裡要注意啊,這個root並不是管理員使用者,也不是根目錄同級的root目錄,而是主啟動目錄的位置。在我的系統中,/boot分割槽是獨立劃分的,而且裝置檔名為/dev/sda1,所以在grub中,就被描述為hd(0,0),也就是說root/boot分割槽下的根目錄。

3)kernel屬性

kernel屬性就是描述核心載入的選項,下面簡單說明一下:

  • /vmlinuz-2.6.32-279.el6.i686:指定了核心檔案的位置,這裡的/是指/boot分割槽。
  • ro:啟動時以只讀方式掛載根檔案系統,這是為了不讓啟動過程影響磁碟內的檔案系統。(這些選項都是在系統啟動過程中的選擇)
  • root=UUID=b9a7a1a8-767f-4a87-8a2b-a535edb362c9:指定根檔案系統的所在位置。這裡和以前的Linux版本不太一樣了,不再是通過分割槽的裝置檔名或卷標號來指定,而是通過分割槽的UUID來進行指定。那麼如何查詢分割槽的UUID號呢?方法有很多種,最簡單的辦法就是查詢/etc/fstab檔案,命令如下:
    image
    可以看到/分割槽的UUID和kernel行中的UUID是匹配的。
    注意一下,grep命令後的·/ ,在/後是有空格的。
  • rd_NO_LUKS :禁用LUKSLUKS用於給磁碟加密。
  • rd_NO_MD :禁用軟RAID
  • rd_NO_DM:禁用硬RAID
  • rd_NO_LVM :禁用LVM。以上禁用都只是在啟動過程中禁用,是為了加速系統啟動的。(啟動完了自動開啟,所以這些屬性我們不必太關注)
  • KEYBOARDTYPE=pc KEYTABLE=us :鍵盤型別。
  • crashkernel=auto:自動為crashkernel預留記憶體。
  • LANG=zh_CN.UTF-8 :語言環境。
  • rhgb:(redhat graphics boot)用圖片來代替啟動過程中的文字資訊。啟動完成之後可以使用dmesg命令來檢視這些文字資訊。(如啟動時候的百分比等)
  • quiet:隱藏啟動資訊,只顯示重要資訊。(系統啟動的時候按ESC鍵,可以檢視隱藏的資訊)

提示:以上這麼多資訊,我們平時真的用不到,大概知道什麼意思就可以了。

4)initrd屬性

initrd /initramfs-2.6.32-279.el6.i686.img:載入虛擬檔案系統,指定了initramfs記憶體檔案系統映象檔案的所在位置。

5)總結

以上四條屬性,titlerootkernelinitrd都是自動生成的,我再新安裝一個作業系統,這四個屬性也是自動生成,能看懂就好,這四個屬性不用我們修改。

相關文章