GRUB2英文文檔的部分翻譯

原文出處:http://www.cnblogs.com/ini_always/archive/2011/04/08/2009654.html

在上一篇拙作中,本人賣了一個關子,其實這個很簡單,如果你堅持看完https://help.ubuntu.com/community/Grub2這個介紹GRUB2的部分,你就已經全懂了,或者看下面這部分,你也會懂的。 ^_^

下面是我對這個頁面選擇性地進行的翻譯(另外一部分沒有翻譯是因爲我覺得對常規用戶用處不大。如果你需要的功能在下面的翻譯中沒有找到,請移步前面的網址去找找看有沒有想要的答案 ^_^)。

另:感覺這個頁面貌似是好幾個人合作寫的,很多地方前後重複,而且還有些地方前後衝突,不過不影響閱讀,更不影響用戶把自己的電腦當小白鼠進行試驗~~~ :D

=================這裏是華麗的分界線=================

GRUB2指GRUB 1.98或者更高的版本,GRUB 0.97版本則被稱爲GRUB。GRUB是GRand Unified Bootloader的簡寫,從ubuntu9.10(Karmic Koala)開始,GRUB2就成爲其默認的啓動加載器(boot loader),負責在開機的時候引導不同的操作系統(如果你的電腦是多系統的話)。可以用grub-install -v來檢測GRUB的版本。GRUB 1.99版本將會作爲ubuntu11.04默認的啓動加載器,這裏講的主要是針對GRUB 1.98版本。

改進

GRUB2相對於GRUB的主要新特性包括:

  • 腳本已經支持條件語句和函數
  • 動態模塊載入
  • 救援模式
  • 用戶自定義菜單
  • 主題
  • 圖形啓動菜單和提升的splash capability(這個我真不知道該怎麼翻譯)
  • 直接從硬盤啓動LiveCD ISO映象
  • 新的配置文件結構
  • 非x86平臺支持(如PowerPC)
  • UUID的通用支持(不只是ubuntu)

GRUB vs GRUB2

GRUB2默認的菜單和GRUB看起來是一樣的,但在這相同的表面之下,兩者卻擁有衆多的不同。

  • 如果只有一個ubuntu系統的話,GRUB2將直接引導至login提示界面或者直接進入桌面,不會再顯示菜單
  • 在啓動過程中按住Shift來顯示菜單(GRUB則是按ESC)
  • 不再有/boot/grub/menu.lst文件,取而代之的是/boot/grub/grub.cfg文件
  • 就算是root用戶,也不建議編輯/boot/grub/grub.cfg主菜單文件
  • 如果有系統更新,內核的添加或者移除,又或者用戶運行update-grub命令,則grub.cfg文件就會被重新寫入
  • 可啓動的內核清單是自動從/boot目錄裏的文件生成的,並不是手動編輯清單文件生成的,可以運行update-grub來更新啓動清單
  • 用戶可以使用/etc/grub.d/40_custom這個自定義文件,這個文件裏面用戶可以放置他們自己的操作系統引導項
  • /etc/default/grub是用來改變啓動菜單的配置文件
  • 有很多文件可以配置啓動菜單,/etc/default/grub,以及/etc/grub.d/文件夾裏面的所有文件
  • 分區的數字順序發生了改變,以前第一個分區是0,現在是1。但現在第一個設備仍然是hd0,儘管這是可以在/boot/grub/device.map裏面改變的
  • 不管update-grub是不是被執行過,都自動搜索其它的操作系統,比如windows
  • 配置文件改動後必須運行update-grub命令纔會生效

安裝

這部分就省略了,因爲從9.10開始就是GRUB2了,我想應該沒人還在用9.04以前的版本,如果需要請前往原文觀摩。 ^_^

文件結構

GRUB2使用了改進的文件和目錄體系,GRUB的menu.lst文件也不再被使用。
GRUB2主要使用的目錄和文件主要包括:

/boot/grub/grub.cfg

這個是最接近GRUB的/boot/grub/menu.lst的文件,它包含了GRUB2的啓動菜單信息,但不像menu.lst,它不建議被直接編輯。

  • grub.cfg中每個部分的信息都使用###BEGIN描述,並且其中的信息是根據/etc/grub.d目錄下的文件生成的
  • 由root用戶運行update-grub命令更新grub.cfg
  • 如果有內核安裝或者移除,或者其它可以改變grub.cfg內容的更新,都會導致grub.cfg自動更新
  • 默認的,不管什麼時候執行update-grub命令,grub.cfg都是“只讀”的,這是爲了防止用戶手動編輯它

用戶應該會注意到/boot/grub目錄下會有很多的.mod文件,這些代表modular nature(汗,真心不知道什麼意思),它們由GRUB按需要加載。

/etc/default/grub

  • 這個文件包含了詳細的配置信息,具有root權限的用戶可以編輯它,並且執行更新指令後會將其合併到grub.cfg文件。

/etc/grub.d/(目錄)

  • 這個目錄內的文件在執行update-grub命令期間會被讀取,它們包含的指令會被合併到grub.cfg文件
  • 啓動菜單項在grub.cfg文件中的先後順序是由這個目錄中的文件執行順序來決定的,具有較小數字前綴的文件會先被執行,如10_linux會在20_memtest之前執行,字母開頭的文件會在數字開頭的文件之後執行
  • 用戶自定義菜單項可以在40_custom中添加,或者在新建文件中添加,根據文件名,40_custom定義的菜單項會在菜單的最底端出現
  • 在執行update-grub命令期間,只有可執行文件纔會生成信息到grub.cfg文件

該目錄默認的文件有:

  • 00_header:設置啓動的一些特性,如圖形界面,默認啓動項,超時時間等。這些設置是由/etc/default/grub裏面的一些信息導入的。用戶通常不需要改變這個文件
  • 05_debian_theme:這個文件設置啓動菜單的背景圖片,文字顏色,選擇高亮顏色及主題。由於默認沒有背景圖片,所以該文件設置了一個單色的主題來顯示啓動菜單。如何設置字體和背景圖片將會在下面的部分講到
  • 10_hurd:定位Hurd內核,目前用不上該文件
  • 10_linux:定位用戶硬盤上目前正在使用的操作系統內核。它取得內核的相關信息並且把這些內核的名字添加到啓動菜單。注意:如果你不想你所有的舊內核都出現在菜單上,那就把它們相關的文件從/boot裏移走
  • 20_memtest86+:搜索/boot/memtest86+.bin並且把它添加到啓動菜單。目前這個選項出不出現在啓動菜單裏都無所謂。如果要禁止這個菜單項,把該文件裏的可執行代碼註釋掉,再運行update-grub即可
  • 30_os-prober:這個文件搜索Linux和其它的操作系統。搜索的結果會加到grub.cfg裏面去。這個文件分成了四部分,分別代表了不同的操作系統類型:windows,Linux,OSX,Hurd。這個文件中的變量決定了菜單中最終顯示的名字。如果用戶熟悉腳本編程,就可以改變這些變量值來改變菜單項的顯示名稱。該文件默認忽略任何處理dmraid信號的風險,這可以利用命令dmraid -r -c列舉出來
  • 40_custom:這個文件是一個添加用戶自定義菜單項的模板,文件中"exec tail -n +3 $0"這一行以下的內容,包括註釋,在執行update-grub後都會被沒有改動地直接添加到grub.cfg文件

配置GRUB2

/etc/default/grub

這個是可以讓用戶修改來改變GRUB默認設置的配置文件,以下是可以由用戶編輯的變量:

  • GRUB_BACKGRUOND:設置背景圖片,要求輸入圖片的全路徑
  • GRUB_DEFAULT:設置默認的菜單項,它的值可以是數字,可以是完整的名稱引用,也可以是"saved"
    • GRUB_DEFAULT=0:用菜單項在grub.cfg中出現的位置來設置默認菜單項,第一個菜單項是0,第二個是1,依此類推
    • GRUB_DEFAULT="xxxx":一個準確的菜單項名字,包括引號,這種情況下,菜單項在grub.cfg中的位置可以不用考慮,例如:GRUB_DEFAULT="Ubuntu, Linux 2.6.31-9-generic"
    • GRUB_DEFAULT="saved":(略)
  • GRUB_SAVEDEFAULT:如果設置成true,則下次啓動的時候,就會選擇上次啓動選擇的系統作爲默認的啓動項(如果/boot目錄在LVM分區或者RAID上,則這一項不起作用)(LVM:邏輯分區;RAID:磁盤陣列)
  • GRUB_HIDDEN_TIMEOUT:這個用於設置一個不出現GRUB2菜單的畫面的顯示時間,在此期間,用戶可以按任意鍵讓菜單顯示出來(後面的部分略)
  • GRUB_HIDDEN_TIMEOUT_QUIET:(略)
  • GRUB_TIMEOUT=10:設置菜單的顯示時間,設置成-1的話就會一直顯示菜單,除非用戶手動選擇了一個操作系統啓動
  • GRUB_DISTRIBUTOR:(略)
  • GRUB_CMDLINE_LINUX:(略)
  • GRUB_CMDLINE_LINUX_DEFAULT:(略)
  • #GRUB_TERMINAL:取消這行註釋,可以禁用圖形終端,回到字符界面
  • #GRUB_DISABLE_LINUX_UUID:如果不想在啓動時GRUB傳遞"root=UUID=xxx"的參數給即將引導的Linux內核的話,可以取消這行註釋
  • #GRUB_GFXMODE=640x480:設置啓動菜單的分辨率,但設置的分辨率要顯卡支持才行
    • 小竅門:把分辨率設置得和操作系統一樣可以減少開機時間
    • 用戶可以添加顏色深度,儘管這不是必需的,例如:1280x1024x32
    • 用戶可以設置多個分辨率,如果GRUB2不能使用第一個分辨率,它會使用第二個,多個分辨率用逗號隔開,如:1280x1024x16,800x600x24,640x480
    • 如果使用了背景圖片,注意分辨率要和背景圖片的尺寸一樣
    • 如果調整分辨率後更新grub.cfg時出現了"not found"的消息提示,試着改變或者增加顏色深度
    • 在GRUB2的命令行使用vbeinfo命令會顯示可用的分辨率列表,在顯示啓動菜單的時候敲一下"c"鍵就可以進入GRUB2的命令行
    • 如果這行被註釋了或者用戶設置的分辨率沒有一個是可用的話,GRUB2就會使用/etc/grub.d/00_header中的默認設置
  • GRUB_DISABLE_LINUX_RECOVERY:取消註釋就可以禁掉啓動菜單中的“恢復模式”菜單項
  • GRUB_INIT_TUNE="480 440 1":取消註釋就可以在啓動菜單顯示之前發出蜂鳴聲
另外可以加進去的變量:
GRUB_DISABLE_OS_PROBER=true:加了這個後,就不會再檢查其它分區的其它系統,包括windows,Linux,OSX,Hurd。

Boot Display Behavior

GRUB2是在加載任何操作系統之前載入內存的,它是按最低需求載入的模塊化組件。菜單顯示的樣式由/etc/default/grub中的設置決定。

Initial Default

如果沒有檢測到別的操作系統, GRUB2會直接引導進入默認的操作系統,並且也不會顯示啓動菜單;如果檢測到其它操作系統的話,才顯示啓動菜單。

Timed Display

啓動菜單將顯示預定的超時時間,如果超過預定的超時時間用戶沒有動作,就會啓動默認的系統。用戶可以通過上下箭頭來手動選擇操作系統,然後按Enter進入,一旦用戶有輸入,設定的超時時間倒計時就會停止。

Hidden(略)

Saved(略)

Last Boot Failed or Boot into Recovery Mode

如果上次啓動失敗或者是以恢復模式啓動的,啓動菜單就會一直被顯示直到用戶作了選擇,前面設定的超時時間在這裏不起作用,要改變這個設置的話,需要修改/etc/grub.d/00_header文件裏的內容。

用戶自定義菜單項(略)

背景圖片和主題

GRUB2設置背景圖片只需要兩步:選擇一幅圖像,然後選擇字體顏色。注意:設置背景圖片需要GRUB 1.98或者更高的版本,對應的ubuntu版本是10.04或者更高。


GRUB2的背景圖片由GRUB_BACKGROUND變量控制,打開/etc/default/grub文件,把這個變量修改成如下形式: 
GRUB_BACKGROUND=/usr/share/images/desktop-base/moreblue-orbit-grub.png
把等號後面的路徑換成你的圖片的位置的正確路徑即可。 
注意:tag,png,jpeg(僅限8位)可以使用,圖片顏色只能是RGB模式,索引模式的圖片則不能顯示。 
設置好後,運行update-grub來更新grub.cfg,如果添加的圖片沒有問題,終端就會顯示出"Found background image..."的消息,如果沒顯示這條消息,就說明圖片設置不成功。


如果圖片不能正確顯示,試着檢查以下內容:

  • /etc/default/grub中的路徑和文件名是否正確
  • 圖片的尺寸是否和設置的分辨率相配,格式是否正確(tga,png,8位jpg)
  • 圖片顏色模式是RGB模式,而不是索引顏色
  • /etc/default/grub中的console模式是否啓用
  • 在修改/etc/default/grub後必須要執行update-grub以更新grub.cfg文件

設置菜單字體和高亮顏色

這些設置包含在/etc/grub.d/05_debian_theme文件裏面,具體要修改哪些部分依賴於是否選擇了背景圖片。

如果選擇了背景圖片:

  • 定位到和"if test -e ${f}; then"對應的else分支,改變WALLPAPER爲GRUB_BACKGROUND對應的路徑。被選中的菜單項的顏色由COLOR_HIGHLIGHT決定,未被選中的菜單項的顏色由COLOR_NORMAL決定。

如果沒有選擇背景圖片:

  • 修改set_mono_theme部分:被選中的菜單項的顏色由menu_color_highlight決定,未被選中的菜單項的顏色由menu_color_normal決定,例如:set menu_color_normal=black/black,第一個顏色是文字顏色,第二個顏色是背景顏色;如果第二個顏色選擇的是black,那麼高亮的行會成爲透明的,並且只有文字會改變顏色。 
    小提示:black是GRUB2默認的透明顏色,如果使用了背景圖片,請只改變第一個顏色而不要改變第二個(如:xxxxx/black),如果改變了第二個顏色,那麼背景顏色會覆蓋在背景圖片上面。
    GRUB2可用的顏色有:black, blue, brown, cyan, dark-gray, green, light-cyan, light-blue, light-green, light-gray, light-magenta, light-red, magenta, red, white, yellow.

小提示:爲了省去重啓電腦來檢查顏色設置的麻煩,用戶可以在啓動時進入GRUB2命令行進行設置,並且可以立即看到這些改變。

  • 重啓,在GRUB2的菜單出來的時候,按c鍵進入GRUB2的命令行
  • 試驗不同的顏色搭配,採用如下命令
  • set color_normal=第一種顏色/black 或者 set color_highlight=第一種顏色/第二種顏色,文字顏色會立即改變
  • 如果試驗完成,按ESC回到啓動菜單
  • 如果不滿意,再到命令行繼續試驗
  • 記住你想要的顏色搭配,進入系統後編輯/etc/grub.d/05_debian_theme,把顏色設置成你剛經過試驗後覺得滿意的顏色
  • 保存,執行update-grub更新grub.cfg文件
發佈了34 篇原創文章 · 獲贊 9 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章