Windows + Archlinux双系统引导分区损坏修复方法

Windows + Archlinux双系统引导分区损坏修复方法

问题

启动 Linux 时遇到的报错信息表明系统在加载内核和初始 ramdisk 时出现了问题。具体错误如下:

  1. error: fs/fat.c:grub_fat_read_data:562: invalid cluster 0.
    • 这个错误通常与文件系统损坏或引导分区(通常是 FAT32 格式的 EFI 系统分区)有关。可能是由于磁盘损坏、文件系统错误或 GRUB 配置问题导致的。
  2. error: loader/i386/linux.c:grub_cmd_initrd:1082: you need to load the kernel first.
    • 这个错误表示在尝试加载 initrd(初始 RAM 磁盘)之前,内核尚未被正确加载。这通常是由于 GRUB 配置文件(如 grub.cfg)中的命令顺序错误或内核路径配置不正确引起的。

修复

下面的修复方法对我自己是有效的,不一定适用所有人,若想尝试,请提前备份重要文件

这部分的命令参考了 Arch Linux + Windows 双系统安装教程 这篇博客。

1. 使用 Live CD/USB 启动系统

  • 准备一个 Linux Live CD/USB 设备(就是安装系统所使用的启动盘)
  • 插入并重启计算机
  • 在 BIOS/UEFI 设置中选择从该设备启动
  • 启动后选择进入 Linux 安装界面

2. 格式化 /boot 分区

使用 fdisk -l 命令找到 /boot 分区,例如我的是 /dev/sda2

使用下面的命令格式化 /boot 分区

mkfs.vfat -F32 /dev/sda2

3. 挂载分区

这一步和安装 Linux 时的挂载方法相同,根据自己的分区情况进行操作,例如我是

挂载 /mnt 分区

mount /dev/sda1 /mnt

挂载 /boot 分区

mkdir -p /mnt/boot # 若boot目录已存在则不需要创建,清空即可
mount /dev/sda2 /mnt/boot

启用 /swap 分区

swapon /dev/sda3

4. 重新安装内核(可能不是必要的)

若只是修复引导分区,这一步可能不是必要的,不过我修复的时候做了,就写上了(

pacstrap /mnt base base-devel linux linux-firmware

5. 重新生成 fstab 文件

genfstab -U -p /mnt > /mnt/etc/fstab

6. 进入系统

arch-chroot /mnt /bin/bash

7. 重新安装微码并配置 Grub 引导

pacman -S intel-ucode # intel用户
pacman -S amd-ucode # amd用户

如果你是传统BIOS引导,则输入以下命令:

pacman -S grub os-prober

然后输入以下命令安装到硬盘:

grub-install --target=i386-pc /dev/sda --recheck

如果你是UEFI引导,则输入以下命令:

pacman -S grub efibootmgr os-prober 

然后输入以下命令安装到硬盘:

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub --recheck

输入下面命令为 Grub 启用 os-prober

echo "GRUB_DISABLE_OS_PROBER=false" >> /etc/default/grub

然后输入如下命令生成必要的配置文件:

grub-mkconfig -o /boot/grub/grub.cfg

8. 重启系统验证修复

执行完上面的操作后修复应该已经完成,这时候可以正常启动系统,不会再有报错。

posted @ 2026-05-12 19:44  imyhy  阅读(118)  评论(0)    收藏  举报