启动问题 – 长时间延迟,然后“放弃等待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的一些屏幕截图:
我尝试了fossfreedom的尝试数字启动选项的建议 。 到目前为止,看起来irqpoll
实际上正在工作! 到目前为止,我已成功启动了四次。
(作为旁注,我不能让 (我的grub是在安装其他ubuntus的时候不知何故。我修好了,现在总是看到irqpoll。) irqpoll
坚持 – 我编辑/etc/default/grub
将它添加到GRUB_CMDLINE_LINUX_DEFAULT
并运行update-grub
,但仍然没什么’。我错过了什么?)
鉴于此,这里的问题是什么? 听起来像irqpoll
是一个黑客,让BIOS以某种方式不遵守某些IRQ标准与Linux一起工作。 我如何弄清楚哪个组件是问题,还有另一个解决方案让Linux能够很好地使用它而不会涉及到如此多的开销吗?
您最新的dmesg
消息看起来很有趣。
在我拥有的一台笔记本电脑上启动时,我看到了类似的印刷空间类型问题。
我发现的解决方案是添加grub noapic
或nolapic
grub boot参数。
您可以根据社区维基尝试一些grub引导选项:
https://help.ubuntu.com/community/BootOptions
因此,如果标准的解决方法grub引导选项(如noapic
或acpi=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
完全删除线。 保存并关闭。 然后重启。