前言
GRUB 來自 GRand Unified Bootloader 的縮寫。它的功能是在啟動時從 BIOS 接管掌控、加載自身、加載 Linux 內核到內存,然後再把執行權交給內核。一旦內核開始掌控,GRUB 就完成了它的任務,也就不再需要了。在CentOS7以及其他比較新的Linux發行版本中,默認都採用了grub2進行引導。
grub2
grub.cfg 文件是 GRUB 配置文件。它由 grub2-mkconfig 命令根據用戶的配置使用一組主配置文件以及 grub 默認文件而生成。/boot/grub2/grub.cfg 文件在 Linux 安裝時會初次生成,安裝新內核時又會重新生成。
grub.cfg可以手動編輯,但是一般不會去編輯,可能出現不可預知的錯誤。如果需要修改或者添加grub.cfg啟動項配置,可以選擇編輯它的配置文件,在/etc/grub.d/這個目錄下。如果是跟grub本身相關屬性的設置可以在 /etc/default/grub裡面編輯。
/etc/default/grub的相關配置項
GRUB_TIMEOUT 這個鍵的值決定了顯示 GRUB 選擇菜單的時間長度。GRUB 提供了同時保存多個安裝內核並在啟動時使用 GRUB 菜單在其中選擇的功能。這個鍵的默認值是 5 秒,但我通常修改為 10 秒使得有更多時間查看選項並作出選擇。
GRUB_DISTRIBUTOR 這個鍵定義了一個從 /etc/system-release 文件中提取發行版本的 sed 表達式。這個信息用於生成出現在 GRUB 菜單中的每個內核發佈版的文本名稱,例如 “CentOS Linux” 等。由於不同發行版之間 system-release 文件結構的差異,在你的系統中這個 sed 表達式可能有些不同。
GRUB_DEFAULT 決定默認引導哪個內核。如果是 saved,這代表最新內核。這裡的其它選項如果是數字則代表了 grub.cfg 中列表的索引。使用索引號 1,就會總是加載列表中的第二個內核,即使安裝了一個新內核之後也是。因此使用索引數字的話,在安裝一個新內核後會加載不同的內核。要確保引導特定內核版本的唯一方法是設置 GRUB_DEFAULT 的值為想要內核的名稱,例如 4.18.9-1-MANJARO。
GRUB_SAVEDEFAULT 通常,grub 默認文件中不會指定這個選項。當選擇不同內核進行引導時,正常操作下該內核只會啟動一次。默認內核不會改變。當其設置為 true 並和 GRUB_DEFAULT=saved 一起使用時,這個選項會保存一個不同內核作為默認值。當選擇不同內核進行引導時會發生這種情況。
GRUB_DISABLE_SUBMENU 一些人可能會希望為 GRUB 菜單創建一個內核的層級菜單結構。這個鍵和 grub.cfg 中一些額外內核配置允許創建這樣的層級結構。例如,主菜單中可能有 production 和 test 子菜單,每個子菜單中包括了一些合適的內核。設置它為 false 可以啟用子菜單。
GRUB_TERMINAL_OUTPUT 一些環境下可能需要或者必要將輸出重定向到一個不同的顯示控制檯或者終端。默認情況下是把輸出發送到默認終端,通常 console 等價於 Intel 系列個人電腦的標準輸出。另一個有用的選擇是在使用串行終端或者 Integrated Lights Out (ILO) 終端連接的數據中心或者實驗室環境中指定 serial。
GRUB_TERMINAL_INPUT 和 GRUB_TERMINAL_OUTPUT 類似,可能需要或者必要重定向輸入為串行終端或者 ILO 設備、而不是標準鍵盤輸入。
GRUB_CMDLINE_LINUX 這個鍵包括了在啟動時會傳遞給內核的命令行參數。注意這些參數會被添加到 grub.cfg 所有已安裝內核的內核行。這意味著所有已安裝的內核在啟動時都會有相同的參數。我通常刪除 rhgb 和 quiet 參數以便我可以看到引導和啟動時內核和 systemd 輸出的所有內核信息消息。
GRUB_DISABLE_RECOVERY 當這個鍵的值被設置為 false,GRUB 菜單中就會為每個已安裝的內核創建一個恢復條目。當設置為 true 時就不會創建任何恢復條目。但不管這個設置怎樣,最後的內核條目總是一個 rescue 選項
安裝grub並生成grub.cfg文件
grub-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg
閱讀更多 linux運維菜 的文章