启动时进入 Busybox initramfs shell --- 未找到卷组

mrs*_*elp 2 boot grub2 kernel initramfs busybox

由于我已经为解决这个使我们无法正常工作的问题而奋斗了三天,所以我投降并尝试在这里寻求帮助。

我已经安装了 Ubuntu Studio 几个月了,并且设置了全盘加密。

它开始于几周前,我只是想使用 apt-get Upgrade 安装更新,它打印了一个错误,我认为它与 initramfs 的某些包连接,我不记得了。我只是想好吧,我要删除该软件包并重新安装它。

我这样做了,并没有打印错误。所以我认为它正在发挥作用。

但在下次重新启动时,它不再启动,而是将我发送到 busybox shell。

我现在也有同样的错误,即:

Volume group "vgubuntu-studio" not found
 Cannot process volume group vgubuntu-studio 
Gave up waiting for root file system device. Common problems:
-Boot args (cat /proc/cmdline)
  -Check rootdelay= (did the system wait long enough?)
-Missing modules (cat /proc/modules; ls /dev) 
ALERT! /dev/mapper/vgubuntu--studio-root does not exist. Dropping to a shell! 

Busybox v1.30.1 (ubuntu 1:1.30.1-4ubuntu6.3 built in shell (ash)


(initramfs)
Run Code Online (Sandbox Code Playgroud)

然后我发现,当我选择另一个内核进行引导时,它可以工作,所以我寻找一种自动选择这个内核进行引导的方法,我这样做了,并且它在最近的时间里工作了(老实说,我不知道计算机重新启动的频率,但是有时是肯定的)。这是 grub.cfg 的问题,我真的应该开始记笔记......

这主要是我女朋友的电脑,我意识到它在播放视频时遇到问题,想要安装更新并重新启动它。当我这样做时,它再次卡在 busybox 中。

但现在无论我选择什么内核,它总是返回到 Busybox,我从未设法启动它。

我现在尝试了三天,用几个工具来修复它,例如 linux mint live usb 的启动修复工具。我猜它重新安装了 grub,但仍然是完全相同的错误。还有其他几种方法,但都没有效果。

搜索时大多数答案的描述略有不同,主要与 fsck 有关。

我真的很感激任何帮助或推动在哪里搜索的正确方向。

谢谢阅读

小智 7

我遇到了和你一样的情况。可能有更简单的方法,但这就是我修复它的方法。您需要一个 Ubuntu USB,以便可以 chroot 进入加密分区。

您需要通过执行以下操作来安装cryptsetup-initramfs并运行。update-initramfs

chroot 进入加密分区

从 USB 启动至 Ubuntu 并单击“尝试 Ubuntu”按钮。打开一个终端。

找到您的加密分区。

sudo fdisk -l
Run Code Online (Sandbox Code Playgroud)

解密分区。假设我的加密分区是 /dev/sda3

sudo cryptsetup luksOpen /dev/sda3 sda3_crypt
Run Code Online (Sandbox Code Playgroud)

它应该提示您输入加密分区的密码。现在我们需要挂载并 chroot 到该分区。您需要知道 root 的位置以及 /boot 和 EFI 分区。您可以用来sudo blkid寻找它们。它看起来像这样,其中sda2是引导分区,sda1是 EFI 分区。

sudo mount /dev/mapper/vgubuntu--studio-root /mnt
sudo mount /dev/sda2 /mnt/boot
sudo mount /dev/sda1 /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
sudo grub-install
update-grub 
Run Code Online (Sandbox Code Playgroud)

现在您位于 chroot 终端中,这有点像位于加密分区内的终端中。您应该有权访问您的文件,因此在执行其他操作之前,您可以尝试将它们复制到安全位置,以防后续步骤不起作用。

安装 cryptsetup-initramfs

sudo apt-get install cryptsetup-initramfs
Run Code Online (Sandbox Code Playgroud)

检查 crypttab 文件并更新 initramfs

使用编辑器检查/etc/crypttab文件以确保其设置正确。我的没有改变,但你可能想看一下。

使用此命令更新 initramfs。

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

-k all选项指定为所有内核版本更新它。如果您不想全部更新,则可以指定所需的内容。该-u选项是更新现有的 initramfs,而不是创建新的或删除旧的。

退出 chroot,卸载并重新启动

退出 chroot 环境并卸载分区。

exit
cd
for i in /mnt/dev/pts /mnt/dev  /mnt/proc /mnt/sys /mnt/run /mnt/boot/efi /mnt/boot /mnt; do sudo umount $i;  done
Run Code Online (Sandbox Code Playgroud)

重新启动系统并移除 USB。希望这能像为我一样解决你的问题。最大的问题是cryptsetup-initramfs缺失了。当您卸载软件包时,它可能已被删除initramfs