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

我已经有这个问题开启和关闭了大约两年了。 我注意到它在一台新的(定制的)机器上运行10.04,当它第一次出现时,但它在几个月前就消失了。 我已经经历了一些硬盘驱动器的更改,但我不能具体说明,如果我改变硬件方式使其停止或开始发生。 我曾经假设升级到现代的Ubuntu版本会解决这个问题,所以我昨晚在一个备用分区上安装了12.04 beta,但它仍然在发生。

这是问题所在。 grub加载后我选择要启动的内核,除了闪烁的光标外,屏幕变为空白。 它处于这种状态很长时间才终于放弃并给我一个initramfs shell,消息gave up waiting for root device (并列出它正在等待的/dev/disk/by-uuid/...路径)但没有其他具体的诊断信息。

现在,这是棘手的部分。 首先,问题是间歇性的 – 有时它会在几秒钟内从闪烁的光标进入Ubuntu splash启动屏幕,一旦它到达那么远,它总是继续正常启动。 奇怪的是,我可以通过反复按空格键并点击机器的电源按钮来“强制”它“找到”根设备。 如果我点击那些,最终我会注意到硬盘驱动器亮起,此时它将在几秒钟后继续启动过程。 有趣的是,如果我在按下电源按钮(30秒?)之前稍等一会儿,我按下它就会得到放弃等待消息和initramfs shell。

我已经尝试设置/etc/fstab (以及grub menu.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线上

我尝试了fossfreedom的尝试数字启动选项的建议 。 到目前为止,看起来irqpoll实际上正在工作! 到目前为止,我已成功启动了四次。

(作为旁注,我不能让irqpoll坚持 – 我编辑/etc/default/grub将它添加到GRUB_CMDLINE_LINUX_DEFAULT并运行update-grub ,但仍然没什么’。我错过了什么?) (我的grub是在安装其他ubuntus的时候不知何故。我修好了,现在总是看到i​​rqpoll。)

鉴于此,这里的问题是什么? 听起来像irqpoll是一个黑客,让BIOS以某种方式不遵守某些IRQ标准与Linux一起工作。 我如何弄清楚哪个组件是问题,还有另一个解决方案让Linux能够很好地使用它而不会涉及到如此多的开销吗?

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

在我拥有的一台笔记本电脑上启动时,我看到了类似的印刷空间类型问题。

我发现的解决方案是添加grub noapicnolapic grub boot参数。

您可以根据社区维基尝试一些grub引导选项:

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

因此,如果标准的解决方法grub引导选项(如noapicacpi=off对您不起作用,则其他一些常用选项可能对您noapic

在测试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闪存这些。

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

 sudo gedit /etc/fstab UUID=sda2 

完全删除线。 保存并关闭。 然后重启。