Linux系统升级及内核版本升级

一、背景

工作中有时会遇到系统版本过旧,无法满足安全扫描后的安全要求,系统漏洞数量多,处理难度较大,这时,我们就需要升级OS或Linux内核版本;

Linux 内核版本分为主线、稳定和长期版本。所有内核版本都可以在内核开发官方网站 https://www.kernel.org 上获取。

主线版本代表整个 Linux 内核的一个树干,新的主线版本每 2-3 个月发布一次,所有的新功能及特性都将会包含主线版本中。

稳定内核则是在主线版本中,被认为是” 稳定的” 那些。稳定内核的任何错误修复都将从主线树中继承,也就是主线内核出现的任何错误 (包括之前的任何旧版本内核的错误和 BUG) 在得到修复之后才会被指定为稳定内核,所以在通常情况下,稳定内核既有内核新功能,同时 BUG 也是最少的内核版本。稳定内核的更新发布依赖于主线内核 (直到下一个主线内核可用),稳定的内核更新是根据需要发布的,通常是每 3 个月。而对于长期文档内核版本,通常提供几个” 长期维护” 内核版本,用于较早的内核树错误修复后的更新。这些内核只应用重要的错误修复,通常不会有非常频繁的更新。

主线、稳定和长期都是活动内核版本,由 Linus Torvalds 及 Linux 内核组织维护和释放。 而我们平时所使用的 Linux 发行版的内核都为分发(第三方)内核,许多 Linux 发行版都提供自己的” 长期维护” 内核版本,这些内核可能是也可能不是基于内核开发人员维护的。因此分发版本的内核版本由发行版的厂商决定并有自己的维护周期,通常由分发版更新时一起发布。

二、升级操作

我们一般使用安装新内核来完成升级而非直接升级内核,安装新内核不会覆盖旧内核,而升级会导致新内核直接替换旧内核,可能会导致系统无法启动,安装也可以让我们在升级后有回滚的选择,确认正常后再删除老内核,。

2.1、升级前确认

内核版本:uname -r或-a

当前使用的版本:awk -F’ ‘$1=="menuentry " {print i++ " : " $2}’ /etc/grub2.cfg
在这里插入图片描述

OS发行版本:cat /proc/version,cat /etc/redhat-release,cat /etc/issue,

升级建议:先升级到小版本最新,再升级大版本

2.2、 redhat/CentOS系统

1)最简单如果操作系统联网的话,执行:yum update; 执行后,系统会检测是否有可升级的程序,如果有,则会列出详细的升级项,并询问你是否升级,确认后,退出当前命令,执行yum -y update自动升级。注,这种在线升级,往往只能实现内核版本的小版本升级

2)图像界面的OS,可点击菜单“系统”-“管理”-“软件更新”,利用系统自带的系统更新界面更新。之后,系统会自动扫描是否有可用的更新。如果有,则会在屏幕上列出。

Linux系统升级及内核版本升级_第1张图片
按需安装即可,yum方式更新内核的优点是:快捷方便,成功率高。

3)如果你有自己的yum源:

1> yum makecache //更新软件包列表,源信息

也可使用以下yum源:rpm -ivh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
或yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

上面命令可能会因网速的问题报错,可先下载下来:
wget https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
rpm -ivh elrepo-release-7.el7.elrepo.noarch.rpm

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org //导入el源的秘钥

linux8的:yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm

更多详见官网

2>yum list available //查看可安装的内核版本

yum list kernel --showduplicates // 查看 yum 可升级的内核版本,有需要的版本可以直接执行 update 升级
Linux系统升级及内核版本升级_第2张图片

yum --disablerepo="*" --enablerepo=“elrepo-kernel” list available
Linux系统升级及内核版本升级_第3张图片
注:lt为长期稳定了能,ml为主线产品,这里我们选lt版;

现场实际:
yum --disablerepo="*" --enablerep=“elrepo-kernel” list available
Linux系统升级及内核版本升级_第4张图片

yum --disablerepo="*" --enablerep=“elrepo-kernel” install kernel-lt -y
Linux系统升级及内核版本升级_第5张图片
Linux系统升级及内核版本升级_第6张图片
安装完成验证:
在这里插入图片描述
注:执行yum list kernel和uname -r看到的还是当前OS使用的kernel版本;从上图我们可以看到新旧版本都存在,是随时可以切换的。

3>更新安装:

yum --disablerepo=* --enablerepo=elrepo install -y kernel-lt //禁用其他源只用elrepo安装新内核

4> 更新完成后,查看当前OS启动所用内核版本,执行:

cat /boot/grub2/grub.cfg |grep menuentry
Linux系统升级及内核版本升级_第7张图片
现场实际更新完成后,就可以看到新的内核版本已经加入到启动列表里了:
Linux系统升级及内核版本升级_第8张图片

5>设置操作系统从新内核启动

grub2-set-default “CentOS Linux (4.4.221-1.el7.elrepo.x86_64) 7 (Core)” //替换为升级后的内核信息,安装对应格式编写,即uname -a显示的:
在这里插入图片描述
或者:
vi /etc/default/grub //增加GRUB_DEFAULT=0。指定GRUB 初始化页面的第一个内核将作为默认内核。
Linux系统升级及内核版本升级_第9张图片
再执行:grub2-mkconfig -o /boot/grub2/grub.cfg //用新的内核信息生成grub启动文件

6>查看内核启动项是否修改

grub2-editenv list
在这里插入图片描述
确认后重启完成升级。

Ubuntu的参考:https://www.cnblogs.com/Older-Driver-of-Newer/p/7077150.html

2.3、只升级内核(无网)

可进入官网离线下载要升级的内核包:

最新稳定版5.14.7:wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.14.7.tar.xz

可单击进入此查看包的内容。

也可以去git上下载,单击进入;对应的ubuntu,进入。

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/kernel-3.10.0-1160.el7.x86_64.rpm

也可以去https://mirrors.edge.kernel.org/pub/linux/kernel/下找对应版本的内核。

:生产环境中不推荐编译安装。

tar -xvf linux-5.14.7.tar.xz
mkdir /usr/local/src
mv ./linux-5.14.7 /usr/local/src //或直接解压时-C 指定
yum install ncurses-devel #升级ncurses
make mrporper
cp /boot/config-‘uname -r’ /usr/src/kernels/ linux-5.14.7/.config #使用原来的配置文件
make menuconfig
Linux系统升级及内核版本升级_第10张图片
(输入y选中,M编译为模块)
a、General setup→[*] enable deprecated sysfs features to support old userspace tools
b、Processor type and features→HighMemory Support。
c、找到以下选中选项并选中:
networking support → networking options → network packet filtering framework(netfilter)
(1)Corenetfilter configuration
. 勾中"Netfilter connection tracking support" -m state相关模块是依赖它的,不选则没有。
. 将netbios name service protocal support(new) 编译成模块,不然后面升级iptables后启动时会出错
. 勾中"Netfilter Xtables support (required for ip_tables)"

(2)IP: Netfilter Configuration
. 将 “IPv4 connection tracking support (require for NAT)” 编译成模块。
. 勾中IP tables support (required for filtering/masq/NAT) 。
. 将 “Full NAT” 下的 “MASQUERADE target support” 和 “REDIRECT target support” 编译成模块

编译并安装内核
#make clean // 清除下内核编译的目标文件
#make bzImage // 生成内核文件
#make modules // 编码模块
#make modules_install // 安装模块
#make install // 安装

修改grub2配置文件,配置从新内核启动,参考上文步骤5;

重启:shutdown -r “now”

验证:uname -rs //参考

2.4、内核包说明

kernel

Linux 内核软件包,包含单、多核和多处理器系统的内核,是任何 Linux 操作系统的核心,单处理器的系统仅需安装内核包。内核处理操作系统的基本功能: 内存分配、进程分配、设备输入和输出等

kernel-devel

包含提供足够的针对内核软件包构建模块的内核头文件和 makefile 文件

kernel-headers

包含指定 Linux 内核、用户空间库文件和程序之间指定接口的 C 头文件。头文件定义了构建大多数标准程序所需的结构和常量,也是重建 glibc 软件包所必需的

kernel-doc

包含来自内核源代码的文档文件。各种关于 Linux 内核和设备以及驱动程序的信息都记录在这些文件当中

kernel-firmware

包含对于某些设备及其操作的固件信息文件

kernel-debug

包含许多对于内核 debug 诊断和调试的启用选项,只有当我们需要尝试收集额外的内核错误信息时才应该安装它。它是以牺牲性能为代价

kernel-debug-devel

包含内核 debug 诊断和调试的启用选项,以牺牲性能为代价

三、附录:包升级命令

在这里插入图片描述
Linux系统升级及内核版本升级_第11张图片
1)配置yum更新源
/etc/yum.repos.d目录下新建主机的yum源,.repos文件中,repositoryid:指定一个仓库,name指定仓库名称, baseurl:指定仓库的URL,mirrorlist指定仓库的镜像站点,enable是否启用本仓库,gpgcheck是否检查软件包的GPG签名,gpgkey:指定GPG签名文件的URL。

2)加速yum:

vim /etc/yum.conf //配置如下

proxy=代理ip:端口
proxy_username=代理服务器的用户名
proxy_password=代理服务器密码

yum install yum-fastestmirror //让yum自动选择最快的镜像服务器

3)Yum常用命令
Linux系统升级及内核版本升级_第12张图片
【centos区分】

yum -y update 升级所有包,改变软件设置和系统设置,系统版本和内核都升级

yum -y upgrade升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变

【ubuntu】
sudo apt update:只检查更新里的软件版本列表,不更新(已安装的软件包是否有可用的更新,给出汇总报告)

sudo apt upgrade 软件包名:更新已安装的软件包

你可能感兴趣的:(Linux知识点,linux,系统升级,内核升级,yum)