启动问题 - 长时间延迟,然后“放弃等待根设备”

启动问题 - 长时间延迟,然后“放弃等待根设备”

我已经断断续续遇到这个问题大约两年了。当 10.04 刚发布时,我在一台运行 10.04 的新机器(定制)上注意到了这个问题,但几个月前它就消失了。我更换过许多硬盘,但我说不出具体我做了哪些硬件上的改动来让它停止或开始发生。我以为升级到现代 Ubuntu 版本可以解决这个问题,所以我昨晚在备用分区上安装了 12.04 测试版,但问题仍然存在。

问题就在这里。在 grub 加载后,我选择了一个内核进行启动,屏幕一片空白,只剩下一个闪烁的光标。它保持这种状态好几分钟,最后才放弃,并给我一个带有消息的 initramfs shell gave up waiting for root device(并列出/dev/disk/by-uuid/...它正在等待的路径),但没有其他具体的诊断信息。

现在,这是棘手的部分。首先,问题是间歇性的 - 有时它会在几秒钟内从闪烁的光标发展到 Ubuntu 启动画面,一旦它到了那个程度,它总是会继续正常启动。真正奇怪的是,我可以通过反复按下空格键并按下机器的电源按钮来“强制”它“找到”根设备。如果我点击这些按钮足够多,最终我会注意到硬盘驱动器指示灯亮起,此时它会在几秒钟后继续启动过程。有趣的是,如果我等待的时间稍长一些才按下电源按钮(30 秒?),我一按下它就会收到放弃等待的消息和 initramfs shell。

我已尝试设置/etc/fstab(以及 grubmenu.lst或现在所称的任何名称)以使用设备名称(例如/dev/sda1)而不是 UUID,但在错误消息中,仅使用设备名称而不是 UUID 就会得到相同的效果。

我还应该提到,当我启动 Windows 7 时,没有任何问题。由于是 Windows,它启动总是很慢,但永远不会无限期挂起。这似乎表明这是 Ubuntu 的问题,而不是硬件的问题。

每次电脑启动时都要照看电脑,这真是太烦人了。有什么想法吗?我不知所措。甚至不知道如何诊断问题。谢谢!

编辑:

这是 10.04 的一些 dmesg 输出。15 秒的间隙是它什么也没做。我按了几次电源按钮和空格键,16 秒时发生了一些事情。不知道这是什么意思。

[    1.320250] scsi18 : ahci
[    1.320294] scsi19 : ahci
[    1.320320] ata19: SATA max UDMA/133 abar m8192@0xfd4fe000 port 0xfd4fe100 ir
q 18
[    1.320323] ata20: SATA max UDMA/133 abar m8192@0xfd4fe000 port 0xfd4fe180 ir
q 18
[    1.403886] usb 2-4: new high speed USB device using ehci_hcd and address 4
[    1.562558] usb 2-4: configuration #1 chosen from 1 choice
[   16.477824] ata16: SATA link down (SStatus 0 SControl 300)
[   16.477843] ata19: SATA link down (SStatus 0 SControl 300)
[   16.477857] ata3: SATA link down (SStatus 0 SControl 300)
[   16.477895] ata15: SATA link down (SStatus 0 SControl 300)
[   16.477906] ata20: SATA link down (SStatus 0 SControl 300)
[   16.477977] ata17: SATA link down (SStatus 0 SControl 300)
[   16.478003] ata12: SATA link down (SStatus 0 SControl 300)
[   16.478046] ata13: SATA link down (SStatus 0 SControl 300)
[   16.478063] ata14: SATA link down (SStatus 0 SControl 300)
[   16.478108] ata11: SATA link down (SStatus 0 SControl 300)
[   16.478123] ata18: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[   16.478127] ata6: SATA link down (SStatus 0 SControl 300)
[   16.478157] ata5: SATA link down (SStatus 0 SControl 300)
[   16.478193] ata18.00: ATAPI: MARVELL VIRTUALL, 1.09, max UDMA/66

之后,它就慢了下来,我不得不一直按空格键来让它继续运行。以下是启动过程稍后的一些 dmesg 输出:

[   17.982291] input: BTC USB Multimedia Keyboard as /devices/pci0000:00/0000:00
:13.0/usb5/5-2/5-2:1.0/input/input4
[   17.982335] generic-usb 0003:046E:5506.0002: input,hidraw1: USB HID v1.10 Key
board [BTC USB Multimedia Keyboard] on usb-0000:00:13.0-2/input0
[   18.005211] input: BTC USB Multimedia Keyboard as /devices/pci0000:00/0000:00
:13.0/usb5/5-2/5-2:1.1/input/input5
[   18.005274] generic-usb 0003:046E:5506.0003: input,hiddev96,hidraw2: USB HID 
v1.10 Device [BTC USB Multimedia Keyboard] on usb-0000:00:13.0-2/input1
[   22.484906] EXT4-fs (sda6): INFO: recovery required on readonly filesystem
[   22.484910] EXT4-fs (sda6): write access will be enabled during recovery
[   22.548542] EXT4-fs (sda6): recovery complete
[   22.549074] EXT4-fs (sda6): mounted filesystem with ordered data mode
[   32.516772] Adding 20482832k swap on /dev/sda5.  Priority:-1 extents:1 across:20482832k 
[   32.742540] udev: starting version 151
[   33.002004] Bluetooth: Atheros AR30xx firmware driver ver 1.0
[   33.008135] parport_pc 00:09: reported by Plug and Play ACPI
[   33.008186] parport0: PC-style at 0x378, irq 7 [PCSPP,TRISTATE]
[   33.012076] lp: driver loaded but no devices found
[   33.037271] ppdev: user-space parallel port driver
[   33.090256] lp0: using parport0 (interrupt-driven).

那里有什么线索吗?

进一步编辑:

当 initramfs busybox shell 失败时,dmesg 输出的一些屏幕截图:普通的 Linux 线路上无需 quiet splash

我试过fossfreedom 的建议尝试多个启动选项。 到目前为止,它看起来irqpoll确实有效! 到目前为止我已经成功启动了四次。

(顺便说一句,我无法irqpoll坚持——我进行了编辑/etc/default/grub以将其添加到GRUB_CMDLINE_LINUX_DEFAULT并运行update-grub,但仍然没有任何反应。我错过了什么?)(在安装其他 ubuntus 时,我的 grub 以某种方式被阻止了。我修复了它并且现在总是看到 irqpoll。)

既然如此,这里的问题是什么?这听起来像是irqpoll让 BIOS 以某种方式不遵守某些 IRQ 标准来与 Linux 配合使用的一种黑客手段。我如何找出问题所在,是否有其他解决方案可以让 Linux 与它很好地配合使用,而不会涉及太多开销?

答案1

您的最新dmesg消息看起来很有趣。

我见过类似的新闻空间我拥有的一台笔记本电脑在启动过程中出现输入问题。

我发现的解决方案是向 grub 中添加noapicnolapicgrub 启动参数。

根据社区 wiki,您可以尝试多种 grub 启动选项:

https://help.ubuntu.com/community/BootOptions

因此,如果标准解决方法 grub 启动选项(例如noapic或)acpi=off对您不起作用,则其他一些常用选项可能会对您有用。

当测试 grub 启动选项时,您可以使用我的答案在启动时临时添加内核选项。

安装 Ubuntu 后如何设置“nomodeset”?


irqpoll

来自 wiki:更改内核处理中断调用的方式(将其设置为轮询)。在出现硬件中断问题时很有用。

  irqpoll         [HW]
                        When an interrupt is not handled search all handlers
                        for it. Also check all handlers each timer
                        interrupt. Intended to get systems with badly broken
                        firmware running

来源

因此,由于您拥有一台定制电脑,因此很可能是构成您电脑的一个或多个组件。要找出哪一个组件需要进行一些侦查工作。

最简单的方法就是将计算机简化为基本功能 - 使用固定键盘、简单鼠标、板载显卡、板载以太网,仅此而已。即拔出您正在使用的所有 PCI 卡/USB 组件。然后一次添加一个。

如果您发现仍然需要irqpoll简化版本 - 那么您需要仔细查看主板。查看制造商网站,看看是否有任何固件更新 - 很可能您需要 dos-boot 来刷新这些。

答案2

它正在尝试安装设备。如果在“启动时/GRUB 操作期间”按下“s”,这将跳过安装过程,并且不会出现任何错误。您需要编辑引用 UUID 编号的 fstab 文件。示例:

sudo gedit /etc/fstab
UUID=sda2

彻底删除该行。保存并关闭。然后重新启动。

相关内容