Fedora

如何在 2022 年從 Fedora 中執行/安裝的核心手動重新生成救援核心?

  • September 23, 2022

在網際網路上我只發現了這個:

/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。

救援核心使用通用的 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)"

引用自:https://unix.stackexchange.com/questions/718388