今天我在上网本上安装了 Ubuntu 64 位。上网本启动时出现错误报告。我认为分区有问题。
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/ubuntu--vg-root does not exist. Dropping to a shell!
BusyBox v.1.21.1 (Ubuntu 1:1.21.1-1ubuntu1) built-in shell (ash)
Enter 'help' for list of built-in commands.
(initramfs)
根据要求输出 lsblk 的内容:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 232.9G 0 disk
├─sda1 8:1 0 231G 0 part
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 2G 0 part [SWAP]
sr0 11:0 1 1.2G 0 rom /cdrom
loop0 7:0 0 1.1G 1 loop /rofs
答案1
在某些 Ubuntu 版本(例如 Xubuntu 18.10)中,此问题可能是由 引起的apt autoremove
。由于这个错误apt 会建议删除
cryptsetup cryptsetup-bin cryptsetup-initramfs cryptsetup-run dmeventd libdevmapper-event1.02.1 liblvm2app2.2 liblvm2cmd2.02 libreadline5 lvm2
这使得系统无法启动(因为无法使用 LVM 挂载和解密根分区)。
如果您不使用 LVM 和磁盘加密,这个答案可能不适合您。
我可以通过在 chroot 环境中重新安装 cryptsetup 和 lvm2 来修复它:从实时 USB 驱动器启动,在终端中运行以下命令,然后重新启动。
# find root partition
sudo fdisk -l
# unencrypt partition
# Note: replace /dev/nvme0n1p3 with your disk
# replace "nvme0n1p3_crypt" with the correct name
# check by running this in chroot:
# $ cat /etc/crypttab | cut -f1 -d " "
# nvme0n1p3_crypt
sudo cryptsetup luksOpen /dev/nvme0n1p3 nvme0n1p3_crypt
# mount root partition
sudo vgscan
sudo vgchange -ay
sudo mount /dev/mapper/xubuntu--vg-root /mnt
# prepare chroot environment
sudo mount /dev/nvme0n1p2 /mnt/boot/ # replace nvme0n1p2 with your boot partition!
sudo mount -o rbind /dev/ /mnt/dev/
sudo mount -t proc proc /mnt/proc/
sudo mount -t sysfs sys /mnt/sys/
# make dns available in chroot
sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
# enter chroot
sudo chroot /mnt /bin/bash
# re-install missing packages
apt install cryptsetup lvm2
# re-generate (this might be done also by apt in the step before, I'm not sure)
update-initramfs -u -k all
# Leave chroot environment - not sure if the following is really necessary...
exit
# Write buffers to disk
sudo sync
# Unmount file systems
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/boot
这问答帮助我收集命令。
这问答有点相关,但如果您已经遇到这个问题,可能不再与您相关。
答案2
请将 lsblk -fs、带有 p 标志的 fdisk /dev/sda 的输出以及 grub 修复报告作为 pastebin 链接添加到问题中。
根据搜索,Ask Ubuntu 上似乎有类似的问题,但目前还没有答案这里和这里给出了一个关于raid和ubuntu的解释。
似乎有几种建议,其中一些似乎对某些人有用。
从 initframs 提示符尝试输入
ls /dev/mapper
并查看是否列出了您的根卷。如果没有列出,请尝试等待 10 秒钟,然后再次运行 ls。如果现在列出,请输入
exit
,它现在应该找到根设备并启动(取自这里编辑启动配置,按
e
grub alert 选择 OS,然后替换root=UUID-6500...
为root=/dev/sdx
sdx 是启动分区。这里的问题似乎是 UUID 错误,或者/dev/disk/by-UUID...
不存在(1)- 对于某些人来说,将参数添加
all_generic_ide
到引导行末尾似乎kernel /boot/vmlinuz-2.6.27-7-generic root=UUID=43206294-74ef-434d-aca2-db74b4257590 ro quiet splash all_generic_ide
有效(2) - 超级用户问题这里,似乎表明错误是由于 LVM 造成的。解决方案也在同一篇文章中给出,即安装 lvm2。
- 同一超级用户网站还建议使用较旧的内核(如果可用)进行引导。这似乎对某些人有用。尝试使用该
Recovery
选项进行引导可能对某些人有用 - nux_man777 发布这里似乎表明错误可能出现在安装介质中。
该错误
/dev/mapper/ubuntu-vg-root
似乎与描述的 raid 有关这里。“在复制过程开始前的安装程序摘要屏幕中,单击“高级”按钮。将启动分区(这是 MSDOS 样式的“父”分区,而不是 Linux 分区)更改为 /dev/mapper/pdc_feddabdf(或 dmraid 列出的 fakeraid 分区)确保选中复选框以从此磁盘启动。请注意,安装程序将修改 grub2 以指向正确的逻辑分区 /dev/mapper/pdc_feddabdf1 或 / 所在的任何分区。”
有关安装的详细说明已在所引用的站点中提供。请查看那里以获取有关 grub 安装的更多信息。
- 对于某些人来说,启动到实时安装介质并通过更改 root 权限来更新 ubuntu
chroot
似乎可行(cpttripzz 建议这里)。关于 chroot 的说明是这里。您还可以参考这个问题在 Unix 和 Linux 上。更多详细信息请访问建筑维基和Gentoo 维基。 - 将 SATA 控制器从 RAID 更改为 Native IDE 并进行全新安装似乎对某些人来说有效这里和这里
- IDE 电缆或硬盘可能有问题(与上面的 ubuntu 论坛第 40 页相同)
答案3
我遇到了这个问题,这里或其他地方的任何帖子都无法提供帮助。具体到我的情况,我可以看到没有/dev/mapper
包含ubuntu--vg-root
或任何其他内容。这意味着当 LVM 尝试安装/映射卷时出现了问题,或者在启动过程的早期出现了问题,而这个错误只是任何早期问题的综合症状。
第二种情况是我遇到的,只是因为我读过initramfs
我能够理解并诊断问题。如果您怀疑在 LVM 执行操作之前出现了问题,这应该是您要做的第一件事。
就我的情况而言(可能与您不同,但值得记录),我启用了全盘加密(LUKS),但不知何故工具cryptsetup
已从中删除initramfs
,因此没有提示我输入解锁密码,并且驱动器无法访问,这意味着/dev/sdaX
无法安装,因此ubuntu--vg-root
无法安装/映射到/dev/mapper
。如果您尝试cryptsetup
从 BusyBox 提示符运行,则ll know you have the same issue if the
无法找到 cryptsetup`。
解决方案是从 LiveCD 启动,使用 手动解锁驱动器cryptsetup
,chroot
进入根文件系统,重新安装cryptsetup
并调用update-initramfs
。
答案4
在 Dell XPS13 (2020) 上更新 Ubuntu 20.04 后遇到了非常类似的问题。搜索了几个小时,解决方案实际上非常简单。
重新启动并使用“fn 和 F2”进入 BIOS BIOS > 系统配置 > Sata 操作 > 从“RAID On”切换到“AHCI”
由于某种原因,此 BIOS 设置被切换了。