在 CentOS/RHEL/OEL 5 和 6 中更改默认内核

本文说明了将 CentOS/RHEL/OEL 5 和 6 系统引导到安装的不同内核的步骤。

CentOS/RHEL/OEL 5 和 6 操作系统使用 GRUB 作为默认引导加载程序。
当我们使用 rpm、up2date 或者 yum 应用程序安装内核时,内核包会在引导加载程序配置文件中为该新内核创建一个条目。
但是,rpm 不会将新内核配置为作为默认内核启动,而 up2date 和 yum 则可以。
使用 rpm 安装新内核时必须手动执行此操作,并在使用 u2date 或者 yum 安装新内核后仔细检查引导加载程序配置文件,以确保配置正确。

当我们之前已经安装了不同的内核并希望使用与 GRUB 配置文件中的默认设置不同的内核进行引导时,我们必须更改要使用的默认内核。

要更改 CentOS/RHEL/OEL 5 & 6 中的默认引导内核,请继续执行以下步骤:

  1. 使用文本编辑器编辑文件 /boot/grub/grub.conf。

GRUB 配置文件以 default 、 timeout 、 splashimage 和 hiddenmenu 指令开头,它应该类似于以下示例中的指令:

# vi /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/mapper/vg_luisol6-lv_root
# initrd /initrd-[generic-]version.img
#boot=/dev/xvda
default=0
timeout=50
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Oracle Linux Server Unbreakable Enterprise Kernel (2.6.39-400.294.6.el6uek.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.39-400.294.6.el6uek.x86_64 ro root=/dev/mapper/vg_luisol6-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=la-latin1 rd_LVM_LV=vg_luisol6/lv_root rd_LVM_LV=vg_luisol6/lv_swap rd_NO_DM rhgb quiet
initrd /initramfs-2.6.39-400.294.6.el6uek.x86_64.img
title Oracle Linux Server Unbreakable Enterprise Kernel (3.8.13-118.19.2.el6uek.x86_64)
root (hd0,0)
kernel /vmlinuz-3.8.13-118.19.2.el6uek.x86_64 ro root=/dev/mapper/vg_luisol6-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=la-latin1 rd_LVM_LV=vg_luisol6/lv_root rd_LVM_LV=vg_luisol6/lv_swap rd_NO_DM rhgb quiet
initrd /initramfs-3.8.13-118.19.2.el6uek.x86_64.img
title Oracle Linux Server Unbreakable Enterprise Kernel (4.1.12-61.1.14.el6uek.x86_64)
root (hd0,0)
kernel /vmlinuz-4.1.12-61.1.14.el6uek.x86_64 ro root=/dev/mapper/vg_luisol6-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=la-latin1 rd_LVM_LV=vg_luisol6/lv_root rd_LVM_LV=vg_luisol6/lv_swap rd_NO_DM rhgb quiet
initrd /initramfs-4.1.12-61.1.14.el6uek.x86_64.img
title Oracle Linux Server Red Hat Compatible Kernel (2.6.32-642.6.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-642.6.1.el6.x86_64 ro root=/dev/mapper/vg_luisol6-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=la-latin1 rd_LVM_LV=vg_luisol6/lv_root rd_LVM_LV=vg_luisol6/lv_swap rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-642.6.1.el6.x86_64.img

指令“default” 指定默认情况下 GRUB 应引导的内核条目。

GRUB 将配置文件中的内核条目从 0 开始计数。
指令“default=0”表示默认情况下 GRUB 引导第一个内核条目,除非我们覆盖此操作。

  1. 将“default”的值更改为默认情况下要引导的所需内核的值,该值对应于任何已安装的内核。
    将值从“0”设置为与我们需要引导的默认内核对应的所需值。

在上面的例子中,有 3/5 行的节,每个节都指向一个已安装的内核。
这些节总是以标题条目开始,之后相关的根、内核和 initrd 指令应始终缩进。
确保每个节以包含版本号(在括号中)的标题开头,该版本号与同一节的内核 /vmlinuz-[version_number] 行中的版本号相匹配。

该示例包含安装的 4 个不同内核(示例来自 OEL 6 系统):

title Oracle Linux Server Unbreakable Enterprise Kernel (2.6.39-400.294.6.el6uek.x86_64) = 0
title Oracle Linux Server Unbreakable Enterprise Kernel (3.8.13-118.19.2.el6uek.x86_64) = 1
title Oracle Linux Server Unbreakable Enterprise Kernel (4.1.12-61.1.14.el6uek.x86_64) = 2
title Oracle Linux Server Red Hat Compatible Kernel (2.6.32-642.6.1.el6.x86_64) = 3

改成:

default=1" to boot with UEK3 kernel version "3.8.13-118.19.2.el6uek.x86_64"
"default=2" to boot with UEK4 kernel version "4.1.12-61.1.14.el6uek.x86_64"
"default=3" to boot with RHCK (Red Hat Compatible Kernel) version "2.6.32-642.6.1.el6.x86_64"
  1. 重新启动系统。
# shutdown -r now
  1. 一旦服务器备份并运行,通过运行“uname”命令确保启动的默认内核是正确的:
# vi /boot/grub/grub.conf
...
default=2
timeout=50
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Oracle Linux Server Unbreakable Enterprise Kernel (2.6.39-400.294.6.el6uek.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.39-400.294.6.el6uek.x86_64 ro root=/dev/mapper/vg_luisol6-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=la-latin1 rd_LVM_LV=vg_luisol6/lv_root rd_LVM_LV=vg_luisol6/lv_swap rd_NO_DM rhgb quiet
initrd /initramfs-2.6.39-400.294.6.el6uek.x86_64.img
title Oracle Linux Server Unbreakable Enterprise Kernel (3.8.13-118.19.2.el6uek.x86_64)
root (hd0,0)
kernel /vmlinuz-3.8.13-118.19.2.el6uek.x86_64 ro root=/dev/mapper/vg_luisol6-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=la-latin1 rd_LVM_LV=vg_luisol6/lv_root rd_LVM_LV=vg_luisol6/lv_swap rd_NO_DM rhgb quiet
initrd /initramfs-3.8.13-118.19.2.el6uek.x86_64.img
title Oracle Linux Server Unbreakable Enterprise Kernel (4.1.12-61.1.14.el6uek.x86_64)
root (hd0,0)
kernel /vmlinuz-4.1.12-61.1.14.el6uek.x86_64 ro root=/dev/mapper/vg_luisol6-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=la-latin1 rd_LVM_LV=vg_luisol6/lv_root rd_LVM_LV=vg_luisol6/lv_swap rd_NO_DM rhgb quiet
initrd /initramfs-4.1.12-61.1.14.el6uek.x86_64.img
title Oracle Linux Server Red Hat Compatible Kernel (2.6.32-642.6.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-642.6.1.el6.x86_64 ro root=/dev/mapper/vg_luisol6-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=la-latin1 rd_LVM_LV=vg_luisol6/lv_root rd_LVM_LV=vg_luisol6/lv_swap rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-642.6.1.el6.x86_64.img
# uname -r
4.1.12-61.1.14.el6uek.x86_64
日期:2020-09-17 00:12:23 来源:oir作者:oir