Grub2 simple

出自Ubuntu 正體中文 Wiki

跳轉到: 導航, 搜尋


頁面品質不佳
本頁面由於以下原因,被認為品質不佳:

編輯中



本文為GRUB 2 中文指南的簡化版本,目的是讓一般人能快速設定好一個可用的開機選單。
由於許多技術細節都會被隱藏,如果你有不了解的地方,你應該檢視GRUB 2 中文指南
進階使用者,由其是使用特殊設定的使用者,請參閱GRUB 2 中文指南

以下教學會用到指令,請查閱該頁面以了解更多。
你必需對於磁碟管理有基本認識,請參考該頁面。

GRUB 2 是 Ubuntu 9.10 (Karmic Koala) 的以及後續版本預設的開機管理程式,你可以由以下指令確認您所安裝的版本:

grub-install -v

如果版本數字大於 1.96 ,則你所使用的為 GRUB 2。

自 GRUB 升級

在使用者確認進行完全的轉換前,會執行一個程式確認 GRUB 2 能在您的電腦上工作。請注意,升級至 GRUB 2 只是一個可選選項,升級發行版並不會將 GRUB 升級到 GRUB 2 ,你必需手動更新。

套件管理員中選擇安裝 grub-pc ,或輸入以下指令:

sudo aptitude install grub-pc

1. 在第一個提示中,閱讀這些訊息,按下 tab 移至「OK」並按下 ENTER。
Grub2.upgrade.ok.sm.png

2. 在選擇「OK」後,下一個選項允許使用者在正常的 GRUB 選單中透過新增一個選項來測試 GRUB 2。
選擇「Yes」將在 GRUB 選單中增加一個 Chainload 選項。當下次使用 GRUB 開機時,使用者可以選擇正常的 GRUB 選項或是將控制權透過 Chainload 選項轉移至 GRUB 2。
也就是說,開機後的控制權是由 GRUB 轉移至 GRUB 2 最後才會進入 Ubuntu。

3. 下一步將會把來自 GRUB 的 menu.lst 的內容匯入「Linux command line」(如下圖),或許還會匯入至「Linux default command line」。
這些項目允許使用者輸入特殊指令,例如 quiet, splash, noapic 等。
GRUB 2 會自動匯入這些設定。你通常只需接受現有的選項並選擇「OK」。若有需要,選項可於稍後加入。更多細節請參考設定 小節。
Grub2.command.line.ok.sm.png

當安裝在一個全新磁碟上,您可能需要標記所選的分割區為可開機的(bootable)。

4. 當系統已安裝完成 GRUB 2,使用者可重新啟動並看到已更新的 GRUB 選單歡迎畫面。
如圖所示,使用者將會看到一個「Chainload」選項,它將會測試 GRUB 2 安裝。
選擇 Chainload 選項將會把控制權轉移至 GRUB 2 並顯示 GRUB 2 選單。
Grub2.chainload.grub.sm.png

4a. 在選定選項的時候 Jaunty 使用者可能會碰到一個「無法辨識的裝置字串 (Unrecognized device string)」Error 11。
如果發生此情形,按下「e」直到您看到一行開頭為「grub edit>root」的文字。把「root」改為「uuid」,按下 ENTER,然後按「b」來啟動。更多關於 Error 11 的細節可以在命令列和救援模式小節中找到。

5. 測試新選項並注意到 Grub 1.9x 版本編號(新增高亮度部份)。
2.Grub2.chainload.grub2.sm.png

6. 若 GRUB 2 選單功能正常,使用者可執行以下指令以升級至 GRUB 2:

sudo upgrade-from-grub-legacy

2.Grub2.select.boot.png

在安裝期間,使用者可能會需要提供選擇,決定要將 GRUB 2 安裝在哪個裝置(硬碟)上。使用上/下鍵來選擇一個裝置(sda, sdb 等等),然後按下空白鍵來選定該裝置。
一旦至少一個以上的裝置被選擇後,使用 TAB 鍵將 OK 反白,然後按下 ENTER。未成功選擇一個裝置將會導致 GRUB Error 15 錯誤產生並導致安裝失敗。
在成功升級至 GRUB 2 之後,程式會告知使用者有些 GRUB 設定檔依然在系統中,並可被移除。以下為執行此動作的指令

rm -f /boot/grub/menu.lst*

執行 rm 指令時請特別慎重。不正確輸入此指令可能導致重要的系統設定檔被永久的刪除。

主要檔案

以下列出 GRUB 2 的主要檔案和目錄

/boot/grub/grub.cfg

這是最相似於 GRUB /boot/grub/menu.lst 的檔案。(僅是相似,部份功能不同)
此檔案中包含了 GRUB 2 選單資訊,但不像 GRUB 的 menu.lst,此檔案不該手動編輯

如果要更改選單內容,你需要:

  1. 修改 /etc/grub.d 目錄中的檔案
  2. 執行 sudo update-grub 來更新此檔案的內容

/etc/default/grub

  • 此設定檔包含以前在 GRUB 的 menu.lst 前半部段落以及每行核心設定後面的物件資訊。
  • 在此檔案中的條目可以由具有管理者(root)權限的使用者編輯,並會在更新時合併至 grub.cfg 中。

具體的設定選項可以在此小節稍後的設定 中找到詳細資訊。

/etc/grub.d/(目錄)

此目錄中的檔案將會於執行 update-grub 的時候讀取,並依序將其內容加入至 /boot/grub/grub.cfg 。
檔案名稱中的數字越小,其內容就會排在越前面。如 10_linux 將會在 20_memtest 之前,而 40_custom 將在最後。若檔名全為英文字母,將會在數字名稱的檔案後。
自訂選項可以放在 40_custom 檔案,或新的檔案中。如開頭為 06_ 的檔案,它的內容將會出現在最上方,因為他的字母排序將會在 10_ 和 40_ 之前。

在 update-grub 執行過程中,只有可執行檔會輸出至 grub.cfg。
你可以使用以下指令將檔案變為可執行:

sudo chmod +x [檔案名稱]

在此目錄中的主要檔案為:

  • 05_debian_theme - 佈景主題的設定,見開機影像和佈景主題小節
  • 10_linux - 指定作業系統目前使用中的 root 裝置核心位置
    • 此資訊將會取用來建立這些核心顯示在選單中的名稱。因為有 10_linux 中的指令,我們不需要手動來建立顯示在選單中的核心名稱列表
    • 隨著核心的更新,你會發現選單越來越長,你可以使用套件管理員,來移除舊的核心
  • 20_memtest86+ - memtest86+ 主要是進行記憶體測試
    • 移除此檔案的執行權限,指令:sudo chmod -x /etc/grub.d/20_memtest86+ 使它隱藏
  • 30_os-prober - 此檔案使用 os-prober 來搜尋 Linux 和其他作業系統。結果將會依據此檔案中的內容而放至 grub.cfg 中
    • 此檔案被劃分成四個段落,代表四種作業系統類型:Windows, Linux, OSX 和 Hurd
    • 我們只建議熟悉指令稿的使用者修改這個檔案
  • 40_costom - 用來加入自訂選項的檔案
    • 會在執行 update-grub 指令時嵌入至 grub.cfg 中。請將選項放在「exec tail -n +3 $0」這一行和預設的註解後

設定

/boot/grub/grub.cfg 檔不應直接編輯,你應該修改/etc/default/grub 和 /etc/grub.d 目錄中的自訂檔案。
某些最常見的變更,例如預設的作業系統/核心和選單逾時,可以經由一個圖形化使用者介面應用程式 StartUp-Manager 來修改。

/etc/default/grub(檔案)

主要設定檔。在安裝時,以下內容可由使用者變更:

  • GRUB_DEFAULT - 設定預設選單選項。選項可以是數字、完整的選單選項文字或是「saved」。
    • GRUB_DEFAULT=0 以選單位置來設定預設選單選項。如同 GRUB,在 grub.cfg 中的第一筆「選單選項」為 0,第二筆為 1,以此類推。
    • GRUB_DEFAULT="xxxx" 一個完全相同的選單條目,包含雙引號,也可被使用。在此例中,選單中的位置不會有影響。例如:GRUB_DEFAULT="Ubuntu, Linux 2.6.31-9-generic"
    • GRUB_DEFAULT=saved
      • 此功能僅於 GRUB 1.98 及之後版本中。
      • 使用「grub-reboot」和「grub-set-default」指令來設定預設作業系統。
      • 預設作業系統不會由來自選單中的互動式選擇而被設定。
      • grub-set-default 設定預設開機選項直到有所變更。
        • 格式為 sudo grub-set-default X,此處的 X 代表選單選項的位置(第一筆由 0 開始)或是完全一致的選項字串。例如:sudo grub-set-default 3 將使用選單選項位置,或是 sudo grub-set-default "Ubuntu, Linux 2.6.32-15-generic" 表示選單選項字串。
        • 欲取得現存的選單選項選擇數字(由 0 開始)或是選單選項「字串」,執行 grep menuentry /boot/grub/grub.cfg
      • grub-reboot 此指令設定重新開機時的預設開機選項。指令格式與 grub-set-default 相同(參考上面)。
  • GRUB_SAVEDEFAULT= 若設定為 true 則會將以上次所選的開機選項做為預設選項。
    • 不需要執行指令來設定預設作業系統。
    • 只要手動選擇 GRUB 2 選單中的選項,它就會變為預設作業系統。
  • GRUB_HIDDEN_TIMEOUT - 決定 GRUB 2 選單會有多長時間不被顯示。當螢幕是空白時,按任意鍵來顯示選單。
    • 預設狀態下若只有存在一個作業系統時才會隱藏選單。如果使用者想要強制顯示選單,在此選項最前方加上一個 # 符號來關閉此功能。
    • 從 GRUB 1.97~beta - Karmic 使用的版本開始,選單能否包含空白螢幕的倒數延遲取決於 GRUB 2 是否找到多個作業系統。
    • 多重作業系統使用者注意:若更新選單時,GRUB 2 的 os-prober 發現額外的作業系統,隱藏選單的 timeout 功能會依照某些條件狀況而關閉。同時也會關閉開機時按住 SHIFT 以顯示選單的功能。如果想要強迫隱藏選單,可以在各大論壇中(例如:ubuntuforums)找到如何編輯的文件,以在開機過程中加入隱藏倒數的功能。
  • GRUB_HIDDEN_TIMEOUT=0 在單一作業系統電腦中。
    • 會立刻以預設作業系統開機。
    • 在只有一個作業系統狀況下,這是預設的設定。
    • 在此狀態下若想顯示選單,就在此行最前方加上 # 符號,並確認 GRUB_TIMEOUT 設定為正整數。
    • 若 GRUB 2 認定在開機過程中 SHIFT 鍵是被按住的,則選單就會顯示出來。這樣能讓使用者有方法在沒有顯示選單的情形下中斷自動開機程序。
  • GRUB_HIDDEN_TIMEOUT=X
    • X 為一正整數(例如 1、5、10 等等)
    • 開機程序將會暫停並顯示空白畫面或是已設定的開機影像 X 秒鐘。在時間結束後,系統將會開機。不會有選單顯示。
    • 當 GRUB_HIDDEN_TIMEOUT 啟用時,按下任意鍵以顯示選單。
  • GRUB_HIDDEN_TIMEOUT=
    • 在 = 符號後沒有輸入任何數值
    • 選單將會依據 GRUB_TIMEOUT 設定的數值作為顯示的秒數。
  • GRUB_TIMEOUT - 多久之後自動以預設作業系統開機
    • 此指令將推遲 GRUB_HIDDEN_TIMEOUT 設定,除非 GRUB_HIDDEN_TIMEOUT 被註解掉(#)
    • 設定此值為 -1 時選單會持續顯示,直到使用者進行選擇。
    • 若沒有其他作業系統,此行將會被註解掉,也就是隱藏選單。為了在每次開機時顯示選單,去掉此行的註解並使用 1 或更大的值。
  • #GRUB_TERMINAL=console
    • 移除註解以停用圖形化終端機
  • #GRUB_GFXMODE=640x480
    • 您可移除 # 符號來啟用此行。此選項會設定圖形化選單的解析度(選單文字大小)。僅能使用顯示卡所支援的解析度(例如 640x480, 800x600, 1280x1024 等等)
    • 此設定不影響作業系統解析度
    • 在 GRUB 2 中設定與作業系統相同的解析度將會稍微減少開機所需時間
    • 可以指定色彩深度(色彩品質),附加在解析度設定之後。像是 1280x1024x24 或 640x480x32
    • 可以加入多個解析度,當無法使用第一個選項,GRUB 2 會試著使用下一個設定。設定由逗號分開。例如:1280x1024x16,800x600x24,640x480
    • 若有使用開機影像,請確定解析度設定和開機影像大小相同
    • 若使用的選項導致在執行 update-grub 時有「無法找到 (not found)」的訊息,試著加上或變更色彩深度設定
    • 能夠在 GRUB 2 中使用的解析度可透過 GRUB 2 命令列模式下輸入 vbeinfo 得知。此命令列模式可在 GRUB 2 選單畫面顯示時按下「c」鍵進入。
    • 若此行被註解掉(#)或是解析度無法使用,GRUB 2 將使用 /etc/grub.d/00_header 中的設定。
    • 欲參考關於使用開機影像時改變解析度的說明,請參考開機影像和佈景主題小節。

加入 Windows 開機選項

修復 GRUB 2

參見