星期六, 10月 01, 2022

RHEL8/CentOS8 grubby

上週幫客戶處理問題時,對 RHEL8/CentOS8 的 grub 又多了解了一些,記錄一下。

Ubuntu 的選單是放在 /boot/grub/grub.cfg ,所以看這個檔案,就大略知道選單有哪些選項,修改可以直接改這個檔案。RHEL8 跟 CentOS8 使用 grubby 來管理開機時的 grub 選單,所以可以用 grubby 指令來做管理。

常用的指令可以參考 12 practical grubby command examples (cheat sheet)

我這次主要使用到的指令有

  • 列出開機選單項目的資訊
  • 修改該選單項目的 kernel options
  • 取得目前預設開機項目
  • 設定預設開機項目

列出開機選單項目的資訊

列出選單項目,可以用下面指令

grubby --info=ALL | grep -E "^kernel|^index"

取得 index 跟 kernel ,就可以修改指定項目的 kernel options 了。

修改指定選單項目的 kernel options

修改的指令如下

# 修改指定的 kernel 的 kernel options,路徑可參考上面指令
grubby --update-kernel=<kernel路徑> --args="ipv6.disable=1"
# 修改目前的
grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="ipv6.disable=1"

若要移除 kernel options,要用 –remove-args

# 移除指定的 kernel 的 kernel options
grubby --update-kernel=<kernel路徑> --remove-args="ipv6.disable=1"
# 移除目前 kernel 的 kernel options
grubby --update-kernel=/boot/vmlinuz-$(uname -r) --remove-args="ipv6.disable=1"

這裡的修改,會影響到 /boot/loader/entries 目錄下的檔案。

取得目前預設開機項目

grubby --default-index
grubby --default-title

設定預設開機項目

用以下指令設定

grubby --set-default="/boot/vmlinuz-4.18.0-193.1.2.el8_2.x86_64"
grubby --set-default-index=2

這裡設置以後,會影響到 /boot/grub/grubenv 的檔案內容。

可惜 ubuntu 沒有 grubby,感覺這在管理開機選單上還蠻方便的。

沒有留言: