GRUB 2 中文指南

出自Ubuntu 正體中文 Wiki

(重定向自Grub2)
跳轉到: 導航, 搜尋


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

正在從GRUB2中文指南第二版(上)轉移新資料


目錄


英文文件:Grub2,由版友elmaz翻譯

GRUB 2 是 Ubuntu 9.10 (Karmic Koala) 的預設開機載入和管理程式,並在 10.04 以後於許多作業系統中使用。在電腦開機時 GRUB 2 將顯示選單等待使用者輸入或是自動將控制權轉移到作業系統核心。
GRUB 2 繼承自 GRUB (GRand Unified Bootloader)。它經過了完全的重寫以提供使用者可觀的靈活性和效能增進。

在這份指南中,GRUB 2 版本為 1.98 或更新版。傳統 GRUB (0.97 版) 將以 GRUB 稱之。

注意:當系統中同時存在多個 GNU/Linux 發行版,請小心其他的發行版(特別是 OpenSuse 和 Fedora)並不一定會轉移至 Grub 2,而使得 Grub 2 的設定變為複雜。

簡介

GRUB 2 是 Ubuntu 9.10 (Karmic Koala) 的預設開機載入和管理程式。在電腦開機時 GRUB 2 將顯示選單等待使用者輸入或是自動將控制權轉移到作業系統核心。GRUB 2 繼承自 GRUB (GRand Unified Bootloader)。它經過了完全的重寫以提供使用者可觀的靈活性和效能增進。GRUB 2 是開放原始碼軟體。

在這份指南中,GRUB 2 版本為 1.96 或更新版。傳統 GRUB (0.97 版) 將以 GRUB 稱之。
這份文件適用於 Ubuntu 9.10, 10.04, 10.10 。


GRUB vs GRUB 2

功能增進

GRUB 2 與原本的 GRUB 相比之下主要增進功能包含:

  • 命令稿支援,包括條件敘述和函式
  • 動態模組載入
  • 救援模式
  • 客製化選單
  • 佈景主題
  • 支援圖形化開機選單以及改良的開機影像能力
  • 直接由硬碟中的可開機光碟映像檔來開機
  • 新的設定檔結構
  • 非 x86 平台支援(例如 PowerPC)
  • 全面支援 UUID(不只在 Ubuntu)

重大改變

GRUB 2 的預設選單對 GRUB 使用者而言看起來很熟悉,但是在相似的表面下實則有非常巨大的相異之處。

  • 在沒有安裝其他作業系統的全新 Ubuntu 9.10 或 10.04 安裝下,GRUB2 將會直接開機到登入提示符號或是桌面。不會顯示選單。
  • 在開機期間按住 SHIFT 可顯示選單(之前在傳統 GRUB 中是 ESC 鍵)
  • 沒有 /boot/grub/menu.lst。已被 /boot/grub/grub.cfg 取代。
  • 在 grub 提示符號下沒有「/find boot/grub/stage1」。Stage 1.5 被淘汰了。
  • 主要選單檔,/boot/grub/grub.cfg,不應再被手動編輯,即使是由「root」身份。
  • grub.cfg 會在任何有更新、核心被加入/移除或是使用者執行 update-grub 的時候被覆寫。
  • 可使用的 Linux 核心清單將會參考在 /boot 目錄下的檔案自動產生。並非像以前需要編輯一個 menu.lst 檔案中的清單。執行「update-grub」來更新此清單。
  • 使用者可以編輯一個客製化檔案,/etc/grub.d/40_custom,在其中使用者可放入自己的選項。此檔案將不會被覆寫。
  • 主要用來改變顯示設定的設定檔是 /etc/default/grub。
  • 有好幾個檔案用來設定選單 - 上面提到的 /etc/default/grub,還有所有在 /etc/grub.d/ 目錄下的檔案。
  • 分割區編碼方式變更。現在第一個分割區是 1 而不是 0。然而第一個裝置依然是 0(沒有改變)。
  • 無論何時執行 update-grub 指令時,都會自動搜尋其他作業系統,例如 Windows。
  • 在 update-grub 指令執行前,所有設定檔中變更的設定都不會生效。

安裝

GRUB 2 會在全新安裝的 Ubuntu 9.10 (Karmic Koala) 中預設安裝。升級至 9.10,例如從 Ubuntu 9.04 Jaunty Jackalope 升級,將保留原本的 GRUB,除非使用者選擇升級至 GRUB 2。若使用者想要的話,之前版本的 Ubuntu 可以升級至 GRUB 2 。

您可以透過 Synaptic 或是從命令列來檢查目前安裝的版本。打開終端機(應用程式 > 附屬應用程式 > 終端機)並輸入以下指令:

grub-install -v

GRUB 2 應該會顯示版本編號 1.96 或是更新。傳統 GRUB 版本為 0.97。

預設安裝

GRUB 2 將會是 Ubuntu 9.10 Karmic Koala 預設安裝的開機載入程式。

  • GRUB 2 套件為 grub-pc。grub-common 套件也將會一併安裝。
  • grub2 是過渡期虛擬套件。他將會被安全移除,並不會在 Synaptic 中顯示為已安裝。

升級至 GRUB 2

在 Ubuntu 9.10 或更早期的版本將 GRUB(傳統)升級至 GRUB 2 是相當容易的。重要地,在使用者確認完全的轉換前,升級過程將提供一個程序來確認 GRUB 2 能在您的機器上工作。然而注意到開發者決定不要在預設的升級動作中自動升級至 GRUB 2。升級至 Ubuntu 9.10 的使用者若想要的話可以繼續沿用 GRUB。

  • 在安裝 GRUB 2 之前,更新套件庫索引以確保系統有最新的軟體套件列表。一般在終端機中透過 apt-get update 指令或是透過圖形化使用者介面套件管理器,如 Synaptic,來更新列表。舊的 GRUB 套件可能未包含早期版本的一些錯誤修正更新。
  • 欲升級至 GRUB 2:安裝「grub-pc」套件。一份簡單的文件將會在整個安裝程序中指引使用者:

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

圖片:Grub2.upgrade.ok.sm.png

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

3. 下一步將會把來自 GRUB 的 menu.lst 中的段落匯入至「Linux command line」(如下圖),或許還會匯入至「Linux default command line」。這些項目允許使用者輸入任意的特殊指令,例如 quiet, splash, noapic 或是其他同樣性質的指令。GRUB 2 將會自動匯入這些設定。通常使用者應該要接受任何現有的選項並選擇「OK」。若有需要,選項可於稍候加入。更多細節請參考設定 GRUB 2 小節。

圖片:Grub2.linux.command.line.ok.sm.png

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

圖片:Grub2.chainload.grub.sm.png

5. 在選定選項的時候 Jaunty 使用者可能會碰到一個「無法辨識的裝置字串 (Unrecognized device string)」Error 11。如果發生,按下「e」直到您看到一行開頭為「grub edit>root」的文字。把「root」改為「uuid」,按下 ENTER,然後按「b」來啟動。更多關於 Error 11 的細節可以在命令列和救援模式小節中找到。 6. 測試新選項並注意到 Grub 1.9x 版本編號(新增高亮度部份)。

圖片:Grub2.chainload.grub2.sm.png

7. 若 GRUB 2 選單功能正常,使用者可在任何時間執行以下指令以升級至 GRUB 2:

sudo upgrade-from-grub-legacy

圖片:Important.png在成功升級至 GRUB 2 之後,會有一個訊息告知使用者有些 GRUB 傳統設定檔依然在系統中,並可被移除。此說明包含以下的指令,必須以「root」身份執行:rm -f /boot/grub/menu.lst*以「root」執行 rm 指令時請特別慎重。不正確輸入此指令可能導致永久性的系統檔案被刪除。

檔案結構

GRUB 2 包含一個完全修改過的目錄及檔案階層。來自 GRUB 傳統的 menu.lst 不再繼續使用。

欲找出 GRUB 2 安裝位置,使用者可以執行以下指令:

sudo grub-probe -t device /boot/grub 

可找到安裝的裝置

sudo grub-probe -t fs_uuid /boot/grub 

可找到 UUID。

由 GRUB 2 使用的主要目錄和檔案包含了:

/boot/grub/grub.cfg

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

  • 每個段落明確地由「(### BEGIN)」界定並參考在 /etc/grub.d 目錄中的檔案,由該目錄中的檔案來產生資訊。
  • grub.cfg 由 root 身份執行 update-grub 來更新。update-grub 指令是 sudo grub-mkconfig -o /boot/grub/grub.cfg 的簡化。為了標準化,使用 update-grub 指令,加上 sudo 以 root 權限執行。
  • 此檔案將會在核心安裝/更新時或是其他會影響到它的輸出時自動更新。
  • 預設情況下,還有無論何時當 update-grub 指令執行時,此檔案會被設定為「唯讀」。這是刻意保持的狀況,讓此檔案無法被手動編輯。

使用者也會在 /boot/grub 目錄下看到許多 *.mod 檔案。這些檔案代表 GRUB 2 的模組化本質並依照 GRUB 2 開機載入程式的需求而載入。

/etc/default/grub

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

/etc/grub.d/(目錄)

  • 在此目錄中的檔案將會於執行 update-grub 指令的時候讀取,並將其中的指令合併至 /boot/grub/grub.cfg 中。
  • 在 grub.cfg 選單中的選單選項順序是依照在此目錄中檔案的順序來決定。具有較小數字前綴檔名的檔案將會先執行。10_linux 將會在 20_memtest 之前執行,而 40_custom 將在最後執行。若有檔名全為英文字母名稱,那麼將會在數字名稱的檔名後執行。
  • 自訂選項可以加入在 40_custom 檔案中,或新建立的檔案中。自訂檔案開頭為 06_ 將會出現在選單的最上方,因為他的字母排序將會在 10_ 和 40_ 之前。
  • 在 update-grub 執行過程中只有可執行檔會輸出至 grub.cfg。
  • 在此目錄中的預設檔案為:
    • 00_header 設定初始顯示項目,例如圖形模式、預設選項、時間限制等等。這些設定資訊一般由 /etc/default/grub 中匯入。使用者一般不需要對此檔案做任何更動。
    • 05_debian_theme 此檔案中的設定用來設定開機影像、文字顏色、高亮度選項及佈景主題。再沒有開機影像的情況下,此檔案會設定一個單色的佈景主題來顯示初始選單畫面。如何設定字型顯現及開機影像將會在開機影像和佈景主題小節中討論。
    • 10_hurd 指定 Hurd 核心位置。目前未使用。
    • 10_linux 指定作業系統目前使用中的 root 裝置核心位置。此資訊將會取用來建立這些核心顯示在選單中的名稱。
    • 20_memtest86+ 搜尋 /boot/memtest86+.bin 並將之包含在 GRUB 2 開機選單選項中。目前沒有選項能將此條目從開機選單中移除。memtest86+ 選項顯示可透過移除此檔案的執行權限:sudo chmod -x /etc/grub.d/20_memtest86+ 接著執行 sudo update-grub 來屏蔽。
    • 30_os-prober 此檔案和 os-prober,用來搜尋 Linux 和其他作業系統。結果將會依據此檔案中的內容而放至 grub.cfg 中。此檔案被劃分成四個段落,代表由命令稿所處理的四種作業系統類型:Windows, Linux, OSX 和 Hurd。此檔案中的變數用來指定在 /boot/grub/grub.cfg 和 GRUB 2 選單中的名稱顯示格式。熟悉基本命令稿的使用者可以修改這些變數來改變選單選項的顯示格式。此外,使用者可以插入任何選項至 /etc/default/grub 中以關閉這個命令稿。(參考下方)
    • 40_costom 用來加入自訂選單選項的樣板,將會在執行 update-grub 指令時嵌入至 grub.cfg 中。此檔案中的內容,在「exec tail -n +3 $0」這一行和預設的註解後,會毫無改變地直接匯入至 /etc/default/grub.cfg 中。
  • 在這些目錄中的檔案必須要設為可執行才能被 update-grub 使用。沒有設為可執行的檔案將會被忽略。欲將檔案設為可執行,執行
sudo chmod +x /etc/grub.d/folder/filename

設定 GRUB 2

設定變更通常會修改 /etc/default/grub 和 /etc/grub.d 目錄中的自訂檔案。/boot/grub/grub.cfg 檔不應由使用者直接編輯;此檔案由設定稿來變更。

圖片:Lightbulb.png某些最常見的變更,例如預設的作業系統/核心和選單逾時,可以經由一個圖形化使用者介面應用程式「StartUp-Manager」來修改。如何安裝及使用此應用程式的相關訊息請參考社群文件 StartUpManager

/etc/default/grub

  • 變更預設設定的主要設定檔。在安裝時,以下內容可由使用者變更:
  • GRUB_DEFAULT
    • 設定預設選單選項。選項可以是數字或是「saved」。
    • GRUB_DEFAULT=0 以選單位置來設定預設選單選項。如同 GRUB,在 grub.cfg 中的第一筆「選單選項」為 0,第二筆為 1,餘類推。
    • GRUB_DEFAULT=saved 設定預設選項為上一次選擇的項目。若開機過程中顯示選單,則上一次選擇的選項將會以高亮度表示。若沒有進行任何動作,此選項將會在逾時時間到達或是選單設為隱藏時用來開機。
      • grub-set-default 當參數設定為 saved 時將開啟。使用者可以使用此指令快速地改變預設作業系統/核心。
        • 格式為 sudo grub-set-default X,此處的 X 代表選單選項的位置(第一筆由 0 開始)或是確切的選項字串。例如:sudo grub-set-default 3 將使用選單選項位置,或是 sudo grub-set-default "Ubuntu, Linux 2.6.31-14-generic" 表示選單選項字串。
        • 欲取得現存的選單選項選擇數字(由 0 開始)或是選單選項「字串」,執行 grep menuentry /boot/grub/grub.cfg
      • GRUB_DEFAULT="xxxx" 一個確切的選單選項,包含引號,也可使用。在此例中,選單中的位置並不重要。例如:GRUB_DEFAULT="Ubuntu, Linux 2.6.31-14-generic"
      • 如何啟用「saved」選項及自訂選單的範例,請參考「自訂使用者選項」小節。
  • GRUB_HIDDEN_TIMEOUT=0
    • 此設定將影響選單顯示。若啟用開機影像,將會在任何逾時設定中顯示。
    • 圖片:Lightbulb.png選單將會被隱藏,除非在此行開頭加上一個 # 符號。(# GRUB_HIDDEN_TIMEOUT=0)。
    • GRUB 2 第一次執行時將會尋找其他作業系統。若沒有其他作業系統被偵測到,選單將會設定為隱藏。若辨認出其他作業系統,選單將會顯示。
    • 若是大於 0 的整數,系統將會依此設定的秒數暫停,但不會顯示選單。
    • 0 則選單不會顯示。將不會有延遲。
      • 使用者可以在開機時按住 SHIFT 鍵不放以強制顯示選單。
      • 開機過程中,系統將會檢查 SHIFT 鍵狀態。若無法辨識按鍵狀態,會有一個短時間的延遲讓使用者可透過按下 ESC 鍵來顯示選單。
  • GRUB_HIDDEN_TIMEOUT_QUIET=true
    • true 不顯示倒數。螢幕將會是空白的。
    • false 在 GRUB_HIDDEN_TIMEOUT 中設定的時間,空白螢幕上會有一個倒數計時器。
  • GRUB_TIMEOUT=10
    • 此指令將推遲 GRUB_HIDDEN_TIMEOUT 設定,除非 GRUB_HIDDEN_TIMEOUT 被註解掉(#)。若 GRUB_HIDDEN_TIMEOUT 啟用,則當選單顯示時,GRUB_TIMEOUT 將會只作業一次。
    • 設定此值為 -1 將會導致選單持續顯示,直到使用者下選擇。
    • GRUB 2 選單預設為隱藏,除非其他作業系統被系統偵測到。若沒有其他作業系統,此行將會被註解掉,除非使用者改變之。為了在每次開機時顯示選單,去掉此行的註解並使用 1 或更大的值。
  • GRUB_DISTRIBUTOR=lsb_release -i -s 2> /dev/null || echo Debian
    • 取得選單選項中的描述名稱。(Ubuntu, Xubuntu, Debian 等等。)
  • GRUB_CMDLINE_LINUX
    • 若存在,無論在一般或是救援模式,此行將匯入任何在 'linux' 註解行中的項目(傳統 GRUB 的「kernel」行)。類似於 menu.lst 中的「altoptions」行。
  • GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    • 此行將匯入任何在 'linux' 行中的項目(傳統 GRUB 的「kernel」行)。此選項只會附加於一般模式的最後方。類似於 menu.lst 中的「defoptions」行。欲顯示黑色螢幕以及開機行程文字,移除「quiet splash」。若想看到 grub 開機影像及簡短的文字輸出,使用「splash」。選項「acpi=off」,若有需要的話,也可以輸入在此行。
    1. GRUB_TERMINAL=console
    • 移除註解來停用圖形化終端機(只限 grub-pc)
    1. GRUB_DISABLE_LINUX_UUID=true
    • 移除註解若您不想讓 GRUB 傳遞「root=UUID=xxx」參數給 Linux。
    1. 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 中的預設設定。
    • 欲參考關於使用開機影像時改變解析度的指南請參考開機影像和佈景主題小節。
  • GRUB_DISABLE_LINUX_RECOVERY=true
    • 加上或移除此行註解來防止「救援」模式核心選項顯示在選單中。若您只想要在其中一個核心有「救援」選項,在 /etc/grub/40_custom 中製作一個特殊選項。
  • 額外可包含的指令:
    • GRUB_DISABLE_OS_PROBER=true
      • 啟用/停用 os-prober 對其他分割區作業系統的檢查,包括 Windows, Linux, OSX 和 Hurd。

開機顯示行為

GRUB 2 會在任何作業系統前載入。它的模組化元件將在依需求的情形下被載入。選單顯示行為基本上由 /etc/default/grub 來決定。特定選項和格式化指引請參考「設定 GRUB 2」小節。

初始化預設值

  • 若沒有偵測到期他作業系統,GRUB 2 將會直接開機至預設的作業系統中。不會顯示選單。若偵測到其他作業系統,GRUB 2 選單將會顯示。

逾時顯示

  • 選單將會持續在預定的秒數中顯示。預設選項會以高亮度表示,使用者可以在逾時時間到期前選擇其他選項。預設的逾時時間為 3 秒。計時器會在任何按鍵被按下前或是按下 ENTER 選擇高亮度標明的選項前持續計時。若使用者未進行輸入則 GRUB 2 將會在逾時時間到期時以預設選項開機。
  • 當按下任何按鍵時,逾時將會失效,且使用者必須手動進行選擇。
  • 預設選項由 /etc/default/grub 中的 DEFAULT= 來設定;第一筆「選單選項」的值為「0」。

隱藏

  • 不顯示選單選項。若有設定開機影像,將會顯示開機影像。
  • 使用者可以藉由按住 SHIFT 鍵直到選單顯示,以此來中斷開機程序並顯示選單。
    • GRUB 2 會在開機過程中搜尋 SHIFT 鍵按下的訊號。若此鍵按下或是 GRUB 2 無法確認此鍵的狀態,選單將會顯示。
  • 螢幕保持空白但允許顯示選單的時間是由 /etc/default/grub 中的設定來決定。
  • GRUB 2 可以顯示一個倒數計時器以提供剩餘時間的視覺回饋,直到預設的選項被選定。此逾時設定在 /etc/default/grub 中。
  • 在逾時時間結束時,在 /etc/default/grub 中所設定的預設選項將會被選定。

儲存

  • 若預設選項設定為「saved」,若無使用者覆寫設定的話則上一次成功開機的核心/系統將會被選定並執行。

自訂選單項目

GRUB 2 允許使用者建立自訂選單選項,在執行 sudo update-grub 時此選項將會自動加入主選單中。在 /etc/grub.d/ 中有一個空的 40_custom 檔可以使用,或是以其當作建立其他自訂選單的範本。這裡有一些自訂選單需要考量的地方:

  • 檔案的名稱將會決定選項在選單中的排序。數字檔名會在前先執行,跟著是文字檔名。
    • 10_linux 選項會出現在 30_os-prober 選項之前,然後跟著是 40_custom 選項,最後是 my.custom.entries。
    • 使用者欲將自訂選項排在主選單第一位,可以將檔案命名為 06_xxx 如此一來它將會是選單中的第一筆選項。
  • 檔案必須有可執行權限:sudo chmod +x /etc/grub.d/filename。
  • 在 update-grub 指令未執行前,grub.cfg 的內容不會加入新增變更部份。
  • 不像 grub.cfg,自訂檔案可以在任何時間編輯,不是唯讀權限,而且若想要的話可以以使用者為檔案擁有者。
  • 自訂檔案是靜態的。當新的核心加入或移除時其內容將不會被變更(除非內容受使用者加入的命令稿影響)。

圖片:Important.png若自訂檔案將 menuentry 放在 grub.cfg 的最上方,使用者也許想要在執行 update-grub 後確認 /etc/default/grub 的 DEFAULT= 設定狀態。確保它依然指到想要的選單選項上。在計數時,/etc/default/grub 第一筆「選單選項」為 0。

建立自訂選單

使用者可選擇由預設的 /etc/grub.d/40_custom 檔來修改或是建立一個新檔。建立一個新自訂選單最簡單的方法為從 /boot/grub/grub.cfg 複製一份使用中的選項。複製之後,在 40_custom 中的內容可剪裁為使用者想要的樣式。

  • 根據預設的範例自訂檔(/etc/grub.d/40_custom)在 /etc/grub.d 中任何自訂檔的頭兩行應該是:
  #!/bin/sh
  exec tail -n +3 $0
  • 使用者可從 /boot/grub/grub.cfg 或是從傳統 GRUB 檔中複製已存在的選單選項。若使用者想從傳統 GRUB 的 menu.lst 中複製:
    • 若使用者從 GRUB 升級至 GRUB 2 則也許可找到一份備份檔在 /boot/grub 目錄下。
    • 以下來自 GRUB 選單中的項目必須修改才能作用:
      • title 更改為 menuentry。此行必須由 { 作為結束
      • root 更改為 set root=
      • kernel 必須改為 linux
      • 任何 partition 定義(sda4, sda6)必須修改,因為 GRUB 和 GRUB 2 的分割區計數方式不同。GRUB 2 中的第一個分割區為 1,不是 0。裝置依然由 0 開始計數。
      • 仔細檢視任何作用中的 GRUB 2 menulist 條目格式以確保使用正確的格式。
  • 一般 menuentry 建構規則:
    • 第一行一定由 menuentry 開頭,並以 { 結束
    • 大括號之間的區域就是會出現在 GRUB 2 的內容。依照需求編輯。
    • menuentry 最後一行一定是 }
    • 每行最後面不要留下空白
    • set root= 行應該指到 GRUB 2 的 /boot 位址(sdXY)
    • 在 linux 行中的 root 應指向系統分割區。
      • 若 GRUB 2 無法找到指定的核心,試試看以裝置名稱來取代 UUID(例如:/dev/sda6)。
  • 一份從 grub.cfg 複製來由使用者修改過的選項範例也許看起來像這樣:
     menuentry "My Default Karmic" {
     set root=(hd0,1)
     search --no-floppy --fs-uuid --set cb201140-52f8-4449-9a95-749b27b58ce8
     linux /boot/vmlinuz-2.6.31-11-generic root=UUID=cb201140-52f8-4449-9a95-749b27b58ce8 ro quiet splash
     initrd /boot/initrd.img-2.6.31-11-generic
     }
  • 一份由網站上的指令將系統還原光碟(SystemRescueCD)安裝為硬碟版(在 sda8 上)的選項範例:
     menuentry "System Rescue CD" {
     set root=(hd0,8)
     linux /sysrcd/rescuecd subdir=sysrcd setkmap=us
     initrd /sysrcd/initram.igz
     }
  • 一份連鎖載入另一個 GRUB 開機載入程式的選項範例:
     menuentry "Grub 1 Bootloader" {
     set root=(hd0.8)
     chainloader +1
     }

命令列&救援模式

使用者可以有數種方法來嘗試從失敗的開機中復原。如果選單依然可以使用,選單設定可以由使用者來檢視和修改。此外,若 GRUB 2 偵測到開機時因為 grub.cfg 的錯漏而無法將控制權轉移到所選擇核心的錯誤,它將會回復到救援模式。兩種方式都允許使用者藉由受限的命令列介面來復原為可用的系統。如果只有「Grub」字樣出現在螢幕頂端而沒有提示符號(存取命令列)或選單,參考從開機光碟重新安裝小節。

開機時編輯選單

  • 若開機過程中選單無法正常顯示,按住 SHIFT 鍵讓電腦試著顯示 GRUB 2 選單。
  • 當選單顯示後,按下任何鍵(ENTER 除外)來停止逾時計時器並以上/下鍵選擇想要的項目。
  • 按下「e」鍵進入所選選項的設定。
  • 使用鍵盤來定游標位置。在此例中,游標已經被移動,因此使用者可以修改或刪除數字 9。。對任一行或每一行做單一或多種修改。不要使用 ENTER 來做行列間的移動。
  • 可使用 Tab 鍵自動完成功能,這在輸入核心和 initrd 項目的時候特別好用。
  • 當完成時,決定下一個步驟:
    • CTRL-x - 以修改過後的設定開機(以高亮度強調)
    • CTRL-c - 進入命令列來進行診斷、載入模組、修改設定等等。
    • ESC - 放棄所有修改並回到主選單
    • 這些選擇也會列在螢幕底部作為提示。

命令列模式

從主要 GRUB 2 選單畫面使用者可選擇按下「c」進入命令列模式。

圖片:Lightbulb.png這裡有一些好用的小訣竅和特性來使用 GRUB 2 命令列:

  • 關閉開機影像也許會讓終端機更容易檢視。按下「c」進入命令列然後輸入: set color_normal=white/blue 或是任何你想使用的顏色組合。第二個選項使用「black」會保留選單的透明度,若使用者想使用實色當作背景色的話應該避免此選擇。
  • 為了預防畫面捲動到螢幕最上方以外,首先執行 set pager=1,此設定動作類似終端機的「| more」指令。如此將允許一個全畫面的資料,並在按下「ENTER」鍵時才會繼續往下捲動。
  • 輸入 help 可檢視所有指令的清單。輸入 help x 來檢視所有以「x」字母開頭的指令。Tab 鍵自動完成以及使用向上鍵來重複上一個指令與一般終端機動作相同。
  • TAB 自動完成功能非常的好用。在任何時間,若元件是獨一的,按下 TAB 鍵可以自動完成一筆項目,否則會顯示所有可用的選項。輸入一些額外的字元後再按下 TAB 可自動完成剩餘的部份。

一些好用的指令包括:

指令結果
background_image 載入一個現存的背景影像。使用 tab 自動完成來協助輸入檔名! background_image=/usr/share/images/grub/ 然後用 tab 來顯示所有影像的清單。當初始測試開機影像時 很有用的指令。
cat 用來顯示目前檔案內容。 cat /boot/grub/grub.cfg, cat /etc/fstab
help 檢視所有可用指令。輸入 help x 來取得一份以字母 x 開頭的指令清單。help xxx 取得關於 xxx 指令的資訊。此指令應該接在「set pager=1」指令之後,會讓螢幕顯示類 似終端機「| more」指令的行為,以預防捲動超過螢幕頂端。
ls 單獨使用,列出所有裝置 (hd0) (hd0,1) 等等。使用 ls 來檢視可用的分割區。使用 ls /boot, ls /boot/grub 來檢視 /boot/grub 目錄內容。
initrd 載入 initrd。
linux 載入 linux 核心。
loopback 把檔案掛載成裝置。loopback loop (hd0,2)/iso/my.iso
lsmod 顯示已載入模組
reboot 重新開機
rescue 進入救援模式
set 顯示適當的環境變數。與其他結合,設定變數如 set gfxmode=640x480, set color_normal=cyan/black 在命令列模式中使用後面的指令來測試各種選單字型顏色。
vbeinfo 顯示可用的螢幕解析度。

使用命令列介面開機

若使用者有開機上的麻煩但選單可用,最簡單的開機方法就是編輯現存的選單。參考開機時編輯選單。若 GRUB 2 尋找可用 grub.cfg 檔案失敗,它應會回復至 grub-rescue 模式。命令列提示符號會顯示 grub-rescue> 且將不會顯示選單。使用者可由此命令列才來嘗試手動輸入指令來開機至可用的系統。

若命令列提示符號沒有啟動,按下「c」來進入命令列模式。您將會看到 GRUB 2 提示符號: grub> 或 grub rescue>

圖片:Lightbulb.png若您在任何時間想要取消並重來,ESC 將會移除修改部份並讓使用者返回前一個選單。使用以下兩個指令來決定您想要開機的系統所在裝置(磁碟機)和分割區。

set 	 當輸入 set 且沒有附加項目時,此指令會顯示目前的 GRUB 2 設定。
ls 	執行 ls 來查看 GRUB 2 認出的裝置。例如:(hd0) = sda; (hd0,1)=sda1; (hd0,3)=sdb3

以最近的核心快速開機

在輸入任一指令後按下 ENTER。

1. set root=(hdX,Y) 	輸入來自 ls 指令正確的 X,Y 值並按 ENTER。記住 GRUB 2 將第一個裝置算為 0,第一個分割區為 1。
                                例如:若 Ubuntu 系統安裝在 sda5,輸入: set root=(hd0,5)
2. linux /vmlinuz 	root=/dev/sdXY ro (範例:linux /vmlinuz root=/dev/sda3)
3. initrd /initrd.img 	選擇最新的 initrd 影像。
4. boot 	以選定的分割區最新的核心來開機。

手動開機到指定的核心

若在開機程序期間 GRUB 2 選單無法編輯,使用者可在 GRUB 2 命令列中輸入所有需要用來開機到可用核心的資訊。此小節將提供一個逐步的指引來說明如何輸入此資訊。此行完成後會看起來類似以下圖型:

只有當完成每一小節(「A」,「B」,「C」和「D」)後才按下 ENTER。

A. 設定根分割區(步驟 1)

1. set root=(hdX,Y) 輸入來自 ls 指令的正確 X,Y 值並按下 ENTER。記住 GRUB 2 將第一個裝置算為 0,第一個分割區為 1。例如:若 Ubuntu 系統安裝在 sda5,輸入:set root=(hd0,5)

B. 輸入「linux」行資訊(步驟 2-5)

linux kernel root ro

2. linux
輸入並繼續。
3. /boot/vml 輸入,然後使用 TAB 來顯示可用的核心。輸入正確的核心後繼續。
4. root=/dev/sdXY 輸入(使用正確的裝置如「sda1」、「sdb5」等等)然後繼續。
5. ro 加入任何選項,例如 ro 等等。

當此行的所有訊息都完成後,它看起來將會像是以下的範例。按下 ENTER。檢視並確認。若成功輸入,GRUB 2 將在 [] 符號中顯示儲存的資訊。(以下的第一筆高亮度段落)。

linux /boot/vmlinuz-2.6.31-9-generic root=/dev/sda1 ro
圖片:Grub2.cli.boot.png
C. 輸入「initrd」行資訊(步驟 6-8)

initrd /boot/initrd.img-2.6.31.9-generic

6. linux輸入並繼續。
7. initrd輸入,然後使用 TAB 來顯示可用的核心。輸入正確的核心後繼續。
8. /boot/init輸入並使用 TAB 來顯示可用的核心,輸入正確的 initrd 影像。參考上圖高亮度類似確認行的那一行。
D. 開機(步驟 9)

9.boot以輸入的核心/作業系統開機。CTRL-X 也可行。

救援模式

救援模式是 GRUB 2 的主要強化部份。若 GRUB 2 尋找可用的 grub.cfg 失敗並無法轉移控制權至核心,他將會進入 grub-rescue> 提示符號。在此提示符號下使用者可探查問題、進行修改,以及重新嘗試開機。

救援模式所提供的指令比起一般 GRUB 提示符號列少,但也提供額外的指令:

指令結果
dump清除記憶體
exit退出 GRUB 2
normal若可能的話回到標準的「grub>」模式。
以下指令可以在 grub 救援模式中使用:
bootcatchainloaderdumpexitfreebsd
freebsd_loadenvfreebsd_modulehelpinitrdinsmodlinux
lsmodmultibootnormalrmmodsetunset

圖片:Lightbulb.png若需要額外的指令,使用者可以試著用 insmod normal 來載入一般的 GRUB 2 模組。若成功, help 和其他額外的指令就可以使用。

grub rescue> 提示符號下,進行以下步驟來嘗試開機至最新的核心。

1. ls此指令將顯示已知的裝置和分割區。由此資訊,使用者必須決定系統安裝在哪一個裝置和分割區。
2. set root=/dev/sdXYX 為裝置/磁碟,由 0 開始。Y 為分割區,由 1 開始。(範例:(hd0,1) 是 sda1。(hd3.5) 是 sdc5。)
3. ls /boot檢驗內容。使用者應該能看到多個核心、initrd 影像和 grub 目錄。若沒有,使用 ls 指令來檢查裝置並試著找尋檔案和目錄。若有必要,設定另一個裝置 為 root。
4. insmod /boot/grub/_linux.mod載入 linux 模組。此模組未載入,若沒有載入此模組,使用者將會收到一個「Unknown command linux」訊息。
5. linux /vmlinuz root=/dev/sdXY ro載入 linux 核心,以正確的名稱替換掉「X」和「Y」(例如:sda1)。使用者將會看到核心已被載入的訊息。(參看上圖)
6. initrd /initrd.img載入 initrd 影像。當按下 enter 時,使用者可能會或不會看到終端機中的訊息。(參看上圖的高亮度部份)
7. boot 開機。

成功開機進入系統後,使用者必須重新安裝 GRUB 2(sudo grub-install /dev/sdX)或搜尋及編輯 GRUB 2 設定檔來做必要的變更。

GRUB 錯誤訊息

GRUB 2 並不會回報錯誤碼。若是錯誤訊息有帶著一個錯誤碼,這是由 GRUB 過渡至 GRUB 2 時發生的錯誤。

解決「Unrecognized Device String」 (Error 11)

此錯誤訊息通常是肇因於選單選項中不良或異常的內容。最常見的原因為使用者試圖從使用連鎖載入(Chainload)功能的 Jaunty 升級至 GRUB 2 導致。

1. 當啟動 GRUB 2 時顯示以下訊息:

圖片:Grub2.unrecognized.device.string.error.png

2. 記住 Jaunty 的連鎖載入功能是有問題的,使用者按下任意鍵來回到主選單,然後按「e」直到看見「grub edit>」。編輯高亮度的「Chainload into GRUB 2」選項或任何使用者試圖用來開機的選項。

圖片:Grub2.error.root.png

3. 有敏銳記憶力的使用者應該還記得「root」需要修改為「uuid」。使用方向鍵來移動游標,用「uuid」來取代「root」。當結束編輯時,使用者按下 ENTER 鍵,然後再按「b」來使用修改過的選項來開機。注意這些指令與 GRUB 2 中使用的不同。

圖片:Grub2.error.uuid.png

若使用者打算保留雙重 GRUB 選擇,以 root 身份開啟 /boot/grub/menu.lst 並將「Chainload into Grub 2」選單選項第二行「root」變更為「uuid」以修正錯誤。

圖片:Grub2.error11.uuid.png

File Not Found (Error 15)

此錯誤為 GRUB 2 安裝至 /boot 但主開機磁區(MBR)依然為傳統 Grub。此狀況發生在當您執行 sudo update-from-grub-legacy 時未選擇您的磁碟。執行此指令後使用者馬上會被要求選擇一個裝置(sda、sdb 等)。當顯示此畫面時選擇磁碟並按下空白鍵。沒有選擇將會導致 Error 15 的產生。

欲修復此錯誤,必須要重新安裝 GRUB 2。詳細指令請參考從開機光碟重新安裝小節。

開機影像和佈景主題

GRUB 2 開機影像

GRUB 2 較之前版本大大的加強了開機影像功能。設定開機影像需要進行兩個步驟:選擇欲使用的影像以及選擇顯示的文字顏色。

圖片:Grub2.lake.splash.png安裝預設的 GRUB 2 影像套件,安裝「grub-splashimages」套件

sudo apt-get install grub2-splashimages

不要把它與 grub-splashimages 套件搞錯,否則會與 GRUB 2 不相容。
這些下載影像的預設路徑在 /usr/share/images/grub。這個路徑或檔案所放置的其他路徑必須加進 05_debian_theme 中。(參見下方)

使用者可以建立並使用他們自己的開機影像。

設定開機影像

GRUB 2 的開機影像由 /etc/grub.d/05_debian_theme 所控制。以 root 身份開啟此檔案進行編輯。
找到以下行並編輯粗體部份,以你想要使用的 GRUB 2 開機影像路徑和名稱來取代:

for i in {/boot/grub,/user/share/images/desktop-base}/moreblue-orbit-grub.{png,tga} ; do

在此項目中有些地方需要注意:
  • GRUB 2 預設會在 /boot/grub 和 /usr/share/images/desktop-base 中尋找開機影像
  • grub2-splashimages 套件並非解壓縮至以上的兩個目錄中,而是在 /usr/share/images/grub
  • 使用者必須在以下兩動作中擇一:
    • 修改上面一行的目錄位置並指向正確的位置,或
    • 將開機影像移動到上面所提到的兩個目錄之一。
    • 欲加入 grub 目錄,讓項目看起來像這樣,然後改變檔名為在 /usr/share/images/grub 中欲使用的開機影像。
for i in {/boot/grub,/usr/share/images/desktop-base,/usr/share/images/grub}/moreblue-orbit-grub.{png,tga} ; do
  • 檔名以句點結束(.)(/moreblue-orbit-grub.)
  • 開機影像選擇:
    • 若相同檔名檔案存在於超過一個目錄中,最早指定的目錄將會被使用。
    • 若檔名相同而副檔名不同(多種副檔名),則最早指定的副檔名檔案將會被選擇。
使用者可以對上述設定行做許多變更以延伸開機影像的彈性:
  • 加入使用者擁有的目錄,讓 GRUB 2 可以搜尋到更多可用的開機影像。
  • 加入使用 JPEG 格式開機影像檔的能力。此時只有 8-bit JPEG 格式影像能被正確顯示。
以下展示了新增加的使用者擁有的開機影像目錄以及增加 JPEG 支援:
for i in {/boot/grub,/usr/share/images/grub,/home/drs/mysplash}/moreblue-orbit-grub.{png,tga,jpg,jpeg} ; do
一旦您輸入路徑和檔名至 05_debian_theme 中,您可執行 sudo upate-grub 來加新增資訊加入 grub.cfg。若開機影像加入成功,使用者將會在終端機執行指令時看到「Found Debian image...」。若沒有看到此段訊息,則影像資訊有可能未輸入。
設定選單字型&高亮度色彩
此行包含在 /etc/grub.d/05_debian_theme 中。這些指令不會在靠近檔案上方的主題設定設為「mono」的狀態下生效。
  • 未選取的選單選項色彩如以下範例行來設定。第一個色彩是文字色彩;第二個是背景色彩。

  • set color_normal=black/black

    • 以下的代碼設定被選取選項的色彩。第一個色彩是高亮度文字色彩;第二個是被選定行的背景色彩。若 /black 為第二個選項,則高亮度行將會是透明的,且只有文字色彩會改變。
set color_highlight=magenta/black
圖片:Important.png當作為第二個色彩時 /black 是 GRUB 2 的預設透明色。若使用開機影像時,只要改變第一個色彩(例如 xxxxx/black)。若第二個色彩更改為黑色以外的顏色,開機影像將會被藏在實色背景之後。
  • 在下圖中,其 color_normal 設定為 white/black。<em>高亮度色彩設定為 cyan/blue
    圖片:Grub2.splash.bar.png
  • 在 GRUB 2 中可使用這些色彩。第二選項設為「black」則會被認定為「透明」(transparent)。
    black

    blue

    brown

    cyan

    dark-gray

    green

    light-cyan

    light-blue

    light-green

    light-gray

    light-magenta

    light-red

    magenta

    red

    white

    yellow

測試字型和開機影像
圖片:Lightbulb.png與其重新開機來測試色彩組合,使用者可透過在開機過程使用 GRUB 2 命令列來檢閱改變。
  • 依照上方說明來選擇開機影像和初始字型色彩,以 sudo update-grub 來更新 GRUB 2 的檔案後重新開機。
  • 當 GRUB 2 開機影像/選單出現時,按下任何鍵以停止逾時倒數。
  • 按 c 進入GRUB 2 命令列。
    • set color_normal=first-color/blackset color_highlight=first-color/second-color
    • 在指令輸入後立即可以看到文字的色彩。您可以使用「向上」鍵來呼叫最後執行的指令然後編輯就能快速測試不同的色彩組合。
    • 一旦您想結束,按下 ESC 鍵回到選單
    • 隨意重複上述步驟。
    • 記下想使用的色彩組合,正常開機然後編輯 /etc/grub.d/05_debian_theme 並讓變更永久儲存
    • 存檔,更新 GRUB 2:sudo update-grub
變更解析度及開機影像
若使用者想在使用開機影像時變更 GRUB 2 螢幕解析度,依以下步驟:</tt>
  1. 在 /etc/default/grub 中設定欲使用的解析度
    • 變更 GRUB_GFXMODE= 之值(例如:GRUB_GFXMODE=800x600
    • 若無法確認 GRUB 2 可以使用何解析度,可以在 GRUB 2 命令列下輸入 vbeinfo 來顯示。命令列可以在當 GRUB 2 主選單顯示的時候按下「c」來存取。
  2. 選擇一個同樣大小的影像並在 /etc/grub.d/05_debian_theme 中修改。
    • 影像名稱位置在以「for i in {/boot」為開頭的那一行裡
    • 若沒有使用正確大小的影像,選單的位置將不會是正確的。
    • 使用您選擇的影像編輯程式來建立/修改正確尺寸的影像。
    • 使用者或許可以透過檔案瀏覽器來檢視影像的尺寸(在 Nautilus 中檢查屬性標籤)。
  3. 以 root 權限執行 update-grub 將新增的設定加入 /boot/grub/grub.cfg

建立使用者開機影像

GRUB 2 的開機影像管理讓使用各式各樣的開機影像變得容易。

解析度設定
grub2-splashimages 套件中的開機影像主要為 640x480 的影像。

GRUB 2 會在 /etc/default/grub 中尋找解析度設定。若取消註解,則解析度由此行決定:
GRUB_GFXMODE=640x480
  • 若在 /etc/default/grub 中沒有找到解析度設定,GRUB 2 會使用設定在 /etc/grub.d/00_header 中 640x480 這個設定值。
影像建立和設定
圖片:Lightbulb.png在 Ubuntu 中,參考系統,偏好設定,顯示以取得可用的螢幕解析度,或是在 GRUB 2 命令列下執行 vbeinfo 來顯示可用的解析度。
  1. 決定您想在 GRUB 2 開機影像中使用的解析度。
  2. 建立或修改任何影像至合適的尺寸
    • GRUB 2 目前支援 .png, .tga, 以及 8-bit .jpg/.jpeg 影像。
      • 若使用 GIMP,將檔案以適合的副檔名命名可存檔為該格式。
  3. 在 GRUB 2 設定檔中作合適的修改:
    • /etc/default/grub:取消 GRUB_GFXMODE=640x480 行的註解,若解析度不是 640x480 則修正其值。
    • /etc/grub.d/05_debian_theme:在以下行中輸入正確的路徑及檔名。更多如何修改此行的資訊請參考前一小節。
    • for i in {/boot/grub,/usr/share/images/desktop-base}/moreblue-orbit-grub.{png,tga} ; do
  4. 執行 sudo update-grub 將變更合併至 GRUB 2

佈景主題

GRUB 2 佈景主題還在開發中,與 gfxmenu 整合。佈景主題元素包含了色彩、字型、進度指示列、選單和標籤。這些都有遠大的承諾但尚未在 Ubuntu 9.10 發行時準備好。檢視此頁最底下的連結小節以找到參考資料。
圖片:Grub2.theme.dinxter.png圖片:Grub2.theme.bennett.png

重新安裝 GRUB 2

有時使用者可能需要移動或是重新安裝 GRUB 2。前者也許發生在當使用者想要將系統移動到另一台設備上或是重新設定安裝指令。若使用者完全無法開機進入作業系統,甚至無法使用救援模式,那麼也許必須要重新安裝 GRUB 2。

更改或移動 GRUB 2

更改 GRUB 2 安裝裝置或開機檔案的指令為以 root 身份執行 grub-install。此指令允許使用者藉由設定根(ROOT)目錄、預載模組、執行特定設定檔案或其他方式來修改安裝。當執行時,grub-install 可能會執行一或多個其他指令,例如 grub-probe、grub-mkimage 和 grub-setup。這裡是當執行 grub-install 時一些需要考量的:

  • 在一般情況下應該使用 grub-install 指令而不是 grub-setup。當需要的時候 grub-install 會呼叫 grub-setup。
  • 此指令應指定一裝置,當執行時將會安裝 GRUB 需要的檔案至指定的裝置上。(例如:sudo grub-install /dev/sda)
  • 若使用者試圖在執行此指令時指定一個分割區,(例如:sudo grub-install /dev/sda6)會發出一個警告訊息。指定一個分割區是不被建議採用的而被列在阻擋清單(blocklists)中,阻擋清單是開發者認為不可靠的部份。然而還是有複寫此建議的選項,若使用者依然想要如此做的話。
  • grub-install 可用選項清單可在終端機中執行 grub-install --help 來顯示。
  • grub-install 之線上說明文件(man page)目前尚不會顯示所有可用的選項。

從開機光碟重新安裝

若您無法從 GRUB 2 開機,參考開機疑難和救援模式小節。若需要重新安裝,跟著以下指令:

1. 使用 9.10 Karmic Desktop 開機光碟開機。

2. 開啟終端機 - 應用程式(Applications),附屬應用程式(Accessories),終端機(Terminal)。

3. 判斷您的標準系統分割區 - (參數是一個小寫的「L」)

sudo fdisk -l
  • 若您無法確定,執行df -Th。找正確的磁碟容量和 ext3 或 ext4 格式。掛載您的標準系統分割區:

4. 掛載您的標準系統分割區:

  • 以正確的分割區代號替換:sda1、sda5 等等。
  • GRUB 2 計算第一台磁碟機為「0」,而第一個分割區為「1」。

5. sudo mount /dev/sdXX /mnt #範例:sudo mount /dev/sda1 /mnt 注意:若使用者有任何其他獨立的系統分割區,例如 /usr,這些也應用同樣的方式掛載。

6. 只在您有獨立的開機分割區才需要執行:

  • sdYY 為獨立 /boot 分割區代號(例如 sdb3)
  • sudo mount /dev/sdYY /mnt/boot

7. 掛載裝置:

sudo mount --bind /dev/ /mnt/dev

8. Chroot 至您的標準系統裝置:

sudo chroot /mnt

9. 重新安裝 GRUB 2:

  • 以正確裝置替換 - sda、sdb 等等。不要指定分割區數字。

10. sudo grub-install /dev/sdX驗證安裝(使用正確裝置,例如 sda。不要指定分割區數字):

sudo grub-install --recheck /dev/sdX

11. 退出 chroot:按下鍵盤 CTRL-D

12. 卸載裝置:

sudo umount /mnt/dev
  • 若您掛載獨立的 /boot 分割區:
    • sudo umount /mnt/boot

13. 最後卸載裝置:

sudo umount /mnt

14. 重開機。

reboot

一旦使用者可以開機至正常運作的系統,試著判斷系統先前為何無法開機。以下指令證實對於找到和修復此問題非常有效。

  • 更新 /boot/grub/grub.cfg 中的可用裝置及設定
    • sudo update-grub
  • 尋找開機載入程式位置。
    • grub-probe -t device /boot/grub
  • 安裝 GRUB 2 至 sdX 分割區的主要開機磁區(MBR)(sda、sdb 等等)
    • sudo grub-install /dev/sdX
  • 再度檢查安裝(sda、sdb 等等)
    • sudo grub-install --recheck /dev/sdX

移除 GRUB 2

回復至傳統 GRUB

若使用者選擇回復至傳統 GRUB(0.97),以下步驟將移除 GRUB 2 並安裝 GRUB。

命令列模式提供較清楚乾淨的移除和重新安裝。然而 Synaptic 也可以做到新增和移除套件,某些步驟依然要進入終端機來達成。

1. 開啟終端機:應用程式(Applications),附屬應用程式(Accessories),終端機(Terminal)。 2. 備份 GRUB 2 目錄和檔案。(選用)

  • sudo cp /etc/default/grub /etc/default/grub.old
  • sudo cp -R /etc/grub.d /etc/grub.d.old
  • sudo cp -R /boot/grub /boot/grub.old

3. 移除 GRUB 2

  • sudo apt-get purge grub2 grub-pc
  • 圖片:Important.png此時在其他開機載入程式安裝前,系統將無法開機。
  • 當套件移除後,許多檔案依然會留在「/boot/grub」下

4. 安裝 GRUB 0.97

  • sudo apt-get install grub

5. 當 grub 安裝後,使用者依然需要執行以下兩個指令來建立 menu.lst 和 stage1/stage2 檔案。

  • sudo update-grub
    • 產生 menu.lst
    • 提示時選擇「Yes」。
  • sudo grub-install /dev/sdX
    • 選擇正確的裝置(sda、sdb 等),一般而言就是 Ubuntu 安裝的那個裝置
    • 在 /boot/grub 中建立 stage1/stage2 檔案並寫入至主開機磁區(MBR)。

6. 重開機。

圖片:Important.png若使用者在重新開機時收到一個「Unrecognized device string Error 11」錯誤訊息,參考解決「Unrecognized Device String」 (Error 11) 小節,有如何編輯選單和使系統可開機的指令。

版權宣告

本文引用部分 Ubuntu Documentation 的資料,因此授權為:創用CC 性名標示-相同方式分享


參見

英文資料

以下皆為英文參考文件連結。