前言:
在企业生产过程中,为提高系统稳定性、安全性,提升系统性能和响应速度需要根据需求升级内核,当然更是为了更好的兼容其他工具版本,操作系统是个载体,运行的应用是我们的生产工具。
1. 第三方yum源升级
查看系统安装后信息
cat /etc/redhat-release
uname -r
uname -a
rpm -qa | grep kernel ## 已安装内核包信息
kernel-tools-3.10.0-1160.el7.x86_64
kernel-tools-libs-3.10.0-1160.el7.x86_64
kernel-headers-3.10.0-1160.el7.x86_64
kernel-3.10.0-1160.el7.x86_64
kernel-devel-3.10.0-1160.el7.x86_64
abrt-addon-kerneloops-2.1.11-60.el7.centos.x86_64
查看yum源信息
yum repolist
升级命令
wget -nc http://mirrors.aliyun.com/repo/Centos-7.repo
yum upgrade -y ## 更新已安装的所有软件包
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org ## 载入ELRepo仓库的公共密钥
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-6.el7.elrepo.noarch.rpm ## 安装ELRepo仓库的yum源
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available ## 查看可用的系统内核包
yum info --enablerepo=elrepo-kernel kernel-lt kernel-ml ## 查看kernel-lt和kernel-ml内核版本信息
yum --enablerepo=elrepo-kernel install kernel-lt kernel-lt-devel -y ## 根据需求选择版本
rpm -qa | grep kernel
kernel-headers-3.10.0-1160.114.2.el7.x86_64
kernel-lt-devel-5.4.274-1.el7.elrepo.x86_64
kernel-tools-libs-3.10.0-1160.114.2.el7.x86_64
kernel-devel-3.10.0-1160.114.2.el7.x86_64
kernel-3.10.0-1160.114.2.el7.x86_64
kernel-tools-3.10.0-1160.114.2.el7.x86_64
kernel-lt-5.4.274-1.el7.elrepo.x86_64
kernel-3.10.0-1160.el7.x86_64
kernel-devel-3.10.0-1160.el7.x86_64
abrt-addon-kerneloops-2.1.11-60.el7.centos.x86_64
yum remove kernel-tools kernel-tools-libs kernel-headers -y ## 删除旧版本的kernel-tools、kernel-tools-libs和kernel-headers,卸载过程中同事卸载了一些依赖我们要安装回来
yum install compat-glibc compat-glibc-headers gcc gcc-c++ gcc-gfortran glibc-devel glibc-headers libquadmath-devel libtool perl-Archive-Extract perl-CPAN perl-CPANPLUS perl-CPANPLUS-Dist-Build perl-ExtUtils-CBuilder perl-ExtUtils-Embed perl-ExtUtils-Install perl-ExtUtils-MakeMaker perl-ExtUtils-ParseXS perl-File-Fetch perl-IPC-Cmd perl-Module-Build perl-core perl-devel systemtap systemtap-devel -y
yum --enablerepo=elrepo-kernel install kernel-lt* -y ## 安装新kernel-tools、kernel-tools-libs和kernel-headers
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.4.274-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1160.114.2.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-71fdb9cb6af84a52bdb24a6918bccb72) 7 (Core)
grub2-set-default 0
grub2-mkconfig -o /etc/grub2.cfg
grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
reboot
内核相关包说明
kernel-lt
The Linux kernel. (The core of any Linux-based operating system.)
最核心的包,所有Linux系统的基础
kernel-lt-devel
Development package for building kernel modules to match the kernel.
内核开发包,更多是提供给内核开发人员开发内核的一些功能模块
kernel-lt-doc
Various bits of documentation found in the kernel sources.
内核包的指引文档
kernel-lt-headers
Header files of the kernel, for use by glibc.
内核的头文件,一般其他应用需要调用内核能力就要引入这些头文件
kernel-lt-tools
Assortment of tools for the kernel.
内核级别的一些工具
kernel-lt-tools-libs
Libraries for the kernel tools.
内核级别工具所依赖的包
kernel-lt-tools-libs-devel
Development package for the kernel tools libraries.
内核级别工具开发所需的依赖包
2. 源码编译升级
源码包下载
http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/
https://cdn.kernel.org/pub/linux/kernel/
https://www.kernel.org/
https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.274.tar.xz ## 为跟yum升级内核版本匹配
安装编译所需要的依赖并更新
yum install gcc make ncurses-devel openssl-devel flex bison elfutils-libelf-devel -y ## gcc版本 > 4.9
yum upgrade -y
复制默认内核配置文件
cp /boot/config-$(uname -r) .config
make config ## 传统文本配置
make menuconfig ## 以文本选项配置内核选项
make xconfig ## 以图形界面配置内核选项
make oldconfig ## 更新当前配置文件以匹配新版本内核的配置选项,同时保留现有配置中的设置和选择
编译安装
make -j 16 ## 漫长的等待
make modules_install ## 将编译生成的内核模块安装到系统中
make install
小结:
两种方式各有优缺点,根据需求选择。yum升级简单高效,但是版本较少;源码编译升级可选择内核版本相对灵活,但升级过程比较复杂;内核升级过程中尽量先测试后升级,以免勇士变烈士。