关于为什么要这样做,可以参考文件
/etc/apt/apt.conf.d/01autoremove-kernels
。
![enter image description here](https://istack.dev59.com/wtGeq.webp)
正如你所看到的,apt被告知永远不要自动删除内核,这是由另一个(脚本)文件
/etc/kernel/postinst.d/apt-auto-removal
告知的。就是这样。
![enter image description here](https://istack.dev59.com/6iW24.webp)
如果您手动安装了两个选择的内核,即第一个和当前的内核,那么apt-autoremove只会删除您没有手动安装的旧版本,因此您始终会有这两个选项以及最新版本。
更新:
在/etc/kernel/postinst.d/apt-auto-removal中有以下部分:
if [ "$latest_version" != "$installed_version" ] \
|| [ "$latest_version" != "$running_version" ] \
|| [ "$installed_version" != "$running_version" ]
then
# We have at least two kernels that we have reason to think the
# user wants, so don't save the second-newest version.
previous_version=
fi
所以,如果你比较一下
01autoremove-kernels
文件和
uname -r
的输出,你会意识到当前正在运行的内核和它之前的最新内核都被保留,不会被该脚本删除。事实上,还有另一个文件
/etc/apt/apt.conf.d/01autoremove
,其中有以下几行内容:
APT
{
NeverAutoRemove
{
"^firmware-linux.*";
"^linux-firmware$";
};
VersionedKernelPackages
{
# linux kernels
"linux-image";
"linux-headers";
"linux-image-extra";
"linux-signed-image";
# kfreebsd kernels
"kfreebsd-image";
"kfreebsd-headers";
# hurd kernels
"gnumach-image";
# (out-of-tree) modules
".*-modules";
".*-kernel";
"linux-backports-modules-.*";
# tools
"linux-tools";
};
所以你可以将这些注释掉,这样就可以使用
apt-autoremove
自动删除内核,不过请记住 - 这是自担风险的操作。