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

913 阅读3分钟

如何玩转CentOS Linux内核升级?手把手教你内核编译升级至最新版本1 升级环境2 升级需求2.1 升级前的内核版本2.2 升级后的内核版本3 升级步骤3.1 安装编译环境3.2 更新GCC版本3.2.1 多GCC版本共存3.2.2 永久替换旧的GCC3.3 下载内核源代码并解压3.4 配置 config3.4.1 方法一3.4.2 方法二3.5 编译安装内核3.5.1 编译内核3.5.2 安装内核3.5.3 设置以后默认从新的内核启动3.6 删除多余内核3.6.1 查看当前使用的内核3.6.2 查看通过 rpm 安装的内核3.6.3 删除多余内核3.6.4 更新引导配置3.7 重启服务器3.8 检查内核版本

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

1 升级环境

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

2 升级需求

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

2.1 升级前的内核版本

# uname -sr

image-20240615165328791

2.2 升级后的内核版本

# uname -sr

image-20240615223558128

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

示例:

image-20240615164838504

image-20240615164855176

3.2 更新GCC版本

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

3.2.1 多GCC版本共存

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

# yum install centos-release-scl -y

示例:

image-20240615170838272

image-20240615170913329

# yum install devtoolset-8-gcc* -y

示例:

image-20240615170428863

image-20240615170447479

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

示例:

image-20240615170601671

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++

略!

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

示例:

image-20240615171412270

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 ----- 一路回车

示例:

image-20240615172115887

image-20240615172952724

3.4.2 方法二

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

# make menuconfig 

略!

3.5 编译安装内核

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

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

3.5.1 编译内核
# make -j 1 all

示例:

image-20240615173437284

image-20240615215354025

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

示例:

image-20240615215539540

image-20240615215659836

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

示例:

image-20240615215821737

3.6 删除多余内核

3.6.1 查看当前使用的内核

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

# uname -sr

示例:

image-20240615222508139

3.6.2 查看通过 rpm 安装的内核

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

# rpm -qa | grep kernel

示例:

image-20240615222619196

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

示例:

image-20240615222834794

image-20240615222913796

image-20240615223011044

image-20240615223028982

image-20240615223123703

image-20240615223202043

image-20240615223225846

image-20240615223318860

3.6.4 更新引导配置

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

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

示例:

image-20240615223358260

3.7 重启服务器

# reboot

示例:

image-20240615223455789

3.8 检查内核版本

# uname -sr
# uname -a

示例:

image-20240615223819186

原文链接:mp.weixin.qq.com/s?__biz=Mzk…

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

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

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

图片