警告!/dev/disk/by-uuid/xxxxxxxxx不存在。进入shell模式。

我正在使用 Ubuntu 14.04。

我在终端中运行了 sudo apt-get update。然后我重启了系统。现在我看到:

ALERT! /dev/disk/by-uuid/xxxxxxxxx does not exist. Dropping to a shell
initramfs:_

我无法从USB闪存驱动器启动LIVE Ubuntu。是的,我已经仔细检查了BIOS设置,并且USB闪存驱动器在另一台机器上可以正常运行。现在我打算购买一张DVD,并从另一台笔记本电脑上刻录一个Live DVD。 sudo blkid给出的结果是:
/dev/loop0: TYPE="squashfs"  
/dev/sda1: UUID="xxxx" TYPE="ext4"   
/dev/sr0: LABEL="Ubuntu 14.04.1 LTS i386" TYPE="iso960"   

/etc/fstab中有相同的UUID="xxxx",并且有一行是:

errors=remount-ro 0   

我尝试使用boot-repair,但仍无法登录Ubuntu。
我不想重新安装Ubuntu,因为那里有很多数据。
你有什么建议可以解决这个问题吗?

1从终端运行 sudo blkid 命令(如果需要,使用活动DVD)并检查 UUID 是否与 /etc/fstab 中的一致。或者请在问题中发布两个结果。如何从活动DVD运行 sudo blkid:从 Ubuntu 活动光盘启动,点击启动时的“试用Ubuntu”选项。打开终端(Ctrl+Alt+T),然后在其中运行 sudo blkid 命令。最后,请将其输出发布在您的问题中。 - karel
1好的 @karel sudo blkid 给我返回了以下内容:`/dev/loop0: TYPE="squashfs" /dev/sda1: UUID="xxxx" TYPE="ext4"/dev/sr0: LABEL="Ubuntu 14.04.1 LTS i386" TYPE="iso960"` /etc/fstab 文件中有相同的 UUID="xxxx"并且还有一行写着 errors=remount-ro 0 – - Marcin
1我在运行boot-repair之后得到了这个Boot-repair日志 - Marcin
然后我仍然无法登录Ubuntu... - Marcin
sudo fsck /dev/sda1 util-linux 2.020.1中的fsck e2fsck 1.42.9 (2014年2月4日) /dev/sda1: 清洁,491701/19054592个文件,27163705/76189184个块 - Marcin
我不知道如何在这个AskUbuntu添加评论窗口中写东西,即使阅读了更多的内容也不知道。 - Marcin
3@MarcinGorski请将您的解决方案作为答案添加,并标记为已接受,而不是编辑问题。 - muru
请查看https://www.youtube.com/watch?v=kilXfY-k_9A,它解决了我的问题。 - Gábor Lipták
2个回答

解决方法是从LiveDVD执行这些命令,它允许我在sda1上进行操作(据我所知)。
sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
update-initramfs -u
update-grub
reboot

我的一个来自Ubuntu PL论坛的朋友帮我解决了这个问题。
他发现在initramfs中可能存在错误,在内核更新期间应该进行更新。如果在更新过程中出现任何问题,类似于我遇到的问题可能会发生。

8好帖子。我想补充一点,Ubuntu不一定安装在sda1上。为了确定它安装在哪里,请运行sudo fdisk -l命令。假设您知道将Ubuntu安装到哪个硬盘上,那么该命令应该能帮助您确定哪个sd*映射到该硬盘。 - ubiquibacon
我在Ubuntu MATE 17.04上尝试过(新安装),可惜并没有帮助... - Dominic Hayes
3我之前遇到了WARNING: missing /lib/modules/4.2.0-16-generic的问题,因为LiveCD使用了不同的内核版本。所以我挂载了tmpliblib64,然后一切都正常了。 - Max Malysh
1我必须指定要挂载的文件系统以用于 ext4 分区(mount -t ext4 /dev/sda1 /mnt),否则这个命令非常好用。 - Shane

人们可能会对此表示不满,但我发现在我的个人系统中,使用"/dev/sdX"比UUID更可靠。在企业环境中,我会更加努力地使其与UUID配合使用,而不是"/dev/"地址,但至少在/etc/fstab中使用/dev/sdaX而不是UUID引用应该是安全的,这样您就可以继续搜索为什么尽管在/etc/fstab中有正确的UUID,但启动仍然失败的答案。
如果您希望采用这种方法,请按照以下步骤进行操作:
1. 进入恢复Shell或启动到Live USB驱动器或CD。 2. 挂载无法启动的系统分区。 3. 以root身份编辑第2步中提到的系统分区中的/etc/fstab文件,并将所有相关的/etc/fstab条目中的UUID=XXXXX替换为相应的/dev/sdX标签。
注意:据我所知,这个过程对于Ubuntu和基于Ubuntu的发行版是可靠的(截至本文撰写时;随着任何即将发布的版本,情况可能会有所改变)。我确切知道,对于一些其他发行版,如knoppix或Arch Linux,它不会可靠地工作(这是由于UDEV在扫描设备并在/dev文件系统中为它们命名的方式上存在差异)。如果您使用的是非Ubuntu衍生的发行版,请不要使用此方法,否则请自担风险。

谢谢你的帮助 @MGodby,但我已经找到解决方案了。 - Marcin
5你的方法是旧方法,因为有相当好的理由而被替换掉了,主要原因是驱动器编号不是固定的,可能会从意外的驱动器启动。这在UUID中是不可能的。但是我经常使用“LABEL=___”格式,只是因为一下子就能清楚地看到是什么。例如:LABEL=data_partition - Marty Fried