在Ubuntu中删除旧内核的最安全方法

时间:2020-03-21 11:46:57  来源:igfitidea点击:

Ubuntu内核团队每月发布新的内核更新,错误修复和安全补丁。
如果我们是Ubuntu的长期用户,并定期更新Ubuntu系统,那么它可能会堆积有许多未使用和旧的内核。
因此,硬盘中的/boot分区有可能在一段时间内用完磁盘空间。
如果/boot分区已满,则无法升级系统,甚至无法将内核升级到任何最新的可用版本。
这不好,定期更新内核和软件非常重要。
为此,我们应该在/boot分区中有足够的可用空间。
这就是为什么始终要定期删除未使用的内核,不必要的软件包,依赖项和系统缓存的原因。
请记住,为了使Ubuntu系统正常运行,必须在/boot和/root分区中具有足够的可用空间。

当然,我们可以使用以下命令轻松清除系统缓存,不需要的程序包和依赖项:

$sudo apt-get autoremove
$sudo apt-get autoclean

但是问题是,仅当我们自动安装了内核或者使用软件更新程序安装了内核时,此方法才有效。
这些命令不会删除手动安装的内核。
但是,我们可以使用某些第三方实用程序(例如Ubuntu Tweak)删除不再需要的过时的内核,软件包和依赖项。
但是Ubuntu Tweak是一个GUI实用程序,因此我们不能使用没有图形模式的服务器。

不用担心,还有另一个名为“ purge-old-kernels”的实用程序,可以从Ubuntu系统中安全删除旧内核。
该实用程序由Ubuntu产品和策略团队的Dustin Kirkland创建。
它将安全地从Ubuntu桌面和服务器上删除不再需要的旧内核和头文件包。

使用purge-old-kernels实用工具删除Ubuntu中的旧内核

默认情况下,purge-old-kernels实用程序预装了Ubuntu 16.04 LTS和更高版本。
在旧版本中,必须安装“ byobu”或者“ bikeshed”才能使用此实用程序。

$sudo apt-get install bikeshed

或者

$sudo apt-get install byobu

要安全地删除旧内核,只需运行:

$sudo purge-old-kernels

输出示例:

Reading package lists... Done
Building dependency tree 
Reading state information... Done
The following package was automatically installed and is no longer required:
 linux-headers-4.4.0-21
Use 'sudo apt autoremove' to remove it.
The following packages will be REMOVED:
 linux-headers-4.4.0-21-generic* linux-image-4.4.0-21-generic*
 linux-image-extra-4.4.0-21-generic*
0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
After this operation, 224 MB disk space will be freed.
Do you want to continue? [Y/n]

从上面的输出中可以看到,旧的内核在我的Ubuntu 16.04服务器中已占用224 MB。
按“ Y”清除未使用的内核以释放一些空间。

如果系统中没有旧内核,此实用程序将显示以下消息。

No kernels are eligible for removal

显然,它将永远不会删除当前正在运行的内核。
默认情况下,它将保留至少两个最新内核,但是用户可以使用--keep参数覆盖该值。

例如,要除去除3个最新内核以外的所有旧内核,请运行:

$sudo purge-old-kernels --keep 3 -qy

有关更多详细信息,请参见手册页。

$man purge-old-kernels

重要提示:强烈建议保留至少两个内核(当前内核和一个旧内核)。
如果我们遇到任何问题,例如当前内核的硬件或者软件兼容性问题,则可以立即切换回旧内核。
这样,我们仍然有机会解决当前内核可能存在的问题。
因此,请勿删除所有旧内核。
最好至少拥有一个旧内核来进行任何紧急备份。