系统不再启动,放弃等待root设备,(initramfs),/dev/mapper/gnome-root不存在

Fre*_*Ben 10 updates gnome boot grub2

安装更新后,我的系统不再启动。我启用了全盘加密(安装程序为您设置的加密),因此它通常在通过 GRUB 引导后仅几秒钟就要求提供密钥。现在,它跳过询问密钥,尝试加载 Gnome,然后转到下图所示的屏幕。该系统是一个运行 Ubuntu Gnome 13.04 的 64 位 System76 机器。然而,这曾经发生在我身上,在运行 Ubuntu Gnome Remix 12.10 的 Dell XPS 8300 64 位上。在这种情况下,我重新安装了操作系统。但是这次我想真正解决这个问题,所以我知道将来如何处理它。此外,从头开始重新安装非常不方便。

我怀疑 /boot 中的配置文件中有些东西搞砸了,以至于它没有意识到磁盘已加密,但是我在那里闲逛时没有看到任何东西。您对如何修复它有任何想法(除了重新安装操作系统)?

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/mapper/gnome-root does not exist.   
Dropping to a shell! 

BusyBox v.1.20.2 (Ubuntu 1:1.20.2-1ubuntu1) built-in shell (ash)   
Enter 'help' for list of built-in commands.  

(initramfs)
Run Code Online (Sandbox Code Playgroud)

Fre*_*Ben 9

我搞定了!!!为了后代,所以你不必经历我所做的痛苦的日子和无尽的时间:

首先,我可以(initramfs)通过键入以下命令让系统从提示符启动(我使用这个论坛页面作为拐杖):

cryptsetup luksOpen /dev/sda5 sda5_crypt
lvm vgchange -a y
exit
Run Code Online (Sandbox Code Playgroud)

这使我的系统能够正常启动。启动后,我修改/etc/crypttab为指向与以前不同的 UUID。我从我的/etc/fstab. 保存原始 UUID 值。 您将需要几个步骤。然后我跑了(从终端):

update-initramfs -k all -c
Run Code Online (Sandbox Code Playgroud)

如果您收到类似于此或类似内容的警告:

WARNING: invalid line in /etc/crypttab
Run Code Online (Sandbox Code Playgroud)

然后回到开头,而不是sda5_crypt使用crypttab.

然后我重新启动。这次我得到了密码的提示!但是不要太兴奋,因为它没有用。我输入了大约 7 次正确的密码,但它全部拒绝了。然后它(initramfs)在大约 90 秒后返回到提示。

我重复了第一步并再次启动它。然后我将原始UUID 值恢复为crypttab,并重新运行第二步。然后我重新启动,成功!


小智 6

由于全盘加密是 Ubuntu 14.04 中的一个选项,我只想指出我是如何解决这个问题的,因为我的 initramfs 终端不允许我使用cryptsetup

  1. 从 Live DVD/USB 启动(USB 会快很多)。

  2. 打开终端并键入以下内容:

    sudo -i
    cryptsetup luksOpen /dev/sda5 sda5_crypt
    # (do any lvm management you need here, I didn't need any.)
    mkdir /mnt/system
    mount /dev/mapper/ubuntu--vg-root /mnt/system
    mount /dev/sda2 /mnt/system/boot
    mount /dev/sda1 /mnt/system/boot/efi (May or may not be needed.)
    for i in /dev/pts /dev /proc /sys; do mount -B $i /mnt/system$i; done
    chroot /mnt/system
    update-initramfs -k all -c
    exit
    for i in /dev/pts /dev /proc /sys; do umount /mnt/system$i; done
    umount /mnt/system/boot/efi # (If you have UEFI.)
    umount /mnt/system/boot
    umount /mnt/system
    
    Run Code Online (Sandbox Code Playgroud)
  3. 重新启动并希望它有效。