Centos内核版本升级

关于内核

内核进行的是应用软件和计算机硬件的交互工作
Centos内核版本升级
内核进行的是应用软件和计算机硬件的交互工作在计算机科学中,内核(英语:kernel)又称核心,是一个计算机程序,用来管理软件发出的数据I/O(输入与输出)要求,将这些要求转译为数据处理的指令,交由中央处理器(CPU)及计算机中其他电子组件进行处理,是现代操作系统中最基本的部分。
它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并由内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的。所以内核通常提供一种硬件抽象的方法,来完成这些操作。通过进程间通信机制及系统调用,应用进程可间接控制所需的硬件资源(特别是处理器及IO设备)。

1、Centos 6.x系统

1.1 安装elrepo

yum update -y
# 导入公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 
# 安装6版本的ELRepo
rpm -Uvh elrepo-release-6-8.el6.elrepo.noarch.rpm 	
# 安装新版本内核
yum --enablerepo=elrepo-kernel install kernel-lt -y

目前centos6版本中仅提供有kernel-lt 版本内核,最新内核为 4.4.17(截至20190121)
https://elrepo.org/linux/kernel/el6/x86_64/RPMS/
Centos内核版本升级

1.2 启用新版本内核

cp /etc/grub.conf{,.bak}
vim /etc/grub.conf
将其中的default修改为0

Centos内核版本升级

1.3 修改完成后重启服务器

reboot

2、Centos 7.x系统

2.1 安装elrepo

yum update -y
# 导入公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 
# 安装7.x版本的ELRepo
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
# 安装新版本内核
yum --enablerepo=elrepo-kernel install kernel-lt -y

目前为cetnos 7.x提供了ml和lt两个版本的内核,可以根据需求进行选择:
https://elrepo.org/linux/kernel/el7/x86_64/RPMS/
Centos内核版本升级

2.2 修改grub文件

Centos7.x 内核升级完毕后,需要修改内核的启动顺序:

vim /etc/default/grub

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed ‘s, release .*$,,g‘ /etc/system-release)"
GRUB_DEFAULT=saved		#把这里的saved改成0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet net.ifnames=0"
GRUB_DISABLE_RECOVERY="true"

接下来还需要运行grub2-mkconfig命令来重新创建内核配置,命令是grub2-mkconfig -o /boot/grub2/grub.cfg,如下:

grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.17.171-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-4.17.171-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-693.2.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.2.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-f0f31005fb5a436d88e3c6cbf54e25aa
Found initrd image: /boot/initramfs-0-rescue-f0f31005fb5a436d88e3c6cbf54e25aa.img
done

2.3 修改完成后重启服务器

reboot

2.4 关于两个内核版本的说明

ELRepo有两种类型的Linux内核包,kernel-lt和kernel-ml。 他们之间有什么区别?
kernel-ml软件包是根据Linux Kernel Archives的主线稳定分支提供的源构建的。 内核配置基于默认的RHEL-7配置,并根据需要启用了添加的功能。 这些软件包有意命名为kernel-ml,以免与RHEL-7内核发生冲突,因此,它们可以与常规内核一起安装和更新。
kernel-lt包是从Linux Kernel Archives提供的源代码构建的,就像kernel-ml软件包一样。 不同之处在于kernel-lt基于长期支持分支,而kernel-ml基于主线稳定分支。

安装过程中遇到问题可以参考 https://dwz.cn/vZotLbZD

3、参考文献

http://elrepo.org
https://rorschachchan.github.io/2018/08/25/centos6-5升级最新内核4-18的坑/
https://rorschachchan.github.io/2018/06/11/阿里云centos7升级内核过程/
https://www.admon.org/faqs/kernel-lt-and-kernel-ml/