2022 年如何从 Fedora 中正在运行/安装的内核手动重新生成救援内核?

2022 年如何从 Fedora 中正在运行/安装的内核手动重新生成救援内核?

在互联网上我只找到了这个:

/etc/kernel/postinst.d/51-dracut-rescue-postinst.sh $(uname -r) /boot/vmlinuz-$(uname -r)

但它在Fedora 36和即将发布的37版本中不起作用,因为这个文件丢失了,实际上整个/etc/kernel/postinst.d/目录都是空的。

我也发现了

dnf reinstall kernel-core

但它仅适用于最新的内核。我正在运行的内核在存储库中不再可用。此外,这本身并不是一个好的选择,因为它会导致无缘无故地重新安装数百个文件。

grep -r rescue /etc什么也没找到。

# grep -r rescue /usr/bin
grep: /usr/bin/tdbdump: binary file matches
grep: /usr/bin/ctags: binary file matches
grep: /usr/bin/systemctl: binary file matches
grep: /usr/bin/systemd-analyze: binary file matches
grep: /usr/bin/efisecdb: binary file matches
grep: /usr/bin/dpkg: binary file matches
grep: /usr/bin/grub2-mkrescue: binary file matches

/usr/share包含大量匹配项,但我不知道如何使用它。

kernel-core软件包kernel-modules中的 RPM 脚本可以执行某些操作,但没有任何特定于“救援”的内容。看起来这一切都是作为一个操作完成的,但我不想重新生成 initrd。

答案1

救援内核使用通用 initramfs,因此您必须重新生成它。 (比较 initramfses 的大小以查看其影响。)

要使用当前运行的内核创建新的救援内核,请在 Fedora 36 上运行

sudo rm /boot/*rescue*
sudo /usr/lib/kernel/install.d/51-dracut-rescue.install add "$(uname -r)" /boot "/boot/vmlinuz-$(uname -r)"

相关内容