如何在通过 SLES15 救援启动映像建立的 chroot 环境中使用 dracut?

如何在通过 SLES15 救援启动映像建立的 chroot 环境中使用 dracut?

为了修复无法启动的 SLES15 系统,我启动了救援映像,将现有系统挂载到/mnt,然后执行了以下操作chroot /mnt(我省略了详细信息,因为这些内容可能已知(或在如何为 OpenSUSE Leap 创建 chroot 环境?))。

当尝试使用重建 initrd 时,dracut存在救援系统中使用的内核与环境中找到的内核不匹配的问题chroot

例如输出是:

dracut: cannot find module directory /lib/modules/5.3.18.57-default

5.3.18.57-default是来自救援系统的内核;无法启动的内核是5.3.18-150300.59.46-default例如)

我不确定正确的语法是什么;我是否必须指定 initrd 和内核的完整路径,如果是的话,还要指定“vmlinuz”变体或“vmlinux.gz”变体?

答案1

如果只是重新创建 initrd,首先要找到已安装的内核,使用

rpm -qa kernel-default

例如输出可能是:

kernel-default-5.3.18-150300.59.43.1.x86_64
kernel-default-5.3.18-150300.59.46.1.x86_64

另外,您可能希望列出/lib/modules内核版本。结果可能是:

> ls -1 /lib/modules/
5.3.18-150300.59.43-default
5.3.18-150300.59.46-default
5.3.18-lp152.72-default

然后运行该命令,第一个参数为空,第二个参数为内核版本,如下所示(注意与 RPM 输出相比的变化):

dracut '' 5.3.18-150300.59.46-default

相关内容