增加旧内核的数量以保持自动删除

Neo*_*eon 14 configuration apt boot kernel

看起来我的 Ubuntu 18.04 保留了一个旧的 Linux 内核/boot(所以我有 1 个旧内核和 1 个当前内核)。是否可以增加运行时要保留的旧内核的数量,sudo apt autoremove或者full-upgrade,例如,我想保留最后三个旧内核(因此我将有 3 个旧内核 + 1 个当前内核 = 4 个内核)?将内核和 initrd.img x 4 = 256MB 的磁盘空间四舍五入到 64MB,在/boot此之下我有足够的空闲空间,并希望保留一些旧内核以确保安全。

这可以在 CentOS 6 和 7 下通过编辑/etc/yum.conf和设置来完成installonly_limit=3(默认为 5)。

Rav*_*ina 14

遗憾的是没有这样的配置,我们应该编辑负责创建的脚本:/etc/apt/apt.conf.d/01autoremove-kernels.

所以我稍微研究了一下脚本,一些小的改动就足以得到你想要的。

首先创建一个备份/etc/kernel/postinst.d/apt-auto-removal::

sudo cp /etc/kernel/postinst.d/apt-auto-removal{,.bk}
Run Code Online (Sandbox Code Playgroud)

然后找到这一行:

previous_version="$(echo "$debverlist" | sed -n 2p)"
Run Code Online (Sandbox Code Playgroud)

并将其更改为:

previous_version="$(echo "$debverlist" | sed -n 2,4p)"
Run Code Online (Sandbox Code Playgroud)
  • 现在它应该保留 3 个旧内核 + 运行中 + 新安装的一个
  • 当然,您必须手动运行一次或安装新内核才能使其生效。

或者使用我的修改更改文件,以便您可以轻松更改要保留的内核数:

NKER=1
Run Code Online (Sandbox Code Playgroud)
sudo cp /etc/kernel/postinst.d/apt-auto-removal{,.bk}
Run Code Online (Sandbox Code Playgroud)