当前位置: 首页>>技术教程>>正文


为什么Ubuntu不会自动删除旧的内核?

,

问题描述

我想知道为什么Ubuntu不会自动删除旧的内核。

当然,没有什么是完美的,事情可能会出错,所以如果更新不起作用,备份内核可能很好。但只保留最新的内核和最新的内核并删除所有较旧的内核就足够了。

有没有原因,为什么Ubuntu不会自动做到这一点?

最佳解决办法

Is there a reason why Ubuntu wont do this automatically?

我只能看到1个理由:它不能完美地工作;目前还没有干净的方式来决定”old kernels”的定义是什么。 “old”并不意味着”unused”,也不意味着”unwanted”。任何错误都会杀死用户的机器。

所以到目前为止,手动方法是优选的,因为这将消除的力量带入用户的手中。


这个结论的资源:

Ubuntu WIKI: Proposal for removing old kernels

Last-good-boot is implemented fully in Intrepid/8.10 final, however it has been disabled because it was not considered stable enough. The setting is a single line in the file /etc/default/kernel-helper-rc.


Launchpad: Should aptitude provide a way to remove old kernel versions ?

apt-get has an autoremove feature that uninstalls all packages that are not needed as dependencies and have not been installed manually. Since Ubuntu 14.04 all obsolete kernels and headers should automatically be flagged as no more needed, and thus can be purged with the apt-get autoremove command. (There are reports that this does not yet fully work). I am not aware of a feature in aptitude that is similar to apt-get’s autoremove.


Ubuntu-devel: Distro-provided mechanism to clean up old kernels

While agreeing that it would be quite helpful and seems appropriate to have the cleanup automatic, there is a slight potential pitfall (or two). There are various flavours of kernels and people may or may not deliberately have those installed in parallel. Also various releases had sometimes a changing set of depending packages. For a while this should be only linux-backports-modules (there had been linux-ubuntu-modules and linux-restricted-modules). Though this is not so much of a problem. From a pattern matching point of view the generic-pae kernels are a bit of a pain as they tend to ruin the “use the last part of a split by “-” for the flavor”. But anyway, I think the main issue is the various flavours, so a cleanup that is automatic should retain the last three of each, even though this may tend to leave more kernels around.

次佳解决办法

这里有两件事情:

  1. 新的内核是全新的软件包,而不是更新版本号的软件包,所以安装新的内核映像并不能取代任何旧的软件包。它们并存。

  2. Ubuntu使用了一堆apt魔法来保护’apt-get autoremove'(最新的一个,以及最后一次引导的)的最后两个内核版本。有关详细信息,请参阅/etc/apt/apt.conf.d/01autoremove-kernels。

这一切意味着,一旦你重新启动到最新的内核,’apt-get autoremove’应该删除当前和最后启动的所有内核包。

旧内核仍然会在/boot中累积,因为默认情况下,Ubuntu中未启用autoremove – 您必须每隔一段时间手动运行它,或者必须启用它。

这可能会在16.04更改 – bugfix to the unattended-upgrades package将默认启用旧内核的自动移除。

第三种解决办法

这个脚本将完成这项工作。它将删除所有未使用的内核。

sudo dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

除此之外,不删除内核必须​​是一个相当新的东西。由于旧的内核垃圾,我有一个Ubuntu 14系统在另一个运行到完整引导分区的问题之后。

它可以使经验较少的用户的生活变得非常复杂。它实际上是一个noob陷阱。 Canonical应该解决这个问题。

第四种办法

simple-minded删除旧内核的方法是使用ubuntu-tweak。您选择Janitor标记并勾选Old Kernel框。这给你一个它认为你不再需要的内核列表。您可以全部选中它们,然后单击“清理”,过了一段时间,工作就完成了。作为一个紧张的性格,我检查了我正在使用uname运行的内核-a,但它没有列在名单上。这工作在我妻子的笔记本电脑(它有一个相当小的启动分区,并显示警告)和我的(这是工作正常)。大家都同意这是安全的吗?

第五种办法

只有Ubuntu的auto-removes项目不再需要或者存在安全风险……所以我认为这是安全目的的原因。让我们说出于某种奇怪的原因,一个新的内核变得不安全……然后,当新的内核被修复时,你将被重新路由回旧的内核。同样,新的内核可能会有更改,因此有些内核是opt-in,例如将14.04.1更新为14.04.2,对于新内核,可以使用opt-in,但是今年4月,当新的LTS 15.04版本发布时,您将自动获得内核更新。所以我认为它出于安全目的。

但如果你想删除它,请尝试运行此命令行

sudo apt-get autoremove

这应该删除任何不需要的软件,如旧的内核,如果不尝试

sudo apt-get remove (kernels-name)

第六种办法

我推荐使用Ubuntu Tweak删除旧的内核。看这里:

How do I remove old kernel versions to clean up the boot menu?

第七种办法

我认为如果你编辑/etc/apt/apt.conf.d/50unattended-upgrades文件,Ubuntu 15.10的最新版本可以自动移除旧的内核:Change line

//Unattended-Upgrade::Remove-Unused-Dependencies “false”;

Unattended-Upgrade::Remove-Unused-Dependencies “true”;

虽然我没有测试过这个。

第八种办法

我遇到了无法安装软件的问题。 Apt-get无法安装linux-headers,报告磁盘已满。 $ df -i报告IUse%为100%:磁盘有空闲空间但已用完inode。 $ sudo dpkg --configure -a失败,& $ sudo apt-get -f install$ sudo apt-get autoremove也是如此

当我从/usr /src手动删除几个较旧的内核文件夹时,问题就解决了 – 只是$ rm或shift-delete文件夹。这释放了足够的inode空间以允许$ apt-get -f install完成。

之后,我只有10个Linux内核。我跑了删除1.4 GB文件的$ sudo apt-get autoremove。这引出了问题:真的吗?真??但说实话,这是运行用户友好系统的正确方法吗?

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/702.html,未经允许,请勿转载。