centos系统更新内核版本

一、简介

虽然平常用linux来表示整个操作系统,但其实linux只是内核。

在正常操作期间,内核负责执行两个重要任务:

  1. 作为硬件和系统上运行的软件之间的接口。
  2. 尽可能高效地管理系统资源。

为此,内核通过内置的驱动程序或以后可作为模块安装的驱动程序与硬件通信。
例如,当你计算机上运行的程序想要连接到无线网络时,它会将该请求提交给内核,后者又会使用正确的驱动程序连接到网络。

随着新的设备和技术定期出来,如果我们想充分利用它们,保持最新的内核就很重要。此外,更新内核将帮助我们利用新的内核函数,并保护自己免受先前版本中发现的漏洞的攻击。当然了,使用新的内核也可能会有一定的bug。

二、 升级centos系统内核

2.1 检查已安装的内核版本
在centos中我们可以使用uname -r来查看当前系统的内核版本
[root@oracle-test ~]# uname -r
3.10.0-327.el7.x86_64

要查看最新的linux内核版本我们可以访问它的官网https://www.kernel.org/
还要考虑的一个重要的事情是内核版本的生命周期 - 如果你当前使用的版本接近它的生命周期结束,那么在该日期后将不会提供更多的 bug 修复。关于更多信息,请参阅内核发布页。

2.2 安装ELRepo仓库
大多数现代发行版提供了一种使用 yum 等包管理系统和官方支持的仓库升级内核的方法。
但是,这只会升级内核到仓库中可用的最新版本 - 而不是在 https://www.kernel.org/ 中可用的最新版本。不幸的是,Red Hat 只允许使用前者升级内核。

与 Red Hat 不同,CentOS 允许使用 ELRepo,这是一个第三方仓库,可以将内核升级到最新版本。

CentOS 7 上启用 ELRepo 仓库

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

列出可用的内核相关软件包

[root@oracle-test ~]# yum --disablerepo="*" --enablerepo=“elrepo-kernel” list available
Available Packages
kernel-lt.x86_64
kernel-lt-devel.x86_64
kernel-lt-doc.noarch
kernel-lt-headers.x86_64
kernel-lt-tools.x86_64
kernel-lt-tools-libs.x86_64
kernel-lt-tools-libs-devel.x86_64
kernel-ml.x86_64
kernel-ml-devel.x86_64
kernel-ml-doc.noarch
kernel-ml-headers.x86_64
kernel-ml-tools.x86_64
kernel-ml-tools-libs.x86_64
kernel-ml-tools-libs-devel.x86_64

2.3 安装最新的主线稳定内核
最新主线稳定内核ml(ml stands for mainline stable)

# yum --enablerepo=elrepo-kernel -y install kernel-ml

2.4 修改grub默认的内核版本
为了让新的内核默认启动,我们需要修改grub配置文件

打开并编辑 /etc/default/grub 并设置 GRUB_DEFAULT=0。意思是 GRUB 初始化页面的第一个内核将作为默认内核。

vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT=“console”
GRUB_CMDLINE_LINUX=“rd.lvm.lv=centos/root rd.lvm.lv=centos/swap crashkernel=auto rhgb quiet”
GRUB_DISABLE_RECOVERY=“true”

2.5 重新创建内核配置

# grub2-mkconfig -o /boot/grub2/grub.cfg

重启并验证最新的内核是否已作为默认内核。

三、 在 CentOS 7 上设置 grub2

3.1 开机选单是自动创建出来的
请勿尝试手动编辑开机选单,因为它是按照 /boot/ 目录内的文件自动创建出来的。然而你可以调整 /etc/default/grub 档内定义的通用设置,及在 /etc/grub.d/40_custom 档内加入个别自定项目。

/etc/default/grub 档的内容如下:

GRUB_TIMEOUT=5
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT=“console”
GRUB_CMDLINE_LINUX=“crashkernel=auto rhgb quiet”
GRUB_DISABLE_RECOVERY=“true”

通用于所有项目的内核选项都通过 GRUB_CMDLINE_LINUX 行来定义。举个例说,要是你想看见详细的开机消息,删除 rhgb quiet。要是你想看见标准的开机消息,只删除 rhgb。执行以下指令便能套用更改了的设置:

[root@host ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file …
Found linux image: /boot/vmlinuz-3.10.0-229.14.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-229.14.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-229.4.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-229.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-229.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-605f01abef434fb98dd1309e774b72ba
Found initrd image: /boot/initramfs-0-rescue-605f01abef434fb98dd1309e774b72ba.img
done

UEFI 系统上的指令是 grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

4.2 如何定义缺省项目
若要列出系统开机时显示的所有选项,请执行以下指令:

[root@host ~]# awk -F’ ‘$1=="menuentry " {print i++ " : " $2}’ /etc/grub2.cfg
0 : CentOS Linux 7 (Core), with Linux 3.10.0-229.14.1.el7.x86_64
1 : CentOS Linux 7 (Core), with Linux 3.10.0-229.4.2.el7.x86_64
2 : CentOS Linux 7 (Core), with Linux 3.10.0-229.el7.x86_64
3 : CentOS Linux 7 (Core), with Linux 0-rescue-605f01abef434fb98dd1309e774b72ba
又或者:
[root@host ~]# grep “^menuentry” /boot/grub2/grub.cfg | cut -d “’” -f2

缺省的项目是通过 /etc/default/grub 档内的 GRUB_DEFAULT 行来定义。不过,要是 GRUB_DEFAULT 行被设置为 saved,这个选项便存储在 /boot/grub2/grubenv 档内。你可以这样查看它:

[root@host ~]# grub2-editenv list
saved_entry=CentOS Linux (3.10.0-229.14.1.el7.x86_64) 7 (Core)
/etc/default/grub 档内另一个有用的选项是:
GRUB_SAVEDEFAULT=true

连同 GRUB_DEFAULT=saved,它确保现时选择的开机项目会被设置下次开机采用 —— 适用于双重开机的系统,因为更新 Windows 须要数次重新开机。

/boot/grub2/grubenv 档是不能手动编辑的。请采用以下指令:

[root@host ~]# grub2-set-default 2
[root@host ~]# grub2-editenv list
saved_entry=2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值