我该如何修复 initramfs 找不到根目录?

我该如何修复 initramfs 找不到根目录?

我最近安装了错误的 Ubuntu 19.10(连续的全新安装也会出现同样的问题)。我可以毫无问题地启动 GRUB,但从那里尝试启动 Ubuntu 本身时,我只会看到紫色屏幕。

我尝试了在其他地方找到的几种解决方案,包括尝试通过 Live USB 修复它,但都无济于事。

我目前取得的最大进展是指定根、Linux 和 initrd 的位置并告诉它启动。

但由于某种原因,initramfs 告诉我“未指定根设备。启动参数必须包含 root=parameter。”

我已经告诉它根是什么,那又怎么样呢?

(由于我对 Linux 还不是太熟悉,所以请耐心等待)

答案1

我跟着本具体指南为我修复此问题的方法是按照以下说明进行操作:

  1. 找出您的系统所在的分区。您可以键入以下命令ls来查看所有驱动器,然后ls (hdX,gptX)查看其中一个分区的内容。
  2. 确定正确的分区(我的分区是(hd3,gpt3))后,下一步就是确保前缀设置正确。您可以通过输入来set显示所有设置的变量。本教程展示了前缀设置不正确的示例。
  3. 如果您的分区设置不正确,请使用 设置正确的分区set prefix=(hd3,gpt3)/boot/grub。使用您的分区详细信息。
  4. 之后,使用 设置根值set root=(hd3,gpt3)。使用您的分区值。
  5. insmod normal- 不确定这有什么用,但他的教程说它会加载一个模块。
  6. 下一步将linux /boot/vmlinuz-XXXXXXXXX root=/dev/sdd3 ro根据您的机器上的情况进行操作。

⚠️您应该设置为 root 的值会有所不同,具体取决于您在硬盘驱动器的哪个分区上安装了操作系统。

就我而言,我将硬盘分成 5 个部分,并将第 3、4 和 5 部分用于我的 Ubuntu 机器。第 3 部分包含操作系统,第 4 部分包含我的交换文件,第 5 部分包含我的硬盘数据。(如果您已处于桌面会话中,您可以使用它来查看lsblk文件的分区方式以及分配的大小)。

我之所以使用,sdd3是因为保存操作系统的分区位于驱动器的第三个分区上sdd。这似乎是导致我进入 initramfs 时未指定 root 的缺失部分。

  1. 然后做initrd /boot/initrd-XXXXXXX
  2. 最后,boot

如果有其他 unix/linux/ubuntu 专家可以更清楚地解释我可能没有解释清楚的内容,请随时编辑此消息。

相关内容