Ubuntu Live USB 修复双系统 GRUB 引导全流程指南

张开发
2026/4/18 17:03:30 15 分钟阅读

分享文章

Ubuntu Live USB 修复双系统 GRUB 引导全流程指南
1. 为什么需要修复GRUB引导当你同时使用Windows和Ubuntu双系统时可能会遇到开机直接进入Windows系统或者干脆提示Failed to open \EFI\ubuntu\grubx64.efi Not Found这样的错误信息。这种情况通常发生在Windows系统更新后或者你在磁盘上进行了分区调整操作。GRUBGRand Unified Bootloader是Linux系统常用的引导加载程序它负责在电脑启动时加载操作系统内核。在双系统环境下GRUB会显示一个菜单让你选择启动Windows还是Ubuntu。但当这个引导程序损坏时你就会失去这个选择权甚至无法进入任何一个系统。我遇到过最棘手的情况是在一次Windows大版本更新后GRUB引导完全消失了。当时我尝试了各种方法最终发现使用Ubuntu Live USB是最可靠的修复方式。这种方法不需要重装系统也不会影响现有系统中的任何数据可以说是双系统用户的救星。2. 准备工作制作Ubuntu Live USB在开始修复之前你需要准备一个Ubuntu Live USB启动盘。如果你手头没有现成的可以按照以下步骤制作从Ubuntu官网下载最新的ISO镜像文件。建议选择LTS长期支持版本因为它们更稳定且支持周期更长。准备一个容量至少4GB的U盘。注意制作启动盘会清空U盘中的所有数据所以请提前备份重要文件。使用RufusWindows或Startup Disk CreatorUbuntu等工具将ISO写入U盘。以Rufus为例插入U盘并打开Rufus选择你的U盘设备点击选择按钮找到下载的Ubuntu ISO文件分区类型选择GPT目标系统选择UEFI点击开始按钮等待制作完成制作完成后重启电脑并进入BIOS设置通常是开机时按F2、F12或Del键具体取决于你的主板型号将U盘设置为第一启动项保存设置后退出。3. 识别和挂载系统分区成功从Live USB启动后你会进入Ubuntu的试用环境。这时我们需要打开终端CtrlAltT开始修复工作。首先我们需要找出你的Ubuntu系统安装在哪个分区上。运行以下命令查看磁盘分区情况sudo fdisk -l这个命令会列出你所有的磁盘和分区。通常你会看到类似这样的输出Device Start End Sectors Size Type /dev/sda1 2048 1050623 1048576 512M EFI System /dev/sda2 1050624 500117503 499066880 238G Linux filesystem在这个例子中/dev/sda1是EFI系统分区通常格式化为FAT32/dev/sda2是Ubuntu的根分区。你的实际情况可能会有所不同关键是要找到这两个分区。找到分区后我们需要将它们挂载到Live系统的/mnt目录下sudo mount /dev/sda2 /mnt # 挂载根分区 sudo mount /dev/sda1 /mnt/boot/efi # 挂载EFI分区如果你的/boot是一个独立分区这在某些安装配置中很常见你还需要挂载它sudo mount /dev/sdaX /mnt/boot # 替换为实际的/boot分区接下来我们需要挂载一些特殊的文件系统这些是Linux运行所必需的sudo mount --bind /dev /mnt/dev sudo mount --bind /dev/pts /mnt/dev/pts sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys sudo mount --bind /run /mnt/run sudo mount --bind /tmp /mnt/tmp这些挂载操作让我们能够进入你的实际Ubuntu系统环境进行修复工作。4. 进入chroot环境并修复GRUB现在我们可以进入chroot环境了这相当于把你的实际系统切换到当前终端中sudo chroot /mnt进入chroot后终端提示符可能会发生变化这表明你现在已经在你的实际Ubuntu系统中操作了。首先我们需要重新安装GRUB到EFI分区grub-install --targetx86_64-efi --efi-directory/boot/efi --bootloader-idUbuntu这个命令做了以下几件事--targetx86_64-efi指定我们要安装的是UEFI模式的GRUB--efi-directory/boot/efi指定EFI分区的挂载点--bootloader-idUbuntu设置引导项在BIOS中显示的名称如果你遇到类似grub-efi-amd64-signed package not found的错误说明缺少必要的软件包。可以先安装它们apt install --reinstall grub-efi-amd64-signed shim-signed安装完成后我们需要更新GRUB配置update-grub这个命令会扫描你系统上的所有操作系统包括Windows并生成新的引导菜单。你应该能在输出中看到类似这样的信息Found Windows Boot Manager on /dev/sda1/EFI/Microsoft/Boot/bootmgfw.efi这表明GRUB已经成功检测到了Windows系统。5. 完成修复并重启系统现在我们可以退出chroot环境并卸载之前挂载的分区了exit # 退出chroot环境 sudo umount /mnt/dev/pts sudo umount /mnt/dev sudo umount /mnt/proc sudo umount /mnt/sys sudo umount /mnt/run sudo umount /mnt/tmp sudo umount /mnt/boot/efi sudo umount /mnt最后重启你的电脑sudo reboot记得在重启时拔掉Ubuntu Live USB否则可能会再次从U盘启动。如果一切顺利你现在应该能看到熟悉的GRUB引导菜单可以选择启动Ubuntu或Windows了。6. 常见问题与解决方案在实际操作中你可能会遇到各种问题。以下是一些常见情况及其解决方法问题1grub-install报错cannot find EFI directory这通常是因为EFI分区没有正确挂载。确保你已经执行了sudo mount /dev/sda1 /mnt/boot/efi将/dev/sda1替换为你的实际EFI分区。问题2update-grub没有检测到Windows这可能是因为Windows的EFI引导文件损坏。你可以尝试在Windows恢复环境中使用以下命令修复bootrec /fixboot bootrec /fixmbr bootrec /rebuildbcd问题3重启后仍然直接进入Windows这通常是因为BIOS中的启动顺序被设置为优先启动Windows。进入BIOS设置将Ubuntu移动到启动顺序的首位。问题4GRUB菜单不显示Windows选项这可能是因为os-prober没有正确运行。在chroot环境中尝试apt install --reinstall os-prober update-grub如果问题依然存在可以手动添加Windows启动项。编辑/etc/grub.d/40_custom文件添加类似以下内容menuentry Windows 10 { insmod part_gpt insmod fat insmod chain set root(hd0,gpt1) chainloader /EFI/Microsoft/Boot/bootmgfw.efi }然后再次运行update-grub。7. 预防措施与最佳实践为了避免将来再次遇到GRUB引导问题我建议采取以下预防措施定期备份EFI分区EFI分区虽然小但非常重要。你可以使用dd命令备份它sudo dd if/dev/sda1 of~/efi_partition_backup.img bs4M安装Boot-Repair工具这是一个图形化的GRUB修复工具使用起来非常方便sudo add-apt-repository ppa:yannubuntu/boot-repair sudo apt update sudo apt install boot-repair避免Windows更新覆盖GRUB在Windows中禁用快速启动功能控制面板 电源选项 选择电源按钮的功能 更改当前不可用的设置 取消勾选启用快速启动。考虑使用rEFInd这是一个比GRUB更现代的引导管理器能自动检测所有操作系统减少引导问题的发生sudo apt install refind记录你的分区结构定期运行sudo fdisk -l并将输出保存下来这样在需要修复时能快速找到正确的分区。记住遇到引导问题时不要慌张。GRUB是非常健壮的系统大多数情况下都能通过Live USB修复。我在过去五年中处理过数十次类似的引导问题使用上述方法成功率接近100%。关键是要耐心地按照步骤操作并确保正确地识别和挂载分区。

更多文章