dracut 警告:无法处理 initqueue

dracut 警告:无法处理 initqueue

我在 Mageia2 x86_64 上,内核是 3.3.8-desktop-2.mga2。内核启动正常。

我的笔记本电脑比较旧,所以我需要旧内核以获得更好的兼容性和功能。问题是从 Mageia1 升级到 Mageia2 后,Mageia1 的旧内核 2.6.38.7-desktop-1.mga 无法启动。

我尝试将 grub“root”参数从 root=UUID...(我已使用 blkid 验证 uuid 是正确的)更改为 root=/dev/sda1,但错误是一样的:

udevd[186]: could not find module by name='8139too'

dracut Warning: Unable to process initqueue  
dracut Warning: /dev/... does not exist

进入调试 shell

当我使用 uuid 时,“...” 表示 sda1 或 disk/by-label。使用调试 shell 我发现在 /dev 目录中没有 /dev/sdaX 设备,也没有 /dev/sr0 或 /dev/disk 目录,似乎物理设备在启动时未加载。

我还尝试通过以下命令重新创建 initrd:

dracut -l -f --hostonly /boot/initrd-2.6.38.7-desktop-1.mga.img 2.6.38.7-desktop-1.mga

输出如下:

I: *** Including module: dash ***
I: *** Including module: i18n ***
E: i18n_vars not set!  Please set up i18n_vars in  configuration file.
E: No KEYMAP.
I: *** Including module: rpmversion ***
I: *** Including module: plymouth ***
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
I: *** Including module: kernel-modules ***
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: modprobe: tools/kmod-modprobe.c:550: print_action: Assertion `kmod_module_get_initstate(m) == KMOD_MODULE_BUILTIN' failed.
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319
I: *** Including module: resume ***
I: *** Including module: rootfs-block ***
I: *** Including module: terminfo ***
I: *** Including module: udev-rules ***
I: Skipping udev rule: 50-udev.rules
I: Skipping udev rule: 95-late.rules
I: Skipping udev rule: 50-firmware.rules
I: *** Including module: usrmount ***
I: *** Including module: base ***
I: *** Including module: fs-lib ***
I: *** Including module: shutdown ***
I: Skipping program kexec as it cannot be found and is flagged to be optional
I: *** Including modules done ***
I: Wrote /boot/initrd-2.6.38.7-desktop-1.mga.img:
I: -rw------- 1 root root 6473315 Dec 24 17:57 /boot/initrd-2.6.38.7-desktop-1.mga.img

但在启动时只有与型号 8139 相关的错误消失了。

有人能帮助我吗?谢谢

答案1

该问题与上面帖子中显示的 libkmod 错误中报告的错误有关。

E: libkmod: index_mm_open: major version check fail: 65537 instead of 2953311319

我不知道为什么,但文件夹 /lib/modules/2.6.38.7-desktop-1.mga 中提供的并附加到 initrd 的模块未正确加载。事实上,使用 dracut boot 我可以看到很多未知符号错误,例如当加载用于访问磁盘和相关 rootfs 的模块 pata_atiixp 时。所以这就是为什么 rootfs 在启动时没有挂载的原因。

我尝试使用旧的 mkinitrd 创建没有 dracut 的 initrd,这是 Mageia2 中官方采用的。我首先尝试使用mkinitrd-mkinitrd在 Mageia2 中命令,然后使用初始化来自 Mageia1 的安装。两个 ramdisk 都是用模块 pata_atiixp、ext4、ehci-hcd、ohci-hcd 和其他启动所需的模块构建的。

结果是,这两个 initrd 的内核启动相同,但当到达 kdm 登录屏幕时,我无法使用键盘和鼠标/触摸板或连接到 USB 端口的每个 hid。为了解决这个问题,我编辑了 xorg.conf 文件,并添加了以下行:

Option "AutoAddDevices" "False"

并手动添加了两个输入部分一个用于键盘,一个用于 synaptics 触摸板。重启后,只有键盘启用,至少我能够登录并发现无线模块、声卡模块和许多其他模块未加载。尝试手动加载此模块会出现上述 libkmod 错误。未加载的键盘模块和鼠标模块可能也会出现同样的情况,这就是为什么我无法在没有 xorg.conf 解决方法的情况下使用它们的原因。

但是我还发现,在 Mageia1 中,挂起和休眠功能在旧内核中不再起作用。我开始这场斗争是因为我认为在旧内核中,此功能可能会恢复,但结果并非如此。Mageia2 的新库用于电源管理,尤其是e2rame2磁盘似乎与我的硬件不兼容,无论内核是 2.6.38 还是 3.3.8,现在出现了另一个问题:

为什么我无法使用旧内核暂停或休眠我的笔记本电脑?

libkmod 错误是什么意思?

也许这与模块的“版本魔法”有关?但这很奇怪,因为它是从官方存储库中获取的预编译内核,在 Mageia1 中使用没有问题。

相关内容