最新内核升级后找不到root设备

我正在运行Ubuntu 13.04。 昨天我试图安装更新,但是出现了错误,它建议运行apt-get -f install我做了。

现在,当我尝试启动时,出现错误“等待root设备”。 该文本几乎与本文和此问题中显示的文本相同。 但是,“内置shell”根本不起作用! 我输入的任何内容都不会出现在屏幕上或做任何事情。

加载以前的内核工作(虽然有一些图形故障)但据我所知,它应该启动完全相同的东西。 新内核是3.8.0-31通用的,前一个工作的内核是3.8.0-25通用的。

我尝试按照建议添加rootdelay到grub,但它只是等待更长时间并显示相同的屏幕。 这是我的整个/boot/grub/menu.lst文件,删除了注释:

 default 0 timeout 3 title Ubuntu 13.04, kernel 3.8.0-31-generic uuid c690c1e6-beb9-46e7-85c2-145cd07d44ac kernel /boot/vmlinuz-3.8.0-31-generic root=UUID=c690c1e6-beb9-46e7-85c2-145cd07d44ac ro quiet splash initrd /boot/initrd.img-3.8.0-31-generic quiet title Ubuntu 13.04, kernel 3.8.0-31-generic (recovery mode) uuid c690c1e6-beb9-46e7-85c2-145cd07d44ac kernel /boot/vmlinuz-3.8.0-31-generic root=UUID=c690c1e6-beb9-46e7-85c2-145cd07d44ac ro single initrd /boot/initrd.img-3.8.0-31-generic title Ubuntu 13.04, kernel 3.8.0-25-generic uuid c690c1e6-beb9-46e7-85c2-145cd07d44ac kernel /boot/vmlinuz-3.8.0-25-generic root=UUID=c690c1e6-beb9-46e7-85c2-145cd07d44ac ro quiet splash initrd /boot/initrd.img-3.8.0-25-generic quiet title Ubuntu 13.04, kernel 3.8.0-25-generic (recovery mode) uuid c690c1e6-beb9-46e7-85c2-145cd07d44ac kernel /boot/vmlinuz-3.8.0-25-generic root=UUID=c690c1e6-beb9-46e7-85c2-145cd07d44ac ro single initrd /boot/initrd.img-3.8.0-25-generic title Ubuntu 13.04, kernel 3.8.0-23-generic uuid c690c1e6-beb9-46e7-85c2-145cd07d44ac kernel /boot/vmlinuz-3.8.0-23-generic root=UUID=c690c1e6-beb9-46e7-85c2-145cd07d44ac ro quiet splash initrd /boot/initrd.img-3.8.0-23-generic quiet title Ubuntu 13.04, kernel 3.8.0-23-generic (recovery mode) uuid c690c1e6-beb9-46e7-85c2-145cd07d44ac kernel /boot/vmlinuz-3.8.0-23-generic root=UUID=c690c1e6-beb9-46e7-85c2-145cd07d44ac ro single initrd /boot/initrd.img-3.8.0-23-generic title Ubuntu 13.04, memtest86+ uuid c690c1e6-beb9-46e7-85c2-145cd07d44ac kernel /boot/memtest86+.bin quiet title -------------------------------- root title Windows Vista rootnoverify (hd0,2) savedefault makeactive chainloader +1 

使用rootdelay,顶部的行是:

 kernel /boot/vmlinuz-3.8.0-31-generic root=UUID=c690c1e6-beb9-46e7-85c2-145cd07d44ac rootdelay=120 ro quiet splash 

如您所见,所有内核的UUID都是相同的。 为什么我会遇到这个问题,我该怎么办才能解决这个问题?

 Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-=====================================-=======================-=======================-=============================================================================== un linux-image-2.6  (no description available) rc linux-image-2.6.28-11-generic 2.6.28-11.42 i386 Linux kernel image for version 2.6.28 on x86/x86_64 rc linux-image-2.6.31-22-generic 2.6.31-22.65 i386 Linux kernel image for version 2.6.31 on x86/x86_64 rc linux-image-2.6.32-25-generic 2.6.32-25.44 i386 Linux kernel image for version 2.6.32 on x86/x86_64 rc linux-image-2.6.35-22-generic 2.6.35-22.35 i386 Linux kernel image for version 2.6.35 on x86/x86_64 rc linux-image-2.6.35-23-generic 2.6.35-23.41 i386 Linux kernel image for version 2.6.35 on x86/x86_64 rc linux-image-2.6.35-24-generic 2.6.35-24.42 i386 Linux kernel image for version 2.6.35 on x86/x86_64 rc linux-image-2.6.35-25-generic 2.6.35-25.44 i386 Linux kernel image for version 2.6.35 on x86/x86_64 rc linux-image-2.6.35-27-generic 2.6.35-27.48 i386 Linux kernel image for version 2.6.35 on x86/x86_64 rc linux-image-2.6.35-28-generic 2.6.35-28.50 i386 Linux kernel image for version 2.6.35 on x86/x86_64 rc linux-image-2.6.38-10-generic 2.6.38-10.46 i386 Linux kernel image for version 2.6.38 on x86/x86_64 rc linux-image-2.6.38-11-generic 2.6.38-11.50 i386 Linux kernel image for version 2.6.38 on x86/x86_64 rc linux-image-2.6.38-12-generic 2.6.38-12.51 i386 Linux kernel image for version 2.6.38 on x86/x86_64 rc linux-image-2.6.38-8-generic 2.6.38-8.42 i386 Linux kernel image for version 2.6.38 on x86/x86_64 un linux-image-3.0  (no description available) rc linux-image-3.0.0-13-generic 3.0.0-13.22 i386 Linux kernel image for version 3.0.0 on x86/x86_64 rc linux-image-3.0.0-14-generic 3.0.0-14.23 i386 Linux kernel image for version 3.0.0 on x86/x86_64 rc linux-image-3.0.0-15-generic 3.0.0-15.26 i386 Linux kernel image for version 3.0.0 on x86/x86_64 rc linux-image-3.0.0-16-generic 3.0.0-16.29 i386 Linux kernel image for version 3.0.0 on x86/x86_64 rc linux-image-3.0.0-17-generic 3.0.0-17.30 i386 Linux kernel image for version 3.0.0 on x86/x86_64 rc linux-image-3.2.0-24-generic 3.2.0-24.39 i386 Linux kernel image for version 3.2.0 on 64 bit x86 SMP rc linux-image-3.2.0-25-generic 3.2.0-25.40 i386 Linux kernel image for version 3.2.0 on 32 bit x86 SMP rc linux-image-3.2.0-26-generic 3.2.0-26.41 i386 Linux kernel image for version 3.2.0 on 32 bit x86 SMP rc linux-image-3.2.0-27-generic 3.2.0-27.43 i386 Linux kernel image for version 3.2.0 on 32 bit x86 SMP rc linux-image-3.2.0-29-generic 3.2.0-29.46 i386 Linux kernel image for version 3.2.0 on 32 bit x86 SMP rc linux-image-3.2.0-30-generic 3.2.0-30.48 i386 Linux kernel image for version 3.2.0 on 32 bit x86 SMP rc linux-image-3.2.0-31-generic 3.2.0-31.50 i386 Linux kernel image for version 3.2.0 on 32 bit x86 SMP rc linux-image-3.2.0-32-generic 3.2.0-32.51 i386 Linux kernel image for version 3.2.0 on 32 bit x86 SMP rc linux-image-3.2.0-33-generic 3.2.0-33.52 i386 Linux kernel image for version 3.2.0 on 32 bit x86 SMP rc linux-image-3.2.0-34-generic 3.2.0-34.53 i386 Linux kernel image for version 3.2.0 on 32 bit x86 SMP rc linux-image-3.2.0-35-generic 3.2.0-35.55 i386 Linux kernel image for version 3.2.0 on 32 bit x86 SMP rc linux-image-3.5.0-21-generic 3.5.0-21.32 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP rc linux-image-3.5.0-22-generic 3.5.0-22.34 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP rc linux-image-3.5.0-23-generic 3.5.0-23.35 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP rc linux-image-3.5.0-25-generic 3.5.0-25.39 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP rc linux-image-3.5.0-26-generic 3.5.0-26.42 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP rc linux-image-3.5.0-27-generic 3.5.0-27.46 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP rc linux-image-3.8.0-19-generic 3.8.0-19.30 i386 Linux kernel image for version 3.8.0 on 32 bit x86 SMP rc linux-image-3.8.0-21-generic 3.8.0-21.32 i386 Linux kernel image for version 3.8.0 on 32 bit x86 SMP rc linux-image-3.8.0-22-generic 3.8.0-22.33 i386 Linux kernel image for version 3.8.0 on 32 bit x86 SMP ii linux-image-3.8.0-23-generic 3.8.0-23.34 i386 Linux kernel image for version 3.8.0 on 32 bit x86 SMP ii linux-image-3.8.0-25-generic 3.8.0-25.37 i386 Linux kernel image for version 3.8.0 on 32 bit x86 SMP ii linux-image-3.8.0-31-generic 3.8.0-31.46 i386 Linux kernel image for version 3.8.0 on 32 bit x86 SMP ii linux-image-3.8.0-32-generic 3.8.0-32.47 i386 Linux kernel image for version 3.8.0 on 32 bit x86 SMP rc linux-image-extra-3.5.0-21-generic 3.5.0-21.32 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP rc linux-image-extra-3.5.0-22-generic 3.5.0-22.34 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP rc linux-image-extra-3.5.0-23-generic 3.5.0-23.35 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP rc linux-image-extra-3.5.0-25-generic 3.5.0-25.39 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP rc linux-image-extra-3.5.0-26-generic 3.5.0-26.42 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP rc linux-image-extra-3.5.0-27-generic 3.5.0-27.46 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP rc linux-image-extra-3.8.0-19-generic 3.8.0-19.30 i386 Linux kernel image for version 3.8.0 on 32 bit x86 SMP rc linux-image-extra-3.8.0-21-generic 3.8.0-21.32 i386 Linux kernel image for version 3.8.0 on 32 bit x86 SMP rc linux-image-extra-3.8.0-22-generic 3.8.0-22.33 i386 Linux kernel image for version 3.8.0 on 32 bit x86 SMP ii linux-image-extra-3.8.0-23-generic 3.8.0-23.34 i386 Linux kernel image for version 3.8.0 on 32 bit x86 SMP ii linux-image-extra-3.8.0-25-generic 3.8.0-25.37 i386 Linux kernel image for version 3.8.0 on 32 bit x86 SMP ii linux-image-extra-3.8.0-32-generic 3.8.0-32.47 i386 Linux kernel image for version 3.8.0 on 32 bit x86 SMP ii linux-image-generic 3.8.0.32.50 i386 Generic Linux kernel image 

好的,首先,你的内核列表中有大量的scruff,清除它们:

 sudo apt-get purge linux-image-2.6.* linux-image-3.0.* linux-image-3.2.* 

这些问题似乎有不同的原因,从软件到硬件,但由于您能够启动其他内核,因此其中一些不适用于您。 那么该怎么办?

在使用其他内核时,删除并重新安装两个新内核:

  sudo apt-get clean sudo apt-get purge linux-image-3.8.0-31-generic linux-image-3.8.0-32-generic sudo apt-get install linux-image-generic 

第一行将删除本地缓存中的内核包,并确保有足够的可用空间来安装新内核。

现在,如果你看到这个块:

 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/a0c70102-b5d8-4b82-a14c-225330e1c4d4 does not exist. Dropping to a shell! BusyBox v1.13.3 (Ubuntu 1:1.13.3-1ubuntu11) built-in shell (ash) Enter 'help' for a list of built-in commands. (initramfs) _ 

然后是这里常见的“解决方案”及其原因:

  1. 您试图使用rootdelay=修复此问题,遗憾的是,这在您的情况下不起作用,因为问题可能在其他地方。

      /boot/vmlinuz-3.8.0-31-generic root = UUID = c690c1e6-beb9-46e7-85c2-145cd07d44ac rootdelay = 120 ro quiet splash 
  2. 如果您使用的是RAID(自其他内核启动以来可疑),这可能会导致问题。 将分区移动到非raid文件系统应该可以解决问题。 或者检查/etc/initramfs-tools/modules是否具有正确的模块,然后运行sudo update-initramfs -u
  3. 当你使用(initramfs)内置shell时,你可以输入exit并且也应该启动。 同样,问题在其他地方。
  4. 糟糕的文件系统可能导致这种情 从实时系统运行fsck应该会有所帮助。
  5. 如果您删除quiet splash您可以获得有关确切失败的更多详细信息。 如果您遇到此问题,请从grub脚本中删除quiet splash ,这确实有帮助。
  6. 您可能只是忘记为内核版本安装linux-image-extra-X.YY.Z-PP ,或者由于某种原因安装不完整(在dpkg -l | grep linux-image输出中为rc )。 凶猛的是/boot/initrd.img-X.YY.Z-PP将在两种情况下构建,但对于您的硬件, linux-image-extra的额外模块可能是绝对必要的。 在这种情况下,您必须将“找不到根设备”解释为“无法找到所需的额外驱动程序或模块”。

这是我在这里和那里收集的一些提示,如果遇到同样的问题,请使用5提示并提供内核消息的完整输出。