Linux内核升级教程

萱蘇的运维日常 2024-03-31 11:53:38

日常工作中有时会遇到系统版本过旧,无法满足安全扫描后的安全要求,或者在安装一些应用时对内核版本有特定的要求,比如wireguard,这时,我们就需要升级OS或Linux内核版本;

Linux 内核版本分为主线(mailine)、稳定版(stable )和长期版本(longterm或LTS)。所有内核版本都可以在内核开发官方网站上获取。其中,rc版本为候选版(RC),开发版本可供公众测试

官网:The Linux Kernel Archives

内核升级通常存在两种方法:ELRepo升级和编译升级。建议使用ELRepo进行升级。在本文中会对这两种方式都进行说明。

ELRepo更新升级小版本

小版本的升级直接使用命令yum update -y进行正常升级即可,就不进行详细说明。

升级大版本

1. 获取源

#获取对应的yum源yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm#或者使用如下方法rpm-ivh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm#导入公钥rpm--importhttps://www.elrepo.org/RPM-GPG-KEY-elrepo.org

若因为网络问题无法直接通过命令安装的话,则可以wget到本地,然后再进行。若还是因为网络问题无法下载或者下载慢,则可以访问以下连接进行下载,然后上传到对应的服务器上。若连接失效请评论或私聊找我获取。

链接:https://pan.baidu.com/s/1bbj-HdginzTJLF5Yd-4A0Q 提取码:ut1e --来自百度网盘超级会员V6的分享

2. 安装对应的版本

#查看可进行安装的版本[root@iZm5ebzoh3qa8egessx458Z~]#yum--disablerepo="*"--enablerepo="elrepo-kernel"list available#安装lt版本[root@iZm5ebzoh3qa8egessx458Z~]#yum--disablerepo="*"--enablerepo="elrepo-kernel"install kernel-lt-y

3.  验证安装

[root@iZm5ebzoh3qa8egessx458Z~]#awk-F\''$1=="menuentry " {print i++ ":" $2}'/etc/grub2.cfg[root@iZm5ebzoh3qa8egessx458Z~]#cat/boot/grub2/grub.cfg|grep menuentry

前面的序号内核版本在系统内的代表。可以看到新的版本已经存在了

4. 设置从新内核启动

#方法一#参数来源于cat/boot/grub2/grub.cfg |grep menuentry 执行结果[root@iZm5ebzoh3qa8egessx458Z~]#grub2-set-default"CentOS Linux (5.4.273-1.el7.elrepo.x86_64) 7 (Core)"#方法二#往/etc/default/grub 增加 GRUB_DEFAULT=0vim/etc/default/grub#编辑/etc/grub2.cfg,修改setdefault = 0vim/etc/grub2.cfg#生成grub启动文件grub2-mkconfig-o/boot/grub2/grub.cfg#检查是否修改grub2-editenv list

5. 重启验证

可以看到现在内核已经从3.10升级到5.4了。

编译安装

yum更新到5.4版本,使用编译更新至ml-6.8版本

1. 获取包

[root@iZm5ebzoh3qa8egessx458Z ~]# wget https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.6.23.tar.xz

若还因为网络问题无法下载或者下载慢,则可以访问以下连接进行下载,然后上传到对应的服务器上。若连接失效请评论或私聊找我获取。

官网:ELRepo

链接:https://pan.baidu.com/s/1WwkdR6Bi4RirrOtyskT4zA 提取码:pph8 --来自百度网盘超级会员V6的分享

2. 编译安装

#安装对应依赖[root@iZm5ebzoh3qa8egessx458Z~]#yum install-y gcc make git ctags ncurses-devel openssl-devel bison flex elfutils-libelf-devel bc#解压[root@iZm5ebzoh3qa8egessx458Z~]#tar-xvf linux-6.6.23tar.xz#进入目录 复制原来的使用原来的配置文件[root@iZm5ebzoh3qa8egessx458Z~]#cp/boot/config-$(uname-r)linux-6.6.23/.config[root@iZm5ebzoh3qa8egessx458Z~]#cd linux-6.6.23#配置内核,使用config配置文件make olddefconfig#编译内核make-j $(nproc)#安装内核模块make modules_instalmake install

配置内核命令说明:

• make defconfig 将创建一个基本的、针对目标架构优化过的默认配置。

• make olddefconfig 会基于当前目录下的 .config 文件填充缺失的配置项,并保持已有的配置不变。

• make menuconfig 或 make xconfig(如果系统支持图形界面)进行交互式的配置。如果需要个性化配置,可以使用

• make config 需要一行一行确认配置,不建议使用。

3. 设置从内核启动

方法与之前一致,就不进行描述

4.  重启验证是否成功

异常

在执行make olddefconfig时会出现如下异常,改异常表示当前gcc版本太低,只需临时使用高版本gcc即可。

#添加SCL仓库yum install centos-release-scl-rh-y#安装GCC组件yum install devtoolset-7-gcc devtoolset-7-gcc-c++devtoolset-7-gcc-gfortran-y#在当前终端开启对应shell环境scl enable devtoolset-7bash

重启或关闭shell后该配置将失效

问题反馈

若对文中有任何的疑问,或者需要帮助可以通过以下方式进行反馈

• 直接进行评论或者单独私聊

• 发送邮件到:mr_xuansu@163.com

更多内容请关注微信公众号:萱蘇的运维日常

0 阅读:5