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