如何在CentOS 7中安全删除旧的内核版本?


15

我可能会由于CentOS 7中竞争性内核而遇到奇怪的症状。那么,如何安全删除旧内核?我怎么知道最新的内核呢?

下面是我在有关服务器上研究此内容时获得的终端输出。请注意,我尝试了package-cleanup,但它保留了相同的2个内核:

本教程中的说明说以下两个命令的输出应该匹配,但是即使重新启动后,您也可以看到它们不匹配:

[root@localhost ~]# rpm -qa kernel |sort -V |tail -n 1
kernel-3.10.0-229.el7.x86_64
[root@localhost ~]# uname -r
3.10.0-229.14.1.el7.x86_64

其余命令确认有两个内核,并说明了删除旧内核的尝试。

[root@localhost ~]# cd /usr/src/kernels
[root@localhost kernels]# ls -al
total 16
drwxr-xr-x.  4 root root 4096 Oct  2 12:55 .
drwxr-xr-x.  4 root root 4096 Oct  2 13:15 ..
drwxr-xr-x. 22 root root 4096 Oct  2 12:55 3.10.0-229.14.1.el7.x86_64
drwxr-xr-x. 22 root root 4096 Oct  2 12:35 3.10.0-229.el7.x86_64
[root@localhost kernels]# rpm -q kernel
kernel-3.10.0-229.el7.x86_64
kernel-3.10.0-229.14.1.el7.x86_64
[root@localhost kernels]# package-cleanup --oldkernels=1
Loaded plugins: fastestmirror
Usage: 
    package-cleanup: helps find problems in the rpmdb of system and correct them

    usage: package-cleanup --problems or --leaves or --orphans or --oldkernels
Command line error: --oldkernels option does not take a value
[root@localhost kernels]# package-cleanup --oldkernels
Loaded plugins: fastestmirror
No old kernels to remove
[root@localhost kernels]# rpm -q kernel
kernel-3.10.0-229.el7.x86_64
kernel-3.10.0-229.14.1.el7.x86_64
[root@localhost kernels]# 

我也打开/etc/yum.conf并设置了installonly_limit=1,但这导致后续yum update命令出错,称1超出了可接受的值范围installonly_limit

我认为 3.10.0-229.14.1.el7.x86_64是最新的,但是我怎么知道呢?另外,引导选项似乎提供了多个内核供您选择。当系统从选项列表中的第一个内核自动引导时,混乱的机会变得更糟。

有人可以解释一下它是如何工作的,尤其是如何安全删除旧内核,以便可以消除内核版本,以免引起奇怪症状吗? 我想确保无论系统如何重启,最新的内核都是唯一可以运行的内核。


走出大门,所以我现在无法写下完整的答案。稍后将尝试再次检查。yum-utils用于执行此操作(不确定是否仍然有效)。if-not-true-then-false.com/2012/…–
0xSheepdog

@ 0xSheepdog是的,我正在使用类似教程中的那些命令,但CentOS 7服务器将不允许使用installonly_limit=1。我收到的有趣的症状可能是两个内核版本导致的,因此,如果可能的话,我只希望有一个版本,或者至少要对为什么不能少于两个版本有明确的解释,如果事实上这是不可能的。
CodeMed

2
我建议将您的“保留”标准改为“引导的内核”,而不是简单的最新版本-出于各种原因,您可能没有引导至最新的内核。
杰夫·谢勒

Answers:


23

package-cleanup --oldkernels --count=1 删除除最新内核以外的所有内核。


1
感谢Fractal Turtle的简短回答。我也希望您安全地保留至少两个最新的内核。package-cleanup --oldkernels --count=2
rangsiman

1
我跑package-cleanup --oldkernels --count=1。重新启动后,我仍然得到两个内核:CentOS Linux (4.4.6-1.el7.elrepo.x86_64) 7 (Core)CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core),您知道如何保留一个吗?
罗恩

有人可以回答@Ron的问题吗?
Alireza Mohamadi

1
fyi,软件包清理是以下内容的一部分:yum install yum-utils
TiloBunt

8

该命令package-cleanup删除较旧的内核。使用--count=1仅保存最新的。该程序将永远不会删除当前使用的内核(“因为正在运行的内核,所以不会删除内核3.10.0-327.el7”),因此您可能会在/ boot中最终拥有两个内核...直到重启并重新启动-运行命令。

所以命令是

package-cleanup --oldkernels --count=1 

联机帮助页文件的三个选项:

--oldkernels
          Remove old kernel and kernel-devel packages.
--count <COUNT>
          Number of duplicate/kernel packages to keep on the system (default 2)
--keepdevel
          Do not remove kernel-devel packages when removing kernels

2

使用yum upgrade代替yum update

然后它将仅保留三个内核。如果使用update,它将填满您的/boot


-1

根据

运行rpm -q kernel以显示已安装的内核

然后运行yum remove kernel <shown kernel from output above>以删除内核

重新启动电脑

编辑:这实际上适用于@Ron的问题,但请确保elrepo内核正确运行


如何避免删除当前内核?
杰夫·谢勒

我猜这是@JeffSchaller的特定于IDK的命令,以确保您没有删除当前内核,您先使用sud检查它,uname -r然后删除未使用的内核,但从该命令中显示出来
Surya Stefanus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.