Centos和Ubutun系统内核升级操作

简介: Centos和Ubutun系统内核升级操作

1 centos7升级内核


1.1 检查已安装的内核版本


让我们安装了一个发行版,它包含了一个特定版本的内核。为了展示当前系统中已安装的版本,我们可以:


# uname -sr
Linux 3.10.0-862.el7.x86_64


如果我们现在进入https://www.kernel.org/,在撰写本文时,我们看到最新的内核版本是5.12(其他版本可以从同一网站获得)。还要考虑的一个重要的事情是内核版本的生命周期 - 如果你当前使用的版本接近它的生命周期结束,那么在该日期后将不会提供更多的 bug 修复。关于更多信息,请参阅内核发布页。


1.2 升级内核


大多数现代发行版提供了一种使用 yum 等包管理系统和官方支持的仓库升级内核的方法。但是,这只会升级内核到仓库中可用的最新版本 - 而不是在

https://www.kernel.org/ 中可用的最新版本。不幸的是,Red Hat 只允许使用前者升级内核。与 Red Hat 不同,CentOS 允许使用 ELRepo,这是一个第三方仓库,可以将内核升级到最新版本。ELRepo 仓库是基于社区的用于企业级 Linux 仓库,提供对 RedHat Enterprise (RHEL) 和 其他基于 RHEL的 Linux 发行版(CentOS、Scientific、Fedora 等)的支持。ELRepo 聚焦于和硬件相关的软件包,包括文件系统驱动、显卡驱动、网络驱动、声卡驱动和摄像头驱动等。要在 CentOS 7 上启用 ELRepo 仓库,请运行:


#导入ELRepo仓库的公共密钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
#安装ELRepo仓库的yum源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm


640.png


1.3 查看可用的系统内核包


仓库启用后,你可以使用下面的命令列出可用的内核相关包:可以看到5.4和5.12两个版本


yum --disablerepo="*" --enablerepo="elrepo-kernel" list available


640.png


1.4 安装最新版本内核


对于centos操作系统,直接使用yum进行rpm包安装,可以避免一些依赖的问题,但是默认会安装最新版本内核,如果不需要的话,可以自己到网站下载对应版本,然后指定版本安装,https://buildlogs.centos.org/c7-kernels.x86_64/kernel/


#--enablerepo 选项开启 CentOS 系统上的指定仓库。默认开启的是 elrepo,这里用 elrepo-kernel 替换。
yum -y --enablerepo=elrepo-kernel install kernel-ml


640.png


1.5 设置 GRUB 默认的内核版本


内核安装好后,需要设置为默认启动选项并重启后才会生效


查看系统上的所有可用内核:


# sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux 7 Rescue 8916e15095f33283a3b46d8f9ac7c654 (5.12.1-1.el7.elrepo.x86_64)
1 : CentOS Linux (5.12.1-1.el7.elrepo.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-ea3169a040da42e0b632f72ceb5abd82) 7 (Core)


设置新的内核为grub2的默认版本


服务器上存在4 个内核,我们要使用 5.12 这个版本,为了让新安装的内核成为默认启动选项,可以通过 grub2-set-default 0 命令或编辑 /etc/default/grub 文件来设置


#设置 GRUB_DEFAULT=0。意思是 GRUB 初始化页面的第一个内核将作为默认内核
grub2-set-default 0


生成 grub 配置文件并重启


#接下来运行下面的命令来重新创建内核配置
# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.12.1-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-5.12.1-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-862.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-8916e15095f33283a3b46d8f9ac7c654
Found initrd image: /boot/initramfs-0-rescue-8916e15095f33283a3b46d8f9ac7c654.img
Found linux image: /boot/vmlinuz-0-rescue-ea3169a040da42e0b632f72ceb5abd82
Found initrd image: /boot/initramfs-0-rescue-ea3169a040da42e0b632f72ceb5abd82.img
done


验证


# reboot
# uname -r
5.12.1-1.el7.elrepo.x86_64


已升级成功


题外话


没有外网,制作离线内核升级包


# 下载制作升级包的工具
yum -y install yum-utils
yum -y install createrepo -y
repotrack httpd -p ./httpds/           或者   yumdownloader --resolve --destdir /tmp/ansible ansible
# 制作最新版本的内核软件包,保存在了./kernel-ml.x86_64/目录
repotrack kernel-ml.x86_64 -p ./kernel-ml.x86_64/           或者   yumdownloader --resolve --destdir ./kernel-ml.x86_64 kernel-ml.x86_64
# 制作好了之后只需要把kernel-ml.x86_64目录拷贝到需要升级的机器升级即可


删除旧内核


  • 查看系统中全部的内核:


[root@hadoop-iot-test-01 ~]# rpm -qa | grep kernel
kernel-headers-3.10.0-957.27.2.el7.x86_64
kernel-tools-3.10.0-862.el7.x86_64
kernel-debug-devel-3.10.0-957.27.2.el7.x86_64
kernel-ml-5.12.1-1.el7.elrepo.x86_64
kernel-3.10.0-862.el7.x86_64
kernel-tools-libs-3.10.0-862.el7.x86_64


  • 方法1、yum remove 删除旧内核的 RPM 包


# yum remove kernel-3.10.0-514.el7.x86_64 \
kernel-tools-libs-3.10.0-862.11.6.el7.x86_64 \
kernel-tools-3.10.0-862.11.6.el7.x86_64 \
kernel-3.10.0-862.11.6.el7.x86_64


  • 方法2、yum-utils 工具


如果安装的内核不多于 3 个,yum-utils 工具不会删除任何一个。只有在安装的内核大于 3 个时,才会自动删除旧内核。


# 安装yum-utils
yum install -y yum-utils
# 删除旧版本  
package-cleanup --oldkernels


2 Ubuntu升级内核


2.1 环境


在虚拟机上运行的ubuntu16.04 , 使用命令uname -r查看当前系统内核版本 当前版本为4.15.0-45-generic 要升级的内核为4.20.2


2.2 准备需要的材料


到网址[https://kernel.ubuntu.com/~kernel-ppa/mainline/]下载要升级的内

核版本


640.png


选择对应的文件,我的是amd64


640.png


使用命令下载(也可以网页下载)


wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.20.5/linux-headers-4.20.5-042005_4.20.5-042005.201901260434_all.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.20.5/linux-headers-4.20.5-042005-generic_4.20.5-042005.201901260434_amd64.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.20.5/linux-image-unsigned-4.20.5-042005-generic_4.20.5-042005.201901260434_amd64.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.20.5/linux-modules-4.20.5-042005-generic_4.20.5-042005.201901260434_amd64.deb


2.3 安装


直接使用dpkg命令安装下载好的deb包


sudo dpkg -i *.deb


安装完成后,重启ubuntu系统 使用命令uname -r查看当前版本号


# reboot
等待机子重启
# uname -r
Linux hadoop-master02 4.20.5-042005-generic


内核升级成功。


2.4 遇到问题及解决方案


* 遇到问题


升级ubuntu 16.04的新内核时出现依赖libssl1.1.0问题


640.png


  • 解决方案


需要安装包 libssl1.1, 直接使用命令会安装失败,需要更添加源,这个包的更新数据ubuntu官方认可的源才能更新。到该网址去查看

[https://packages.ubuntu.com/bionic/libssl1.1]或者单独下载安装一个libssl1.1_1.1.0g-2ubuntu4.1_amd64.deb文件然后再dpkg -i *.deb升级就可以了


wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb
dpkg -i libssl1.1_1.1.0g-2ubuntu4_amd64.deb
相关文章
|
5月前
|
存储 Ubuntu Linux
VMware-安装CentOS系统教程及安装包
虚拟机相当于是一个独立于你电脑的环境,在这个环境上面,你可以安装Linux、Windows、Ubuntu等各个类型各个版本的系统,在这个系统里面你不用担心有病读等,不用担心文件误删导致系统崩溃。 虚拟机也和正常的电脑系统是一样的,也可以开关机,不用的时候,你关机就可以了,也不会占用你的系统资源,使用起来还是比较方便 这里也有已经做好的CentOS 7系统,下载下来解压后直接用VMware打开就可以使用
1145 69
|
3月前
|
监控 关系型数据库 MySQL
在CentOS系统中,如何统计哪个进程打开了文件描述符?
利用上述方法,你可以有效地监控和统计CentOS系统中的进程打开的文件描述符数量,以帮助排查错误或优化系统配置。通过组合使用各种工具和命令,可以获得对系统状态和行为的深入了解,进而做出相应的调整和
200 5
|
5月前
|
Ubuntu Linux 索引
Centos 7、Debian及Ubuntu系统中安装和验证tree命令的指南。
通过上述步骤,我们可以在CentOS 7、Debian和Ubuntu系统中安装并验证 `tree`命令。在命令行界面中执行安装命令,然后通过版本检查确认安装成功。这保证了在多个平台上 `tree`命令的一致性和可用性,使得用户无论在哪种Linux发行版上都能使用此工具浏览目录结构。
496 78
|
6月前
|
缓存 NoSQL Linux
在CentOS 7系统中彻底移除MongoDB数据库的步骤
以上步骤完成后,MongoDB应该会从您的CentOS 7系统中被彻底移除。在执行上述操作前,请确保已经备份好所有重要数据以防丢失。这些步骤操作需要一些基本的Linux系统管理知识,若您对某一步骤不是非常清楚,请先进行必要的学习或咨询专业人士。在执行系统级操作时,推荐在实施前创建系统快照或备份,以便在出现问题时能够恢复到原先的状态。
553 79
|
5月前
|
缓存 监控 Linux
CentOS系统如何查看当前内存容量。
以上方法都不需要特殊软件或者复杂配置即可执行,在CentOS或其他Linux发行版中都适合运行,并且它们各自透露出不同角度对待问题解答方式:从简单快速到深入详尽;从用户态到核心态;从操作层数到硬件层数;满足不同用户需求与偏好。
413 8
|
7月前
|
机器人 Linux
CentOS 7系统中安装特定版本CMake 3.21.2的方法。
到这里,过程已经全部完成。如果你跟随上面的步骤来,那么你现在已经拥有了一个全新的CMake版本在你的CentOS 7系统上了。这个过程就像是你通过一系列仪式,唤醒了一个沉睡已久的古老机器人,它现在完全按照你的意愿来帮你构建和编译软件了。
593 18
|
5月前
|
存储 Linux 数据安全/隐私保护
确定CentOS系统分区表类型(MBR或GPT)
以上方法均能够帮助用户准确地识别出CentOS下连接硬件所应用得具体磁盘标准,并根据实际需求做进一步处理与管理工作。
576 0
|
5月前
|
Ubuntu Linux 云计算
CentOS与Ubuntu:Linux系统的双璧
选择Ubuntu还是CentOS,取决于用户的具体需求,如是否需要图形化界面、对稳定性的要求、软件包管理的偏好以及对商业支持的需求等。两者都是优秀的Linux发行版,只是在设计理念和目标用户群体上有所不同。#深度好文计划#
|
7月前
|
安全 Linux 网络安全
在CentOS 7系统上创建SSL/TLS证书以启用HTTPS
请记住,这只是单枚勋章,在野外,CA签发的证书才是堂堂正正的金盾牌。如果您打算让这个小兵走得更远,考虑一下像Let's Encrypt这样的免费CA服务,它会给您的小兵颁发一个大家都认可的荣誉勋章。而且,千万不要忘了定期更新您的装备哦,毕竟,没有哪件盔甲是永远坚不可摧的。
433 4
|
7月前
|
Cloud Native 安全 Linux
龙蜥操作系统:CentOS 谢幕之后,国产云原生系统的崛起之路
龙蜥操作系统(Anolis OS)是 CentOS 停止维护后,由阿里云等企业联合发起的开源项目。它以双内核架构和全栈优化为核心,提供无缝替代 CentOS 的方案,兼容主流生态并针对云计算场景深度优化。其技术亮点包括 RHCK 和 ANCK 双内核、性能优化、全栈安全及国密算法支持。龙蜥适用于云原生基础设施、企业级应用部署及开发环境,社区已吸引 200 多家单位参与。未来规划涵盖 AI 框架优化、RISC-V 架构适配及桌面环境构建,正重新定义云时代的操作系统边界。
1841 0