登录
首页 >  文章 >  linux

Linux引导修复方法全解析

时间:2026-04-29 17:56:37 350浏览 收藏

本文深入解析了Linux系统中GRUB2引导修复的四大核心痛点:BIOS+MBR模式下缺失BIOS Boot分区(EF02类型)导致grub-install失败、chroot环境中因/proc /sys /dev /boot挂载不全引发的“unknown filesystem”错误、update-grub无法识别Windows或其他Linux系统源于os-prober默认禁用及分区未挂载、以及UEFI模式下因启动环境误判或ESP未正确挂载造成的EFI变量支持异常;强调精准判断启动模式(ls /sys/firmware/efi)、核查分区结构(fdisk -l)和严格匹配挂载状态与grub-target才是高效排障的关键,而非盲目重试命令。

linux怎么修复引导记录_linux使用grub修复工具【详解】

grub-install 命令执行失败:/dev/sda 没有 BIOS Boot 分区

这是 GRUB2 在 BIOS + MBR 模式下最常卡住的地方。GRUB2 的核心镜像(core.img)太大,无法塞进 MBR 后面那 512 字节的“空隙”,必须依赖一个专用的 BIOS Boot Partition(类型为 EF02,不挂载、无文件系统)来存放它。

  • fdisk -l /dev/sda 查看分区表,确认是否存在类型为 BIOS boot 的小分区(通常 1–2 MiB)
  • 如果没有,进 fdisk /dev/sdan 新建分区 → t 改类型 → 输入 ef02w 写入
  • 再运行 grub-install --target=i386-pc /dev/sda,否则会报错 embedding is not possible

chroot 环境里 grub-install 报错 unknown filesystem

说明 grub-install 找不到根文件系统里的 /boot/boot/grub,常见于没正确挂载 /boot/dev/proc/sys 就直接 chroot。

  • 确保宿主机中已挂载目标系统的根分区到 /mnt,且 /boot 是独立分区时也挂载到了 /mnt/boot
  • 依次执行:mount -t proc /proc /mnt/procmount -t sysfs /sys /mnt/sysmount -o bind /dev /mnt/dev
  • 进入 chroot 后先运行 ls /boot/grub/i386-pc/,看到一堆 *.mod 文件才算环境就绪,再跑 grub-install

update-grub 找不到 Windows 或其他 Linux 系统

update-grub 本质是调用 os-prober 扫描其他启动项,而它默认禁用——尤其在较新发行版(如 Ubuntu 22.04+、Debian 12)中,GRUB_DISABLE_OS_PROBER=true 是默认配置。

  • 检查 /etc/default/grub 中是否含 GRUB_DISABLE_OS_PROBER=true,如有,改为 false 或直接删掉这行
  • 确保目标系统分区已挂载(os-prober 不扫描未挂载设备),比如 Windows 的 EFI 分区需挂载到 /boot/efi 或临时路径
  • 运行 os-prober 命令手动测试,若输出为空,说明分区未识别或 NTFS 驱动未加载(modprobe ntfs3 或安装 ntfs-3g

UEFI 模式下 grub-install 提示 “EFI variables are not supported on this system”

说明当前运行环境不是 UEFI 启动,或者内核没启用 EFI 运行时支持。即使机器是 UEFI 主板,Live 系统也可能以 BIOS 模式启动,导致 /sys/firmware/efi 目录不存在。

  • 先确认是否真在 UEFI 下:运行 ls /sys/firmware/efi/efivars,有内容才可继续;否则重启进 UEFI 设置,关闭 CSM/Legacy Boot
  • 挂载 EFI 系统分区(通常是 FAT32,标签为 ESP)到 /mnt/boot/efi,且确保该分区有 boot/efi 目录结构
  • 运行 grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu(注意路径是 chroot 内的相对路径)

真正麻烦的从来不是命令敲错,而是搞不清当前启动模式、分区挂载状态和 GRUB 的 target 对应关系。多看一眼 ls /sys/firmware/efifdisk -l 输出,比反复重装快得多。

理论要掌握,实操不能落!以上关于《Linux引导修复方法全解析》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>