Cod*_*Med 19 kernel centos linux-kernel
我可能会遇到由于 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
Run Code Online (Sandbox Code Playgroud)
其余命令确认有两个内核,并说明了删除旧内核的尝试。
[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]#
Run Code Online (Sandbox Code Playgroud)
我还打开/etc/yum.conf并设置了installonly_limit=1,但这导致后续yum update命令出错,说明 1 超出了 的可接受值范围installonly_limit。
我认为这3.10.0-229.14.1.el7.x86_64是最新的,但我怎么知道呢?此外,引导选项似乎提供了多个内核可供选择。当系统从选项列表中的第一个内核自动引导时,混淆的机会会变得更糟。
有人可以解释一下这是如何工作的,特别是如何安全地删除旧内核,以便可以消除内核版本作为奇怪症状的可能原因吗? 我想确保最新的内核是唯一可以运行的内核,无论系统如何重新启动。
小智 28
package-cleanup --oldkernels --count=1 删除除最新内核之外的所有内核。
Fra*_*iat 11
RHEL 8+ 使用新的包管理器(DNF / yum 4,请参阅yum2dnf),它推荐:
dnf remove $(dnf repoquery --installonly --latest-limit=-2)
Run Code Online (Sandbox Code Playgroud)
还yum remove --oldinstallonly可以删除旧的 installonly 软件包,而不仅仅是内核 (?)。
(此命令需要 dnf>= 4.2.17-4 错误 #1774670)
该命令package-cleanup用于删除 yum <4 的旧内核。用于--count=1仅保留最新的。该程序永远不会删除当前使用的内核(“不删除内核 3.10.0-327.el7,因为它是正在运行的内核”),因此您可能会在 /boot 中得到两个内核...直到您重新启动并重新启动- 运行命令。
所以命令是
package-cleanup --oldkernels --count=1
Run Code Online (Sandbox Code Playgroud)
联机帮助页文档三个选项:
--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
Run Code Online (Sandbox Code Playgroud)
对于 Centos 8 及以上版本(Yum 版本 4),您可以使用以下命令
yum remove --oldinstallonly
Run Code Online (Sandbox Code Playgroud)
这将删除所有旧版本的内核。当您只想拥有最新发行版本的内核时使用。
| 归档时间: |
|
| 查看次数: |
53644 次 |
| 最近记录: |