我想知道为什么 Ubuntu 不会自动删除旧内核。
当然没有什么是完美的,事情可能会出错,所以如果更新不起作用,拥有一个备份内核可能会很棒。但是,只保留最新内核和最新内核之前的内核并删除所有旧内核也足够了。
Ubuntu 不会自动执行此操作有什么原因吗?
Rin*_*ind 44
Ubuntu 不会自动执行此操作有什么原因吗?
我只能看到一个原因:它不能完美地工作;目前没有明确的方法来确定“旧内核”的定义是什么。“旧”并不意味着“未使用”,也不意味着“不需要”。任何错误都会杀死用户的机器。
所以到目前为止,手动方法是首选,因为这将移除的权力交到了用户的手中。
此结论的资源:
Ubuntu WIKI:删除旧内核的建议
Last-good-boot 在 Intrepid/8.10 final 中完全实现,但是它已被禁用,因为它被认为不够稳定。该设置是文件 /etc/default/kernel-helper-rc.conf 中的一行。
Launchpad:aptitude 是否应该提供删除旧内核版本的方法?
apt-get具有自动删除功能,可卸载所有不需要作为依赖项且未手动安装的软件包。从 Ubuntu 14.04 开始,所有过时的内核和头文件都应该自动标记为不再需要,因此可以使用 apt-get autoremove 命令清除。(有报道称这还没有完全奏效)。我不知道 aptitude 中有一个类似于 apt-get 的 autoremove 的功能。
Ubuntu-devel:发行版提供的清理旧内核的机制
虽然同意自动清理会很有帮助并且似乎很合适,但存在一个轻微的潜在陷阱(或两个)。内核有很多种,人们可能有意也可能无意并行安装这些内核。此外,各种版本有时会有一组不断变化的依赖包。有一段时间这应该只是 linux-backports-modules(曾经有 linux-ubuntu-modules 和 linux-restricted-modules)。虽然这不是什么大问题。从模式匹配的角度来看,generic-pae 内核有点麻烦,因为它们往往会破坏“使用“-”分割的最后一部分来获得风味”。但无论如何,我认为主要问题是各种口味,所以自动清理应该保留每个的最后三个,即使这可能会留下更多的内核。
小智 22
这里发生了两件事:
新内核是全新的软件包,而不是具有较新版本号的更新软件包,因此安装新内核映像不会替换任何旧内核映像。它们共存。
Ubuntu 使用了一堆 apt 魔法来保护最后两个内核版本免受 'apt-get autoremove'(最新的和上次启动的)的影响。有关详细信息,请参阅 /etc/apt/apt.conf.d/01autoremove-kernels。
这一切意味着一旦您重新启动到最新的内核,'apt-get autoremove' 应该删除除当前和上次启动的内核包之外的所有内容。
旧内核仍然在 /boot 中堆积,因为默认情况下在 Ubuntu 中没有启用 autoremove - 您必须经常手动运行它,或者必须启用它。
这可能会在 16.04 中更改 -无人值守升级包的错误修复将默认启用旧内核的自动删除。
小智 20
这个脚本将完成这项工作。它将删除所有未使用的内核。
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
Run Code Online (Sandbox Code Playgroud)
除此之外,不删除内核一定是一件相当新鲜的事情。由于旧的内核垃圾,我有一个 Ubuntu 14 系统一个接一个地运行到这个完整启动分区的问题。
它会使经验不足的用户的生活变得极其复杂。这实际上是一个菜鸟陷阱。规范应该解决这个问题。
| 归档时间: |
|
| 查看次数: |
57080 次 |
| 最近记录: |