转换为 btrfs 后 GRUB 损坏

转换为 btrfs 后 GRUB 损坏

首先,是的,我确实怀疑将我的文件系统从 ext4 更改为 btrfs 会破坏 GRUB 和 fstab。

现在,事情是这样的。我无缝地将文件系统转换为,btrfs效果很好。现在,我似乎无法启动,因为我收到“GRUB 错误:未知文件系统”。我该如何修复 GRUB 和 fstab 以使用新文件系统进行更新?

答案1

这是一个漫长而奇怪的过程,但它有效。

第一部分:创建 BIOS 启动分区。

第一个问题是我使用的是 GPT 分区表。仅仅因为您可以安装 Linux 并以某种方式启动它并不意味着 GRUB 工作正常。我认为如果我之前可以启动,那么一切都没问题,但事实并非如此。创建一个未格式化的分区并bios_boot设置标志。执行此操作的最佳方法是从一开始就在硬盘上安装任何东西之前执行此操作,但如果您以后需要执行此操作,它仍然可以工作,尽管您的磁盘末尾会有一个奇怪的分区。我喜欢在磁盘开头放置奇怪的东西。无论如何,这是您需要做的。

由于 GPT 比 MBR 高效、智能 1,000,000 倍(但支持程度仍然低得多),因此磁盘上没有空间用于安装 GRUB。通常,由于 MBR 后面需要有间隙,因此 GRUB 会自行安装在磁盘开头的分区之间。奇怪吗?完全是,但事实就是如此。让我们开始吧。

第一的,确保你有正确的驱动器。除非您知道这就是您认为的驱动器,否则不要继续/dev/sdX。现在您已经尽职尽责,请再做一次。三次,以确保万无一失。好的,让我们继续。

现在,安装parted# apt-get install parted)并启动它以定位你的驱动器:

$ sudo parted /dev/sdX

如果尚未这样做,请将引导记录标签设置为 GPT:

(parted) mklabel gpt

接下来,为 BIOS 启动项创建一个分区。我将我的分区放在磁盘的开头,因此我的分区如下所示:

(parted) mkpart primary 0MB 1MB

你应该改变上面的数字来告诉 parting 你想要分区的位置开始停止, 分别。

现在,让我们在这个分区上设置标志。您可能希望print在 parted 中运行命令来获取分区号。在我的例子中,这是1因为它将是第一个分区,所以我们将按照以下方式在其上设置标志:

(parted) set 1 bios_grub on

好的,既然您已经创建了这个分区,我们就完成了这一部分。如果您愿意,您可以通过执行以下操作来创建实际的文件系统分区:

(parted) mkpart primary 1MB 1TB

仅当您确实需要执行此操作并且尚未安装任何内容时才运行上述命令。如果您的系统已损坏,请不要创建另一个分区。

第二部分:修复 GRUB

现在,您需要修复 GRUB 和 fstab。我们首先解决 fstab。加载 Live CD 并在/mntLive CD 上安装您的文件系统。

$ sudo mount /dev/sda /mnt

现在,使用以下命令获取硬盘的 UUID blkid

$ sudo blkid /dev/sda1
UUID="abcdef-1231241241-12124124-12ae21331"

获取 UUID,我们将/etc/fstab使用它进行更新。打开/etc/fstab并使用您刚从 获得的新 UUID 更新 UUID blkid。确保您还用 替换ext4btrfs因为您已经更改了文件系统类型。查找包含 的行/,这是您的根分区,这是您想要调整的分区。太好了。

现在,让我们更新 grub。

$ sudo grub-install --root-directory=/mnt /dev/sda

Grub 将更新并安装到硬盘上。太棒了。下一步是更新您的 GRUB 配置文件。让我们将一些系统分区绑定到目录中/mnt

$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /sys /mnt/sys
$ sudo mount --bind /proc /mnt/proc

现在,让我们 chroot 到您的文件系统。

$ sudo chroot /mnt

这将有效地将您登录到文件系统,就像您的计算机正在运行它一样。接下来,更新 grub。

$ sudo update-grub2

希望它能顺利运行并更新所有内容。太棒了。现在,回到你的生活中并备份你的更改。从你的错误中吸取教训。

相关内容