我相信你肯定遇到过这种情况:你满怀期待地打开电脑,突然发现屏幕一片漆黑,只剩下一条莫名其妙的信息,告诉你GRUB 引导管理器已损坏。也许是你之前动过磁盘分区,或者在安装 Linux 之后又安装了 Windows 导致引导扇区被覆盖,又或者系统更新出了问题。
首先不要惊慌,即使你的电脑看起来像是死机了,你的数据仍然完好无损。GRUB 只是系统的入口,即使门坏了,房子也还在。根据你手头的资源,有几种方法可以解决这个问题,比如如果 GRUB 控制台仍然响应,可以直接使用它;或者使用Ubuntu 或 Debian 的 Live USB启动盘进行彻底的系统重装。
直接从 GRUB 控制台恢复
如果你的电脑虽然无法启动,但你仍然可以访问 GRUB 命令行(在启动时按“c”键),那么你可以尝试在不使用外部 USB 驱动器的情况下启动系统。首先要做的是…… 确定文件所在位置 运行命令 ls它会显示可用的磁盘和分区,例如: (hd0,msdos1).
找到磁盘后,您必须查找该文件夹。 boot 探索分区 ls (hd0,1)/当你找到合适的人时,你必须 配置前缀路由 使用以下命令获取系统根目录 set prefix=(hd0,1)/boot/grub y set root=(hd0,1)接下来,找到启动文件夹中可用的内核,并使用以下命令加载它: linux指定根分区(例如, root=/dev/sda1),最终执行 initrd 启动引擎。
成功登录用户会话后,别忘了…… 彻底修复起动机以 root 用户身份打开终端并运行 grub-install /dev/sda 接下来 update-grub2 y update-initramfs -u 这样,重启后问题就不会再次出现。
使用 Live USB 重新安装(手动和 Chroot 方法)
当 GRUB 完全缺失时,最可靠的解决方案是使用任何基于 Debian 的发行版(例如 Ubuntu 或 Linux Mint)的 Live USB。至关重要的是,Live USB 的架构(AMD64 或 i386)必须与已安装系统的架构相匹配,以避免在执行root 或 chroot操作时出现错误。
该过程首先识别分区。 sudo fdisk -l区分根分区 (/) 以及是否存在单独的 /boot 分区至关重要。要继续操作,您必须 将根分区挂载到 /mnt 并且,如果存在的话,起始点 /mnt/boot为了使系统在生产环境中正常运行,必须执行以下操作: 链接组件 运行中的操作系统的关键目录 sudo mount --bind /dev /mnt/dev以及 /dev/pts, /proc y /sys.
一切准备就绪后,我们使用命令 sudo chroot /mnt这就像变魔术一样:我们告诉电脑 根目录现在是我们的硬盘 而不是 USB。接下来,我们重新安装管理器。 grub-install /dev/sda 我们更新了设置。 grub-mkconfig -o /boot/grub/grub.cfg o update-grub最后,我们离开了。 exit 于是我们重新开始。
自动化解决方案和快速替代方案
如果您不熟悉终端操作或觉得操作过于繁琐,Boot-Repair是一款非常实用的工具。使用方法很简单:从 Ubuntu Live USB 启动,打开终端,然后从官方软件源安装 Boot-Repair。安装完成后,只需选择推荐的修复选项,程序就会自动完成所有工作,包括检测操作系统并重新安装 GRUB。
在比较简单的情况下,如果我们只需要重新安装 GRUB 而无需执行完整的 chroot 环境,我们可以将包含启动目录的分区挂载到一个临时文件夹中,例如: /tmp/part 并运行 sudo grub-install --root-directory=/tmp/part /dev/sda. 如果 我们正在寻找一条更直接的路线 我们确切地知道启动充电器的位置。
要解决这个问题,无论是在 GRUB 控制台中使用手动命令,还是使用可启动 USB 驱动器的 chroot 技术,亦或是使用 Boot-Repair 等自动工具,关键在于正确识别磁盘分区,并确保 MBR 或 EFI 的引导扇区正确链接到已安装操作系统的内核。



