Table of Contents

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本

1 升级环境

操作系统版本当前内核版本
CentOS Linux release 7.6.1810 (Core)Linux Kernel 3.10.0-957

2 升级需求

CentOS 7.9 编译安装最新内核版本。

2.1 升级前的内核版本
# uname -sr
  • 1.

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_Linux安全加固

2.2 升级后的内核版本
# uname -sr
  • 1.

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_linux_02

3 升级步骤

3.1 安装编译环境
# yum groupinstall "Development Tools" -y && \
yum install -y \
	openssl-devel \
	rpm-build \
	redhat-rpm-config \
	asciidoc \
	hmaccalc \
	perl-ExtUtils-Embed \
	pesign \
	xmlto \
	audit-libs-devel \
	binutils-devel \
	elfutils-devel \
	elfutils-libelf-devel \
	ncurses-devel \
	newt-devel \
	numactl-devel \
	pciutils-devel \
	python-devel \
	zlib-devel \
	rpm-build
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.

示例:

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_Linux安全加固_03

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_linux_04

3.2 更新GCC版本

CentOS7 自带的 GCC 是 4.8.5 版本,编译内核会导致报错。

3.2.1 多GCC版本共存

以下是安装新的GCC操作:(多GCC版本共存)。

# yum install centos-release-scl -y
  • 1.

示例:

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_Linux安全加固_05

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_Linux安全加固_06

# yum install devtoolset-8-gcc* -y
  • 1.

示例:

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_内核编译升级_07

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_Linux内核升级_08

# scl enable devtoolset-8 bash  -----该操作允许GCC多版本共存
  • 1.

示例:

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_linux_09

3.2.2 永久替换旧的GCC

以下是永久替换旧的GCC操作:(只使用GCC新版本)

# mv /usr/bin/gcc /usr/bin/gcc-4.8.5
# ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
# mv /usr/bin/g++ /usr/bin/g++-4.8.5
# ln -s /opt/rh/devtoolset-8/root/bin/g++
  • 1.
  • 2.
  • 3.
  • 4.

略!

3.3 下载内核源代码并解压

从清华大学镜像源下载 Linux Kernel 6.5.2 的源代码包。

注意:一定要执行 cd linux-6.5.2 命令,因为接下的操作默认都是这该目录下操作的。

# wget https://mirrors.tuna.tsinghua.edu.cn/kernel/v6.x/linux-6.9.4.tar.gz
# tar -xzf linux-6.9.4.tar.gz
# cd linux-6.9.4
  • 1.
  • 2.
  • 3.

示例:

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_linux_10

3.4 配置 config
3.4.1 方法一

根据现有内核参数去生成新的配置参数文件 .configconfig-3.10.0-957.el7.x86_64 这个文件在你的机器里可能并不相符,可以执行 ls -l /boot/ 命令查看你的这个文件名称。

# cp /boot/config-3.10.0-957.el7.x86_64 .config
# make oldconfig ----- 一路回车
  • 1.
  • 2.

示例:

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_内核编译升级_11

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_linux_12

3.4.2 方法二

执行以下这个命令,会进入一个配置界面,如果看不懂就保持默认配置,Tab键选定 save 然后回车,根据提示保存 .config 文件。

# make menuconfig 
  • 1.

略!

3.5 编译安装内核

-j 12 参数是因为主机CPU是1核心,根据自己的机器情况修改。

make INSTALL_MOD_STRIP=1 modules_install > /dev/null 把内核模块的 debug 信息去掉,节约磁盘空间。

3.5.1 编译内核
# make -j 1 all
  • 1.

示例:

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_Linux安全加固_13

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_内核编译升级_14

3.5.2 安装内核
# make INSTALL_MOD_STRIP=1 modules_install > /dev/null && make modules_install && make install
  • 1.

示例:

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_内核编译升级_15

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_linux_16

3.5.3 设置以后默认从新的内核启动
# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg && sudo grub2-set-default 0 && sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  • 1.

示例:

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_linux_17

3.6 删除多余内核
3.6.1 查看当前使用的内核

使用 uname -sr 查看当前使用的内核。

# uname -sr
  • 1.

示例:

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_linux_18

3.6.2 查看通过 rpm 安装的内核

使用 rpm -qa|grep kernel 查看通过 rpm 安装的内核。

# rpm -qa | grep kernel
  • 1.

示例:

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_Linux内核升级_19

3.6.3 删除多余内核

使用 yum remove [多余内核] 删除多余内核,执行多次删除多余的 kernel。

# yum remove kernel-tools-libs-3.10.0-957.el7.x86_64 -y
# yum remove kernel-headers-3.10.0-1160.119.1.el7.x86_64 -y
# yum remove kernel-tools-3.10.0-957.el7.x86_64 -y
# yum remove kernel-debug-devel-3.10.0-1160.119.1.el7.x86_64 -y
# yum remove kernel-3.10.0-957.el7.x86_64 -y
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

示例:

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_Linux安全加固_20

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_Linux安全加固_21

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_内核编译升级_22

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_Linux内核升级_23

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_Linux安全加固_24

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_内核编译升级_25

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_内核编译升级_26

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_Linux内核升级_27

3.6.4 更新引导配置

使用 grub2-mkconfig -o /boot/grub2/grub.cfg 更新引导配置。

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

示例:

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_Linux安全加固_28

3.7 重启服务器
# reboot
  • 1.

示例:

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_Linux安全加固_29

3.8 检查内核版本
# uname -sr
# uname -a
  • 1.
  • 2.

示例:

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_linux_30

原文链接: https://mp.weixin.qq.com/s?__biz=MzkxNzI1OTE3Mw==&mid=2247492497&idx=1&sn=e4e2e12f8d27a28df18423935711d324&chksm=c141f55bf6367c4da32f0dc9f57db7878a1d4feca5ef8a91e148c3ff89051ed76e46fc269bdd&token=1470233958&lang=zh_CN#rd

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本_Linux安全加固_31