Linux

如何在 redhat 7 上配置 grub.cfg 文件以便從特定核心啟動

  • July 17, 2016

在 Red Hat EL 版本 5 和 6 中,我們可以很容易地更新/etc/grub.conf,以防我們想通過預設變數更改核心

For example , grub.conf on redhat 5
default=0
timeout=5
#splashimage=(hd0,0)/grub/splash.xpm.gz
#hiddenmenu
 title Red Hat Enterprise Linux Server (2.6.18-410.el5)
  root (hd0,0)
  kernel /vmlinuz-2.6.18-410.el5 ro root=/dev/rootvg/slash
  initrd /initrd-2.6.18-410.el5.img
 title Red Hat Enterprise Linux Server (2.6.18-409.el5)
   root (hd0,0)
  kernel /vmlinuz-2.6.18-409.el5 ro root=/dev/rootvg/slash
  initrd /initrd-2.6.18-409.el5.img

/etc/grub.conf如果我們想從核心版本啟動, 那麼2.6.18-409我們只需更改default=1. 所以在下次啟動時,作業系統將以舊核心啟動

RHEL7 非常不同。我在 RHEL7 中找到了/boot/grub2/grub.cfg 但是我不明白如何更改文件以便從其他核心啟動,就像我在 RHEL5 上所做的那樣。

redhat 7 版本上如何更改 GRUB 核心

要列出將在系統引導時顯示的所有菜單條目,請發出以下命令:

# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : Red Hat Enterprise Linux Server (3.10.0-327.18.2.el7.x86_64) 7.2 (Maipo)
1 : Red Hat Enterprise Linux Server (3.10.0-327.10.1.el7.x86_64) 7.2 (Maipo)
2 : Red Hat Enterprise Linux Server, with Linux 0-rescue- b2c5e6a1c5ea4cb5be82100bd7dc3469

如何驗證目前條目是什麼(來自 /etc/default/grub 的目前核心)

# grub2-editenv list
 saved_entry=1

這意味著來自 grub 配置的目前核心版本是:3.10.0-327.10.1.el7.x86_64

讓我們檢查一下機器上目前的核心版本是什麼:

# uname -r
 3.10.0-327.10.1.el7.x86_64

現在讓我們從 GRUB 配置更改核心版本,這樣 Linux 將使用更高的核心 - 3.10.0-327.18.2.el7.x86_64 啟動,

記得從 awk 命令中我們得到條目號 0

所以設置應該如下

# grub2-set-default 0

現在我們通過以下方式檢查新的 GRUB 配置

# grub2-editenv list
  saved_entry=0

所以現在新的 GRUB 配置設置為核心版本:3.10.0-327.18.2.el7.x86_64

現在我們重新啟動機器

# Reboot

重新啟動後,Linux 啟動了新核心

# uname -r
  3.10.0-327.18.2.el7.x86_64

更改GRUB_DEFAULT=0/etc/default/grub您想要的數字,現在您需要使用重新生成 grub2 配置grub2-mkconfig -o /boot/grub2/grub.cfg

引用自:https://serverfault.com/questions/789998