一个内核“放弃等待根设备”,但另一个内核则不然

一个内核“放弃等待根设备”,但另一个内核则不然

我有一个安装了内核 3.10.17 和 4.8.4 的 Linux 系统,但只有旧内核可以启动。尝试较新的版本时,会出现“放弃等待根设备”以及一堆“modprobe:无法加载模块”的情况。

由于根设备实际上包含模块,因此我倾向于认为前者导致了后者。两个 GRUB Legacy menu.lst 条目是相同的,并且 blkid 和 /dev/disk-by-uuid/ 确认它们包含正确的 UUID。添加 rootdelay 没有帮助(并且无论如何也不需要旧内核启动)。

错误文本中提到的另一个常见问题是缺少模块。 usb-common.ko 的位置在这两个内核之间确实发生了变化;但 modinfo 同意给定路径中的 usb-common 模块适用于内核 4.8.4。另外,如果磁盘丢失,如何评估模块格式?

是什么阻止系统启动内核 4.8.4?

Booting the kernel.
Loading, please wait...
modprobe: Can't load module usb_common (kernel/drivers/usb/common/usb-common.ko): invalid module format
Gave up waiting for root device.  Common problems:
- Boot args (cat /proc/cmdline)
 - Check rootdelay= (did the system wait long enough?)
 - Check root= (did the system wait for the right device?)
- Missing modules (cat /proc/modules; ls /dev)
ALERT! /dev/disk/by-uuid/f0b6aabc-433a-46b6-9e03-1aba89384d48 does not exist. Dropping to a shell!
modprobe: Can't load module usb_common (kernel/drivers/usb/common/usb-common.ko): invalid module format
modprobe: module ehci-orion not found in modules.dep
modprobe: Can't load module usb_common (kernel/drivers/usb/common/usb-common.ko): invalid module format
...

答案1

我升级了GRUB,再次编译了内核,重建了initramfs,它可以工作了。我不知道问题是什么,但新内核解决了这个问题。

相关内容