update-initramfs 在哪里寻找内核版本?

update-initramfs 在哪里寻找内核版本?

我需要重新生成 initrd。执行以下操作:

update-initramfs -u -k all

抛出了我之前编译并删除的内核错误(因为当然update-initramfs找不到我删除的目录)。/lib/modules

我以为我已经通过删除运行中的目录/boot和所有条目彻底删除了内核(例如/lib/modulessudo update-grub这个答案),但显然某个地方还残留着它的痕迹,我应该清理一下。

我读并深入挖掘,/usr/share/initramfs-tools但我没能弄明白。

man update-initramfs我看到的是:

版本字符串中使用“all”指定 update-initramfs 针对 update-initramfs 已知的所有内核版本执行所选操作。

但是它如何知道这些呢?在哪里update-initramfs查找内核版本?

注意:几个月后...我将这个问题的答案添加到标签wiki中

答案1

/boot我遇到了和你同样的问题,我也以为我已经通过删除和更新 GRUB 中的所有条目和目录来完全删除了内核/lib/modules,但是我发现了一个用于update-initramfs跟踪内核的目录:

/var/lib/initramfs-tools

答案2

几年前,接受的答案是正确的。如今,不再有/var/lib/initramfs-tools文件了。

相反,update-initramfs调用命令linux-version,它是包的一部分linux-baselinux-version list列出该 Linux 系统上当前安装的内核。

linux-version/boot/vmlinu[xz]-*是一个 perl 脚本。正如我所见,它只是通过执行模式匹配(在 perl 源文件中)来获取已安装内核的列表/usr/share/perl5/DebianLinux.pm

相关内容