为什么旧的内核映像不会自动删除以释放 Debian 上引导分区上所需的空间?

为什么旧的内核映像不会自动删除以释放 Debian 上引导分区上所需的空间?

我确实unattended-upgrades安装了(2.8)并且该进程正在运行。

然而,在尝试安装升级时,我经常遇到此错误:

Processing triggers for initramfs-tools (0.140) ...
update-initramfs: Generating /boot/initrd.img-5.10.0-18-amd64
pigz: abort: write error on <stdout> (No space left on device)
E: mkinitramfs failure pigz 28
update-initramfs: failed for /boot/initrd.img-5.10.0-18-amd64 with 1.
dpkg: error processing package initramfs-tools (--configure):
installed initramfs-tools package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
initramfs-tools 

这可以通过使用命令手动删除旧内核映像来解决这里

删除内核映像不起作用(发生过一次)时的一些背景和解决方案是这里Debian 的完全过时的 90 年代风格的基于电子邮件的错误跟踪器中迄今为止不活跃的错误报告是这里

我正在使用 Debian 11 和 KDE。这种情况已经发生很长时间了,而且现在已经发生过很多次了。这是为什么(或如何找出)?

如果它们没有自动删除,我认为当升级由于缺少引导分区磁盘空间而失败时,至少应该删除旧的内核映像,也许可以使用上面的命令。

答案1

正如一些评论所指出的,决定您需要或不需要哪些内核映像不是 Debian 的工作。 Debian 正在采取正确的措施,在安装新版本时保留您的内核映像,这样如果新版本出现问题,您就可以启动到以前的版本。正如弗罗斯特舒茨在他的评论中指出的那样,Arch Linux 存在相反的问题,即在安装新内核映像时删除旧内核映像,根据我的经验,这是非常不受欢迎的行为,尽管通常它工作得很好,但并非总是如此,特别是当有一个新内核中的回归。

这种行为可能会有所不同,具体取决于您希望系统执行或不执行的操作,具体取决于您如何配置它、如何使用 apt 以及您使用什么方法来安装新内核,但我总是会选择保留我以前安装的内核,直到我确定新内核工作正常后明确删除它们,作为维护系统的一部分。

但是,我相信您可能在稳定的 Debian 上使用内核元包,这略有不同,我相信每次安装升级的内核时都会在 grub 启动列表中添加一个新项目(例如 initrd.img-4.15.0- 191 到 initrd.img-4.15.0-192)。因此,内核是仍然安装的软件包,直到您卸载它们为止。我可以肯定地说,Debian 希望系统管理员了解简单的事情,例如确保分区足够大以长期完成其工作,以及在分区大小成为问题时进行计划清理。

然而,从某种意义上说,这完全不是重点,每个新映像安装后可能会占用 150 MiB 左右的空间,所以这里的实际问题只是你的 / 太小了。或者,如果您使用单独的 /boot 分区,那它就太小了。取决于您的设置,您没有提供相关详细信息,但这是主要问题。

您通常可以用来apt autoremove删除不再使用的旧软件包,因此这对您来说可能是最简单的解决方案,只需在其中编写脚本以每天或每周运行或任何有意义的方式运行。

检查我的 /boot、initrd.img、System.map 和 vmlinux- 文件每组大约 22 MiB,远程服务器每组 3 个文件大约 55 MiB,这不是很大,这建议您/boot 实在是太小了,但这取决于 / 和 /boot 的外观,以及它是否是一个单独的分区。

如果您对环境没有任何控制,或者无法调整分区大小以使其长期更有用,那么apt autoremove在自动升级运行后,每晚运行可能是您的最佳选择。或者apt-get autoremove如果 Debian 较旧。

检查一些远程服务器,我注意到倾向于使用当前内核和 2 个以前的内核,但我不知道清理操作是什么,如果它是您可以使用 apt 进行的设置或配置,或者如果它是脚本化的每晚运行的解决方案。这绝对不是手动完成的。

我也同意弗罗斯特舒茨的观点,他指出,如果单独的分区建议很小的尺寸,那么调整 /boot 大小的在线说明在您经常拥有数 TB 的存储空间时毫无意义,但您没有列出系统的任何规格,因此这只是猜测。一般来说,当您发布问题时,您希望发布与您的问题相关的信息,否则人们必须猜测。

如果您计划长期运行系统,那么您需要至少 2 倍 / 的已用容量,3 到 4 倍更好,因为 / 内容总是随着时间的推移而变得更大。如果将 /boot 分开,那么只需计算每个内核将占用多少,假设每次迭代都会随着时间的推移而增大约 10%,那么您想要保持活动的内核数量,这将决定如何如果单独的话,你的 /boot 应该很大。为了安全起见,增加了开销。

另外,当然,您希望在每次更新后运行 apt-get clean,否则 /var/cache/apt 会被旧软件包填满。

相关内容