几年前我用过 Ubuntu,后来放弃了。现在我准备再试一次。令我惊讶的是,我第一次安装时就收到了这条欢迎消息。如果我等了一会儿,然后输入 exit,操作系统就会正常启动。我决定重新安装 Ubuntu,看看是否能解决问题。但事实并非如此。它一直表现得一样。
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/11d3bcfa-0726-47cf-a705-e4acdd9169fe does not exist.
Dropping to a shell!
BusyBox v.1.21.1 (Ubuntu 1:1.21.0-1ubuntu1) built-in shell (ash)
Enter 'help' for list of built-in commands.
(initramfs)
任何建议都值得赞赏!
sudo blkid; mount; cat /etc/fstab 输出:
/dev/sda1: LABEL="System Reserved" UUID="1C8CC0F68CC0CC08" TYPE="ntfs"
/dev/sda2: UUID="A490C32890C30032" TYPE="ntfs"
/dev/sda5: UUID="920c6caa-4062-45f0-a58c-585db797d554" TYPE="swap"
/dev/sda6: UUID="11d3bcfa-0726-47cf-a705-e4acdd9169fe" TYPE="ext4"
/dev/sda6 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/cgroup type tmpfs (rw)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
none on /sys/fs/pstore type pstore (rw)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=inti)
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda6 during installation
UUID=11d3bcfa-0726-47cf-a705-e4acdd9169fe / ext4 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
UUID=920c6caa-4062-45f0-a58c-585db797d554 none swap sw 0 0
以下是 grep rootdelay /boot/grub/grub.cfg 的输出
linux /boot/vmlinuz-3.13.0-32-generic root=UUID=11d3bcfa-0726-47cf- a705-e4acdd9169fe ro rootdelay=10 quiet splash $vt_handoff
linux /boot/vmlinuz-3.13.0-32-generic root=UUID=11d3bcfa-0726-47cf- a705-e4acdd9169fe ro rootdelay=10 quiet splash $vt_handoff
linux /boot/vmlinuz-3.13.0-32-generic root=UUID=11d3bcfa-0726-47cf- a705-e4acdd9169fe ro recovery nomodeset rootdelay=10
答案1
由于需要一段时间才能检测到根文件系统,因此您可以添加rootdelay
或rootwait
。从内核文档:
rootdelay= [KNL] Delay (in seconds) to pause before attempting to
mount the root filesystem
...
rootwait [KNL] Wait (indefinitely) for root device to show up.
Useful for devices that are detected asynchronously
(e.g. USB and MMC devices).
要设置其中之一,请编辑/etc/default/grub
,并更改 的值GRUB_CMDLINE_LINUX
。使用您喜欢的编辑器,如nano
或gedit
,根据需要使用sudo
或:gksudo
sudo nano /etc/default/grub
在引号内添加rootdelay=10
。如果您不想手动编辑,请运行以下命令:
sudo sed -i.bak 's/^GRUB_CMDLINE_LINUX="/& rootdelay=10 /' /etc/default/grub
然后运行:
sudo update-grub
这将告诉内核等待 10 秒钟,然后再继续挂载根文件系统。要查看此更改是否已应用,请运行
grep rootdelay /boot/grub/grub.cfg
如果显示了一些输出,则表示已应用。现在重新启动。
如果仍然出现错误,请CtrlAltDel按 重新启动,等待 GRUB OS 选择菜单出现,然后按e。编辑 的值rootdelay
,并增加它。按F10启动。重复。
如果启动正确,请尝试上述过程并降低该值。
答案2
上述解决方案对我都不起作用。我从安装 Ubuntu 时使用的同一个 USB 拇指驱动器启动了计算机,但我的 ssd 没有列出df -h
/ sudo fdisk -l
/ sudo blkid
/ lsblk
/ sudo parted -l
。我必须做两件事来解决这个问题:
- 禁用
Fast Boot
。从 BIOS 执行此操作是不够的(尝试重新启动并再次查看 - 它一直回到启用状态)。我必须先在 Windows 设置中禁用它,然后在 BIOS 中禁用它。 - 我不得不从 RST 切换回 AHCI。你需要谷歌一下并找到所有步骤。我的 BIOS 警告我一切都会丢失,幸运的是没有丢失。
下次我从 U 盘启动时,我可以看到我的 ssd 磁盘(在/dev/nvme01n1
)。然后我安装了boot-repair
,运行它并重新启动。瞧。
答案3
修复分区表后,我遇到了同样的问题。消息实际上很简单。检查目录 /dev/disk/by-uuid/,消息中的 uuid 确实丢失了。相反,有另一个 uuid 链接到分区(对我来说是 ../../sda5),这应该是正确的分区。
最终我简单地解决了这个问题:编辑 /boot/grub/grub.cfg,将错误的 uuid 替换为正确的 uuid。
答案4
我遇到过同样的问题, 链接到我的问题
问题在于创建 initramfs 时,在执行了
make oldconfig
并选择新选项的默认设置,确保有足够的磁盘空间来创建映像。在我的例子中,创建的图像不正确,因此无法在启动时挂载图像。
相比之下,映像大小比现有较低版本的映像小很多,因此我添加了另一个大小绰绰有余的磁盘,然后
make bzImage
make modules
make modules_install
make install
开始运行得非常顺利。我想知道为什么图像创建提前完成,并导致图像损坏(尺寸较小),而没有每次都抛出任何错误