如何在自动删除4个Linux内核之前将它们默认保留在/ boot中


12

我进行了一些挖掘,发现内核的自动清理已开始,/etc/kernel/postinst.d/apt-auto-removal并且文件状态为:

# In the common case this results in two kernels saved (booted into the
# second-latest kernel, we install the latest kernel in an upgrade), but
# can save up to four. Kernel refers here to a distinct release, which can
# potentially be installed in multiple flavours counting as one kernel.

但是该脚本超出了我的理解范围,我无法轻易找到如何自动清理除最后四个内核以外的任何东西。


您必须在多个位置修改脚本,没有其他方法。如果愿意,可以在apt软件包上提交“愿望清单”错误报告,以允许自定义内核数量。
fkraiem

2
您引用的部分中的“四个”是指不寻常的情况,其中“当前引导的版本”,“我们被称为的内核版本”,“最新的内核版本”和“第二最新的内核版本”都是不同的,因为所有这些版本都保留下来。然而,在典型情况下,这可以归结为两个,因为“当前引导的版本”和“第二最新的内核版本”是相同的,并且对于其他两个版本也是相同的。
fkraiem

Answers:


12

当说“最多四个”时,它的意思是当前正在运行,当前安装,最新和以前的版本都可以不同,从而自动保留了四个版本(最少两个)。参见代码的这一部分:

debkernels="$(echo "$latest_version
$installed_version
$running_version
$previous_version" | sort -u | sed -e '/^$/ d')"

我认为保存旧内核的最简单方法是将扩展$previous_version到列表。代替:

previous_version="$(echo "$debverlist" | sed -n 2p)"

做:

previous_version="$(echo "$debverlist" | sed -n 2,4p)"

是的,看起来应该可以。应该注意的是,由于该文件是apt软件包的一部分,因此在apt升级时可以将其还原为默认文件。
fkraiem

该文件位于@fkraiem中/etc,因此它大概是一个conffile,应保留更改(或者至少会询问用户有关更改)
muru

1
是的,下面的所有文件/etc都是conffiles,但是当“保留还是替换?”时,用户似乎常常感到困惑。问题弹出...
fkraiem

1
我不会感到困惑... @fkraiem
Fabby

apt仍然抱怨:The following packages were automatically installed and are no longer required: linux-headers-4.10.0-38 linux-headers-4.10.0-38-generic linux-image-4.10.0-38-generic linux-image-extra-4.10.0-38-generic linux-signed-image-4.10.0-38-generic Use 'sudo apt autoremove' to remove them. 但这是一个可执行文件,我将不再担心它,并改正了问题以适合答案。 :-)
Fabby
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.