指定并发安装的内核数量
我们可以指定一次允许安装多少个 Linux 内核。
默认情况下,可以同时安装的 Linux 内核数量为 5.
如果我们已经安装了 5 个不同版本的 Linux 内核,并且我们执行“yum 更新”并安装更新的内核,则最旧的内核将被卸载为最新的腾出空间。
这是在 /etc/yum.conf 文件中完成的,如下所示。
installonly_limit=6
在这个特定的例子中,它被设置为 6,因为在手动删除最旧的内核之前,我们一次安装了 6 个内核。
我们可以将此文件编辑为其他内容,例如 3,它不会自动删除最旧的内核,直到有更新的内核可供更新并安装。
此时 yum 将检查内核的安装限制并首先删除最旧的。
我们可以选择使用“package-cleanup”并删除指定数量的旧内核,如下所示。
package-cleanup --oldkernels --assumeyes --count=3
运行此命令后,yum 将首先卸载最旧的内核,并仅保留最近安装的 3 个内核。
如果包清理不可用,我们可以先安装提供它的“yum-utils”包。
手动删除旧内核
要删除旧内核,我们首先需要查看当前安装的内核版本列表。
这可以使用“yum list installed”命令来完成,如下所示。
[jack@onitroad ~]# yum list installed | grep kernel kernel.x86_64 3.10.0-229.el7 @anaconda kernel.x86_64 3.10.0-229.7.2.el7 @updates kernel.x86_64 3.10.0-229.11.1.el7 @updates kernel.x86_64 3.10.0-229.14.1.el7 @updates kernel.x86_64 3.10.0-229.20.1.el7 @updates kernel.x86_64 3.10.0-327.3.1.el7 @updates
在这个例子中,我们当前安装了 6 个不同版本的 Linux 内核。
其中每个文件都存储在 /boot 中。
在这种情况下,包 'kernel-3.10.0-229.el7.x86_64' 是安装的最旧版本,因此我们可以手动删除它,如下所示。
[jack@onitroad ~]# yum remove kernel-3.10.0-229.el7.x86_64 Loaded plugins: fastestmirror, langpacks Resolving Dependencies --> Running transaction check ---> Package kernel.x86_64 0:3.10.0-229.el7 will be erased --> Finished Dependency Resolution Dependencies Resolved ============================================================================================================================================================================================================================================= Package Arch Version Repository Size ============================================================================================================================================================================================================================================= Removing: kernel x86_64 3.10.0-229.el7 @anaconda 131 M Transaction Summary ============================================================================================================================================================================================================================================= Remove 1 Package Installed size: 131 M Is this ok [y/N]: y Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Erasing : kernel-3.10.0-229.el7.x86_64 1/1 warning: file /lib/modules/3.10.0-229.el7.x86_64/modules.softdep: remove failed: No such file or directory warning: file /lib/modules/3.10.0-229.el7.x86_64/modules.devname: remove failed: No such file or directory Verifying : kernel-3.10.0-229.el7.x86_64 1/1 Removed: kernel.x86_64 0:3.10.0-229.el7 Complete!
首先删除最旧的内核通常是最好的方法,我们不想尝试卸载正在运行的内核的当前版本。
我们可以使用“uname -r”命令查看当前内核版本,如下所示。
[jack@onitroad ~]# uname -r 3.10.0-229.14.1.el7.x86_64
我们仍然安装了 5 个不同版本的 Linux 内核,这已经足够了,通常至少安装 3 个就好了。
删除此版本的 Linux 内核后,我们释放了 500mb /boot 分区的 10%。
默认情况下,Linux 中 /boot 分区的大小并不大,512mb 左右是非常典型的默认值。
此空间用于存储我们同时安装的不同版本的 Linux 内核。
如果此空间已满,我们将来可能无法执行内核升级,因此不要让它填满并释放 /boot 中的空间很重要。
为什么有多个内核?
默认情况下会同时安装多个版本的 Linux 内核,以便我们在出现任何问题时可以回滚到以前的版本。
例如,过去我的一个测试服务器在通过 yum 升级内核的过程中意外断电,在尝试重新启动它时,它会导致内核崩溃并无法启动。
我必须使用 live CD、安装磁盘并修改引导配置以使用安装的先前版本的内核之一才能正确引导,然后再次正确应用更新。
内核是少数几个在应用更新时不会覆盖现有版本的软件包之一,而是单独再次安装整个内核,主要是因为允许我们在需要时执行回滚。