我需要重新生成 initrd。执行以下操作:
update-initramfs -u -k all
抛出了我之前编译并删除的内核错误(因为当然update-initramfs
找不到我删除的目录)。/lib/modules
我以为我已经通过删除运行中的目录/boot
和所有条目彻底删除了内核(例如/lib/modules
sudo 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-base
。linux-version list
列出该 Linux 系统上当前安装的内核。
linux-version
/boot/vmlinu[xz]-*
是一个 perl 脚本。正如我所见,它只是通过执行模式匹配(在 perl 源文件中)来获取已安装内核的列表/usr/share/perl5/DebianLinux.pm
。