1. 程式人生 > >GRUB 的配置文件解析

GRUB 的配置文件解析

內存 文件 等待 顯示 卷標 查看 啟動程序 鏡像文件 grub

原文:http://c.biancheng.net/view/1032.html

本節,我們就來看看 GRUB 的配置文件 /boot/gmb/grub.conf 中到底寫了什麽。命令如下:

[rootdlocalhost ~]# vi /boot/grub/grub.conf
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
#以上為GRUB的整體設置
title CentOS (2.6.32-279.el6.i686)
root (hdO,0)
kernel /vmlinuz-2.6.32-279.el6.i686 ro root=OOID=b9a7ala8-767f-4a87-8a2b-a535edb362c9 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel= auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet

initrd /initramfs-2.6.32-279.el6.i686.img

這個文件的內容可以分成兩部分:前 4 行為 GRUB 的整體設置;title 以下 4 行為要啟動的 CentOS 系統的具體配置。這裏只安裝了一個系統,如果多系統並存,那麽每個系統都會有類似的 title 行存在(不一定都是 4 行)。

我們先看整體設置:

  • default=0:默認啟動第一個系統。也就是說,如果在等待時間結束後,用戶沒有選擇進入哪個系統,那麽系統會默認進入第一個系統。如果有多系統並存,那麽每個系統都會有自己的 title 字段,如果想要默認進入第二個系統,這裏就可以設為 default=1。
  • timeout=5:等待時間,默認是 5 秒。也就是在進入系統時,如果 5 秒內用戶沒有按下任意鍵,那麽系統會進入 default 字段定義的系統。當然,也可以手工修改這個等待時間,如果timeout=0,則不會等待直接進入系統;如果 timeout=-1,則會一直等待用戶輸入,而不會自動進入系統。
  • splashimage=(hd0,0)/gnjb/splash.xpm.gz:用來指定 GRUB 啟動時的背景圖像的保存位置。記得 CentOS 6.x 啟動時後臺的藍色圖像吧,就是這個文件的作用。不過這個文件具體在哪裏呢?我們已經說過,hd(0,0) 代表第一塊硬盤的第一個分區,而筆者的系統在安裝時 /boot 分區就是第一個分區,所以這個背景圖像的實際位置就是 /boot/gmb/splash.xpm.gz。
  • hiddenmenu:隱藏菜單。啟動時默認只能看到讀秒,而不能看到菜單。如果想要看到菜單,則需要按任意鍵。如果註釋了這句話,那麽啟動時就能直接看到菜單了。


再來介紹 CentOS 系統的具體配置:

  1. title CentOS(2.6.32-279.d6.i686):title 就是標題的意思,也就是說,在 title 後面寫入的是什麽,系統啟動時在 GRUB 的啟動菜單中看到的就是什麽。
  2. root(hd0,0):是指啟動程序的保存分區。這裏要註意,這個 root 並不是管理員。在我的系統中,/boot 分區是獨立劃分的,而且設備文件名為 /dev/sda1,所以在 GRUB 中就被描述為 hd(0,0)。
  3. kernel /vmlinuz-2.6.32-279.el6.i686 ro root=UUID=b9a7a1a8-767f-4a87-8a2b-a535edb362c9 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet。其中:
    • /vmlinuz-2.6.32-279.el6.i686:指定了內核文件的位置,這裏的 / 是指 boot 分區。
    • ro:啟動時以只讀方式掛載根文件系統,這是為了不讓啟動過程影響磁盤內的文件系統。
    • root=UUID=b9a7a1 a8-767f-4a87-8a2b-a535edb362c9:指定根文件系統的所在位置。這裏和以前的Linux版本不太一樣了,不再通過分區的設備文件名或卷標號來指定,而是通過分區的 UUID 來指定的。


那麽,如何査詢分區的 UUID 呢?方法有很多種,最簡單的辦法就查詢 /ec/fstab 文件。命令如下:

[root@localhost ~]# cat /etc/fetab | grep"/ "
UUID=b9a7a1a8-767f-4a87-8a2b-a535edb362c9 / ext4 defaults 1 1

可以看到"/"分區的 UUID 和 kernel 行中的 UUID 是匹配的。註意一下 grep 後的"/",在"/"後是有空格的。

以下禁用都只是在啟動過程中禁用,是為了加速系統啟動的:

  1. rd_NO_LUKS:禁用 LUKS,LUKS 用於給磁盤加密。
  2. rd_NO_MD:禁用軟 RAID。
  3. rd_NO_DM:禁用硬 RAID。
  4. rd_NO_LVM:禁用 LVM。


除了以上這樣,命令輸出信息中還包含以下內容:

    1. KEYBOARDTYPE=pc KEYTABLE=us:鍵盤類型。
    2. crashkernel=auto:自動為crashkernel預留內存。
    3. LANG=zh_CN.UTF-8:語言環境。
    4. rhgb:(redhatgraphics boot)用圖片來代替啟動過程中的文字信息。啟動完成之後可以使用dmesg命令來查看這些文字信息。
    5. quiet:隱藏啟動信息,只顯示重要信息。
    6. initrd/initramfs-2.6.32-279.el6.i686.img:指定了initramfs虛擬文件系統鏡像文件的所在位置。

GRUB 的配置文件解析