
本章介紹如何設定 SUSE® Linux Enterprise Desktop 中使用的開機載入程式 GRUB 2。GRUB 是傳統 GRUB 開機載入程式 (現在稱做「GRUB 2 Legacy」) 的後繼產品。從 SUSE® Linux Enterprise Desktop 12 版本開始,使用 GRUB 2 做為預設的開機載入程式。產品中提供了一個 YaST 模組來進行最重要的設定。整個開機程序簡述於第 11 章 「Linux 系統開機」。如需關於 UEFI 機器安全開機支援的詳細資料,請參閱第 13 章 「UEFI (整合可延伸韌體介面)」。
組態儲存在不同的檔案中。
支援更多的檔案系統 (例如 Btrfs)。
可以直接讀取 LVM 或 RAID 裝置上儲存的檔案。
使用者介面可翻譯,並可以改變主題。
包含一套用於載入模組的機制,以支援諸如檔案系統等的其他功能。
自動搜尋及產生其他核心與作業系統 (例如 Windows) 的開機項目。
包含一個類似於 Bash 的精簡主控台。
GRUB 2 的組態以下列檔案為基礎:
/boot/grub2/grub.cfg
此檔案包含 GRUB 2 功能表項目的組態。它取代了 GRUB Legacy 中的 menu.lst。grub.cfg 由 grub2-mkconfig
指令自動產生,不應該對其進行編輯。
/boot/grub2/custom.cfg
這個可選用檔案在開機時由 grub.cfg 直接獲取,可用於將自訂項目新增至開機功能表。從 SUSE Linux Enterprise Desktop 開始,使用 grub-once 時也會對這些項目進行剖析。
/etc/default/grub
此檔案控制 GRUB 2 的使用者設定,通常包含背景和主題等其他環境設定。
/etc/grub.d/ 下的程序檔
在執行 grub2-mkconfig
指令期間,將會讀取此目錄中的程序檔。主要組態檔案 /boot/grub/grub.cfg 中整合了這些程序檔的指示。
/etc/sysconfig/bootloader
在使用 YaST 設定開機載入程式以及每次安裝新核心時,會用到此組態檔案。它將經過 perl-bootloader 的評估,後者會相應地修改開機載入程式組態檔案 (例如,GRUB 2 對應的組態檔案 /boot/grub 2/grub.cfg)。/etc/sysconfig/bootloader 不是 GRUB 2 專用的組態檔案,其值會套用於 SUSE Linux Enterprise Desktop 上安裝的任何開機載入程式。
/boot/grub2/x86_64-efi、/boot/grub2/power-ieee1275、/boot/grub2/s390x
這些組態檔案包含特定於架構的選項。
GRUB 2 可以透過多種方式控制。現有組態啟動項目,可以從圖形功能表選取 (開頭顯示畫面)。組態從基於其他組態檔案編譯的檔案 /boot/grub2/grub.cfg 載入 (參閱下文)。所有 GRUB 2 組態檔案都視為系統檔案,編輯這些組態檔案需要有 root 權限。
手動編輯 GRUB 2 組態檔案後,您需要執行 grub2-mkconfig
才能啟用變更。但使用 YaST 變更組態時就不需要如此,因為 YaST 會自動執行 grub2-mkconfig
。
/boot/grub2/grub.cfg #
帶有開機功能表的圖形開頭顯示畫面以 GRUB 2 組態檔案 /boot/grub2/grub.cfg 為基礎,它包含關於可以透過功能表開機之所有分割區或作業系統的資訊。
系統每次開機時,GRUB 2 會直接從檔案系統載入功能表檔案。因此,在變更組態檔案後不需要重新安裝 GRUB 2。安裝或移除核心後,系統會自動重建 grub.cfg。
grub.cfg 由 grub2-mkconfig
基於檔案 /etc/default/grub 以及 /etc/grub.d/ 目錄中的程序檔編譯。因此,切勿手動編輯該檔案,而應該編輯相關的來源檔案,或者依照第 12.3 節 「使用 YaST 設定開機載入器」中所述,使用 YaST 的模組來修改組態。
/etc/default/grub #此檔案包含 GRUB 2 的更多一般選項,例如,顯示功能表的時間,或者要開機的預設作業系統。若要列出所有可用選項,請查看以下指令的輸出:
grep "export GRUB_DEFAULT" -A50 /usr/sbin/grub2-mkconfig | grep GRUB_
除了已定義的變數外,使用者還可以引入自己的變數,日後在 /etc/grub.d 目錄下的程序檔內使用。
編輯 /etc/default/grub 後,請執行 grub2-mkconfig
以更新主要組態檔案。
此檔案中設定的所有選項都是會影響所有開機項目的一般選項。透過 GRUB_*_XEN_* 組態選項可以設定 Xen 核心或 Xen 監管程式的特定選項。如需詳細資訊,請參閱下文。
GRUB_DEFAULT
設定預設會啟動的開機功能表項目。它的值可以是數值、功能表項目的完整名稱,或者「saved」。
GRUB_DEFAULT=2 會啟動第三個 (從零開始計數) 開機功能表項目。
GRUB_DEFAULT="2>0" 會啟動第三個頂層功能表項目的第一個子功能表項目。
GRUB_DEFAULT="Example boot menu entry" 會啟動名為「Example boot menu entry」的功能表項目。
GRUB_DEFAULT=saved 會啟動 grub2-reboot 或 grub2-set-default 指令指定的項目。grub2-reboot 只設定下一次重新開機的預設開機項目,而 grub2-set-default 設定發生變更之前的預設開機項目。
GRUB_HIDDEN_TIMEOUT
等待使用者按某個鍵的指定秒數。在此期間,除非使用者按下某個鍵,否則不顯示功能表。如果使用者在指定的時間內未按任何鍵,控制權將移交給 GRUB_TIMEOUT。GRUB_HIDDEN_TIMEOUT=0 首先會檢查是否按下了 Shift,如果是,則顯示開機功能表,否則會立即啟動預設的功能表項目。如果 GRUB 2 只識別了一個可開機作業系統,則預設行為就是如此。
GRUB_HIDDEN_TIMEOUT_QUIET
如果指定 false,那麼當啟動了 GRUB_HIDDEN_TIMEOUT 功能時,系統會在一個空白螢幕上顯示倒數計時器。
GRUB_TIMEOUT
在自動啟動預設開機項目之前,開機功能表顯示的時間期限,以秒為單位。如果按下某個鍵,則會取消逾時,GRUB 2 將等待您手動完成選擇。如果指定 GRUB_TIMEOUT=-1,則在您手動選取開機項目之前,功能表會一直顯示。
GRUB_CMDLINE_LINUX
此行中的項目將新增到正常和復原模式之開機項目的末尾。使用它可以將核心參數新增至開機項目。
GRUB_CMDLINE_LINUX_DEFAULT
與 GRUB_CMDLINE_LINUX 一樣,但只能在正常模式下附加項目。
GRUB_CMDLINE_LINUX_RECOVERY
與 GRUB_CMDLINE_LINUX 一樣,但只能在復原模式下附加項目。
GRUB_CMDLINE_LINUX_XEN_REPLACE
此項目將徹底取代所有 Xen 開機項目的 GRUB_CMDLINE_LINUX 參數。
GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT
與 GRUB_CMDLINE_LINUX_XEN_REPLACE 一樣,但它只會取代 GRUB_CMDLINE_LINUX_DEFAULT 的參數。
GRUB_CMDLINE_XEN
此項目只為 Xen 客體核心指定核心參數 — 工作原理與 GRUB_CMDLINE_LINUX 相同。
GRUB_CMDLINE_XEN_DEFAULT
與 GRUB_CMDLINE_XEN 一樣 — 工作原理與 GRUB_CMDLINE_LINUX_DEFAULT 相同。
GRUB_TERMINAL
啟用並指定輸入/輸出終端機裝置。可以是 console (PC BIOS 和 EFI 主控台)、serial (序列終端機)、ofconsole (開放韌體主控台) 或預設值 gfxterm (圖形模式輸出)。用引號括住所需的多個選項可以啟用多個裝置,例如 GRUB_TERMINAL="console serial"。
GRUB_GFXMODE
gfxterm 圖形終端機使用的解析度。請注意,您只能使用您的圖形卡 (VBE) 支援的模式。預設值為「auto」,即嘗試選取偏好的解析度。在 GRUB 2 指令行中輸入 vbeinfo 可以顯示 GRUB 2 可用的螢幕解析度。當 GRUB 2 開機功能表螢幕顯示時,輸入 c 可存取指令行。
您還可以在解析度設定後面附加一個值來指定色彩深度,例如 GRUB_GFXMODE=1280x1024x24。
GRUB_BACKGROUND
設定 gfxterm 圖形終端機的背景影像。該影像必須是 GRUB 2 在開機時可讀的檔案,並且必須以 .png、.tga、.jpg 或 .jpeg 字尾結尾。必要時,系統會縮放該影像以適合螢幕大小。
GRUB_DISABLE_OS_PROBER
如果將此選項設定為 true,將會停用自動搜尋其他作業系統的功能。系統只會偵測 /boot/ 中的核心影像,以及 /etc/grub.d/ 中您自己的程序檔內的選項。
SUSE_BTRFS_SNAPSHOT_BOOTING
如果將此選項設定為 true,GRUB 2 可直接開機至 Snapper 快照。如需詳細資訊,請參閱第 6.3 節 「透過從快照開機來執行系統復原」。
所有 *_DEFAULT 參數都可以手動或者使用 YaST 設定。
如需選項的完整清單,請參閱 GNU GRUB 手冊。如需可能參數的完整清單,請參閱 http://en.opensuse.org/Linuxrc。
/etc/grub.d 中的程序檔 #
系統在執行 grub2-mkconfig
指令期間,將讀取此目錄中的程序檔,這些程序檔的指示都整合到 /boot/grub2/grub.cfg 中。grub.cfg 中功能表項目的順序由此目錄中檔案的執行順序來決定。具有前置編號的檔案先執行,從最小的編號開始。00_header 在 10_linux 之前執行,而後者又在 40_custom 之前執行。如果存在採用字母名稱的檔案,這些檔案將在採用編號命名的檔案之後執行。在執行 grub2-mkconfig 期間,只有可執行檔才能在 grub.cfg 中產生輸出。依預設,/etc/grub.d 目錄中的所有檔案都是可執行檔。最重要的程序檔包括:
00_header
設定環境變數,例如系統檔案位置、顯示設定、主題和以前儲存的項目。它還可以輸入 /etc/default/grub 中儲存的優先設定。通常,您不需要變更此檔案。
10_linux
識別根裝置上的 Linux 核心,並建立相關的功能表項目,其中包括關聯的復原模式選項 (如果已啟用)。主功能表頁面中只顯示最新核心,其他核心包含在子功能表中。
30_os-prober
此程序檔使用 OS-prober 來搜尋 Linux 和其他作業系統,並將結果放入 GRUB 2 功能表。其中有些區段用於識別其他特定作業系統,例如 Windows 或 macOS。
40_custom
使用此檔案可以方便地在 grub.cfg 中包含自訂開機項目。切勿變更開頭的 exec tail -n +3 $0 部分。
90_persistent
這是一個特殊程序檔,它可以複製 grub.cfg 檔案的相應部分,並依原樣輸出其內容。這樣,您便可以直接修改 grub.cfg 的相應部分,並且所做的變更在執行 grub2-mkconfig
後可以保留下來。
處理順序依據前置編號確定,編號最小的程序檔最先執行。如果多個程序檔的前置編號相同,則按整個名稱的字母順序來決定執行順序。
在 GRUB Legacy 中,device.map 組態檔案用於依據 BIOS 磁碟機代號衍生 Linux 裝置名稱。不一定總能猜對 BIOS 磁碟機與 Linux 裝置之間的映射。例如,如果在 BIOS 組態中交換了 IDE 和 SCSI 驅動器的開機順序,那麼 GRUB Legacy 就會使用錯誤的順序。
GRUB 2 在產生 grub.cfg 時使用裝置 ID 字串 (UUID) 或檔案系統標籤,因此避免了此問題。GRUB 2 公用程式會即時建立一個暫存裝置對應,這通常足以滿足需要,在單磁碟系統中更是如此。
但是,如果您需要覆寫 GRUB 2 的自動裝置對應機制,請建立自訂對應檔案 /boot/grub2/device.map。下面的範例將變更映射,使 DISK 3 成為開機磁碟。請注意,GRUB 2 分割區編號以 1 開始,而不是像 GRUB Legacy 中那樣以 0 開始。
(hd1) /dev/disk-by-id/DISK3 ID (hd2) /dev/disk-by-id/DISK1 ID (hd3) /dev/disk-by-id/DISK2 ID
即使在作業系統開機之前,GRUB 2 也支援對檔案系統的存取。沒有 root 許可權的使用者可以存取 Linux 系統中的檔案,而在系統開機後,他們將無權存取這些檔案。若要阻擋此類型的存取,或防止使用者啟動特定的功能表項目,請設定開機密碼。
如果設定了開機密碼,則每次開機時都需要輸入該密碼,這意味著系統不會自動開機。
使用 grub2-mkpasswd-pbkdf2 來加密密碼:
tux > sudo grub2-mkpasswd-pbkdf2
Password: ****
Reenter password: ****
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.9CA4611006FE96BC77A...
將產生的字串連同 set superusers 指令一起貼到檔案 /etc/grub.d/40_custom 中。
set superusers="root" password_pbkdf2 root grub.pbkdf2.sha512.10000.9CA4611006FE96BC77A...
執行 grub2-mkconfig
以將變更輸入到主要組態檔案中。
在重新開機後,當您嘗試啟動某個功能表項目時,系統會提示您輸入使用者名稱和密碼。輸入 root 以及您在執行 grub2-mkpasswd-pbkdf2 指令期間輸入的密碼。如果身分證明正確,系統將啟動選定的開機項目。
如需詳細資訊,請參閱https://www.gnu.org/software/grub/manual/grub.html#Security。
在 SUSE Linux Enterprise Desktop 系統中,設定開機載入程式一般選項最簡單的方法是使用 YaST 模組。在 內,選取 › 。模組會顯示系統目前的開機載入程式組態,並允許您進行變更。
使用索引標籤可以檢視和變更關於類型、位置和進階載入程式設定的設定。您可以選擇要在標準模式還是 EFI 模式下使用 GRUB 2。
如果您使用的是 EFI 系統,則只能安裝 GRUB2-EFI,否則您的系統不再能夠開機。
若要重新安裝開機載入程式,請確定變更 YaST 中的一個設定,然後將其復原。例如,若要重新安裝 GRUB2-EFI,請先選取 ,然後立即重新切換至 。
否則,開機載入程式可能只會部分重新安裝。
若要使用此處未列出的開機載入程式,請選取。請先詳細閱讀開機載入程式的說明文件,再選取這個選項。
若要修改開機載入程式的位置,請執行下列步驟:
選取索引標籤,然後為選擇以下其中一個選項:
這樣會在第一個磁碟的 MBR 中安裝開機載入程式 (根據 BIOS 中預設的開機順序)。
這會在 / 分割區的開機磁區中安裝開機載入程式。
這個選項可讓您手動指定開機載入程式的位置。
按一下套用您的變更。
如果您的電腦有多個硬碟,您可以指定磁碟的開機順序。如需詳細資訊,請參閱第 12.2.4 節 「BIOS 磁碟機與 Linux 裝置之間的映射」。
開啟索引標籤。
按一下。
如果列出超過一個磁碟,請選擇一個磁碟,然後按一下或重新排列顯示磁碟的順序。
按兩次儲存變更。
可透過索引標籤來設定進階開機選項。
輸入新值或者用滑鼠按住相應的方向鍵,以變更的值。
如果選取該選項,開機載入程式將會搜尋其他系統 (例如 Windows) 或其他 Linux 安裝。
隱藏開機功能表並使用預設項目開機。
從「預設開機區段」清單中選取所需項目。請注意,開機項目名稱中的「>」符號用於分隔開機區段及其子區段。
使用一個附加的密碼保護開機載入程式和系統。如需詳細資訊,請參閱第 12.2.6 節 「設定啟動密碼」。
「VGA 模式」選項指定開機過程中的預設螢幕解析度。
在預設參數的末尾新增選擇性核心參數。如需所有可用參數的清單,請參閱 http://en.opensuse.org/Linuxrc。
如果核取該選項,則開機功能表會顯示在圖形開頭顯示畫面中,而不是以文字模式顯示。此時,您可以透過清單設定開機螢幕的解析度,並使用檔案選擇器指定圖形主題定義檔案。
如果您的機器是透過序列控制台控制的,請啟用此選項並指定以何速度來使用哪一個 COM 埠。請參閱 info grub 或 http://www.gnu.org/software/grub/manual/grub.html#Serial-terminal
啟動包含開機載入程式的分割區。有些舊版作業系統 (例如 Windows) 只能從使用中的分割區開機。
以與作業系統無關的一般代碼取代目前的 MBR。
啟動支援受信任之計算功能的 TrustedGRUB2 (受信任的平台摸組 (Trusted Platform Module, TPM))。如需詳細資訊,請參閱 https://github.com/Sirrix-AG/TrustedGRUB2。
在 3215 和 3270 終端機上,游標的移動方式以及在 GRUB 2 中發出編輯指令的方式存在一些差異和限制。
互動性存在嚴重的限制。輸入時通常不能獲得直觀的回饋。若要查看游標所在的位置,請輸入底線 (_)。
與 3215 終端機相比,3270 終端機在顯示和重新整理螢幕方面要好得多。
無法進行「傳統的」游標移動操作。Alt、Meta、Ctrl 和游標鍵不起作用。若要移動游標,請使用第 12.4.2 節 「按鍵組合」中列出的按鍵組合。
插入記號 (^) 用做控制字元。若要輸入文字 ^ 後再輸入一個字母,請依序輸入 ^、^ 和字母。
Enter 鍵無法作用,請改為使用 ^–J。
|
常用的替代按鍵︰ |
^–J |
確認 (「Enter」) |
|
^–L |
中止,返回前一「狀態」 | |
|
^–I |
Tab 鍵補齊 (在編輯模式與外圍程序模式下) | |
|
功能表模式下可用的按鍵: |
^–A |
到第一個項目 |
|
^–E |
到最後一個項目 | |
|
^–P |
到上一個項目 | |
|
^–N |
到下一個項目 | |
|
^–G |
向上一頁 | |
|
^–C |
向下一頁 | |
|
^–F |
啟動選定的項目或進入子功能表 (與 ^–J 相同) | |
|
E |
編輯選定的項目 | |
|
C |
進入 GRUB-Shell | |
|
編輯模式下可用的按鍵: |
^–P |
向上移動一行 |
|
^–N |
向下移動一行 | |
|
^–B |
向左移動一格 | |
|
^–F |
向右移動一格 | |
|
^–A |
到行首 | |
|
^–E |
到行尾 | |
|
^–H |
退格 | |
|
^–D |
刪除 | |
|
^–K |
刪除到行尾 | |
|
^–Y |
恢復刪除 | |
|
^–O |
插入新行 | |
|
^–L |
重新整理螢幕 | |
|
^–X |
開機項目 | |
|
^–C |
進入 GRUB-Shell | |
|
指令行模式下可用的按鍵: |
^–P |
上一個指令 |
|
^–N |
歷程中的下一個指令 | |
|
^–A |
到行首 | |
|
^–E |
到行尾 | |
|
^–B |
向左移動一格 | |
|
^–F |
向右移動一格 | |
|
^–H |
退格 | |
|
^–D |
刪除 | |
|
^–K |
刪除到行尾 | |
|
^–U |
刪除行 | |
|
^–Y |
恢復刪除 |
grub2-mkconfig
依據 /etc/default/grub 以及 /etc/grub.d/ 中的程序檔產生新的 /boot/grub2/grub.cfg。
grub2-mkconfig -o /boot/grub2/grub.cfg
執行不帶任何參數的 grub2-mkconfig 會將組態列印至 STDOUT 以供使用者檢查。在寫入 /boot/grub2/grub.cfg 後使用 grub2-script-check
可以檢查其語法。
grub2-mkconfig 無法修復 UEFI 安全開機表如果您使用的是 UEFI 安全開機,但您的系統無法再正常連接 GRUB 2,則您可能需要另行重新安裝 Shim 並重新產生 UEFI 開機表,為此請使用︰
root # shim-install --config-file=/boot/grub2/grub.cfggrub2-mkrescue為安裝的 GRUB 2 組態建立一個可開機的救援影像。
grub2-mkrescue -o save_path/name.iso iso
grub2-script-check
檢查指定檔案中有無語法錯誤。
grub2-check-config /boot/grub2/grub.cfg
grub2-once
僅設定下次開機的預設開機項目。若要取得可用開機項目的清單,請使用 --list 選項。
grub2-once number_of_the_boot_entry
grub2-once 說明不使用任何選項呼叫該程式可以取得所有可能選項的完整清單。
如需關於 GRUB 2 更進一步的資訊,請參閱 http://www.gnu.org/software/grub/。另請參閱 grub info 頁面。您也可以在「技術資訊搜尋」中搜尋關鍵字「GRUB 2」,取得關於特殊問題的資訊,網址是 http://www.suse.com/support。