ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

双系统引导修复:GRUB消失后恢复Windows与Ubuntu启动菜单

双系统引导修复:GRUB消失后恢复Windows与Ubuntu启动菜单 1. 问题现象与核心原因剖析如果你也遇到了给电脑装上Windows 10和Ubuntu双系统后开机时那个熟悉的GRUB引导菜单直接消失屏幕一闪就进了Windows那么恭喜你你并不孤单。这几乎是所有双系统玩家在某个阶段都会遇到的“经典”问题尤其是在Windows系统进行了一次重大更新或者你手动调整了某些磁盘分区之后。这个问题的本质并不是你的Ubuntu系统被删除了也不是硬件坏了而是Windows的引导管理器Boot Manager在启动流程中“篡位”成功接管了电脑的启动控制权它压根不认识也不去加载Ubuntu的GRUB引导程序。要理解这一点我们需要简单回顾一下现代电脑UEFI模式的启动流程。当你按下开机键电脑的UEFI固件也就是我们常说的BIOS虽然不准确但大家习惯这么叫会首先被唤醒。UEFI固件会去查找所有硬盘上特定的分区——EFI系统分区ESP。这个分区通常不大几百兆格式是FAT32里面存放着各个操作系统的引导加载程序。在理想的双系统状态下ESP分区里应该并存着两个文件夹一个是/EFI/Microsoft/里面是Windows的引导文件bootmgfw.efi另一个是/EFI/ubuntu/里面是GRUB的引导文件grubx64.efi和shimx64.efi等。UEFI固件会有一个启动顺序列表Boot Order里面记录了它应该优先尝试加载哪个.efi文件。问题就出在这里Windows系统特别是其更新程序有时会非常“霸道”地把自己设置为第一启动项甚至在某些极端情况下会覆盖或破坏其他引导加载程序。当你开机时UEFI固件严格按照Boot Order列表第一个找到的就是Windows的引导文件于是它便加载Windows Boot Manager后者自然只负责启动WindowsGRUB菜单也就无从谈起了。你的Ubuntu系统完好无损地躺在它的分区里只是失去了被“召唤”的通道。所以解决这个问题的核心思路非常明确我们需要修复或重建这个“召唤”通道让GRUB重新掌握启动控制权或者至少让UEFI固件能同时看到Windows和Ubuntu两个选项。下面我将从易到难提供几种经过实战验证的解决方案。2. 方案一最快捷的UEFI固件启动项调整这是你应该尝试的第一步因为它完全在操作系统之外进行不会对磁盘数据做任何修改最为安全。这个方法的核心是直接进入电脑的UEFI固件设置界面手动调整启动顺序。2.1 进入UEFI固件设置界面不同品牌的主板或电脑如戴尔、联想、神舟、华硕等进入设置界面的按键不同常见的是在开机自检画面时快速连续按下F2、F12、Del或Esc键。如果你用的是Windows 10/11还有一个更稳妥的方法按住Shift键不放同时点击Windows开始菜单中的“重启”。电脑重启后会进入一个蓝色高级启动菜单选择“疑难解答” - “高级选项” - “UEFI固件设置”即可重启进入UEFI界面。2.2 寻找并调整启动顺序进入UEFI界面后你需要找到“Boot”、“启动”或“启动顺序”相关的选项卡。这里的界面千差万别但核心信息一致。在启动设备列表中你可能会看到诸如Windows Boot ManagerUbuntu硬盘型号如P1: Samsung SSD 970 EVOUEFI: USB Flash DriveU盘你要做的就是找到标有Ubuntu的条目利用F5/F6或/-键将其移动到Windows Boot Manager的上方设置为第一启动项。有些UEFI界面会有一个明确的“Boot Option #1”下拉菜单直接在里面选择Ubuntu即可。2.3 关键操作与保存调整完毕后务必记得保存设置并退出。通常是按F10键选择“Yes”或“保存并退出”。电脑会自动重启。如果一切顺利重启后你将直接看到熟悉的GRUB菜单里面包含了Ubuntu和Windows的选项。恭喜问题就这么简单地解决了这说明你的GRUB引导文件完好无损只是UEFI的“指针”指错了地方。注意有些电脑的UEFI固件可能不会自动识别出“Ubuntu”选项或者之前识别了但后来消失了。如果启动列表里根本没有“Ubuntu”那么这个方法无效你需要继续看下面的方案这通常意味着ESP分区中的Ubuntu引导文件可能已被损坏或未被正确注册。3. 方案二使用Ubuntu安装U盘修复GRUB引导当UEFI设置里找不到Ubuntu启动项时说明我们需要修复或重新安装GRUB到ESP分区。这就需要借助当初安装Ubuntu时使用的那个安装U盘或者临时制作一个。这是一个非常标准的修复操作。3.1 制作Ubuntu启动U盘与进入Live环境如果你没有现成的U盘需要找一台能用的电脑下载Ubuntu的ISO镜像文件如22.04 LTS使用Rufus、BalenaEtcher等工具将其写入一个至少4GB的U盘。将此U盘插入出问题的电脑开机并狂按启动菜单选择键通常是F12、F10或Esc从U盘启动。在Ubuntu安装界面不要选择“安装”而是选择“试用Ubuntu”。这会进入一个完整的、运行在内存中的Ubuntu桌面环境Live CD环境你的硬盘系统不会被触碰。3.2 挂载关键分区并Chroot修复引导的核心操作需要在终端Terminal中完成。我们需要挂载硬盘上的根分区和ESP分区到Live环境然后“切换根目录”到硬盘上的系统以便在其内部执行修复命令。首先打开终端使用lsblk或sudo fdisk -l命令查看磁盘分区情况。你需要辨认出你的Ubuntu系统根分区/例如/dev/nvme0n1p5NVMe硬盘或/dev/sda5SATA硬盘。你的EFI系统分区ESP通常是第一个FAT32格式的小分区几百MB例如/dev/nvme0n1p1。假设我们识别出的分区是根分区/dev/nvme0n1p5ESP分区/dev/nvme0n1p1。接下来执行以下命令序列# 1. 挂载根分区 sudo mount /dev/nvme0n1p5 /mnt # 2. 挂载ESP分区到根分区下的/boot/efi目录如果/boot/efi是单独分区则挂载它 sudo mount /dev/nvme0n1p1 /mnt/boot/efi # 3. 为其他必要的虚拟文件系统创建挂载点非常重要 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 # 4. 切换到硬盘系统的根环境chroot sudo chroot /mnt执行完chroot后你的终端提示符可能会变化这意味着你现在的操作环境已经“模拟”在了硬盘上的Ubuntu系统内部。3.3 重新安装并配置GRUB现在我们可以在“内部”修复引导了。关键命令是grub-install和update-grub。# 1. 重新安装GRUB引导程序到ESP分区 # 这里的 /dev/nvme0n1 是你的硬盘设备不带分区号请根据实际情况修改 grub-install /dev/nvme0n1 # 如果上述命令报错可以尝试指定efi目录 # grub-install --targetx86_64-efi --efi-directory/boot/efi --bootloader-idubuntu # 2. 更新GRUB配置这一步会扫描所有硬盘自动发现Windows和其他系统并生成/boot/grub/grub.cfg文件 update-grubupdate-grub命令运行后你会在输出信息中看到类似“Found Windows Boot Manager on /dev/nvme0n1p1”的字样这表明它成功探测到了Windows。3.4 退出与重启操作完成后按顺序退出和卸载# 退出chroot环境 exit # 卸载所有挂载点 sudo umount /mnt/dev/pts sudo umount /mnt/dev sudo umount /mnt/proc sudo umount /mnt/sys sudo umount /mnt/boot/efi sudo umount /mnt现在你可以安全地重启电脑了。拔出U盘理论上GRUB菜单应该已经恢复。如果重启后依然直接进入Windows请再次进入UEFI设置检查“Ubuntu”是否已出现在启动选项中并将其设为第一项。4. 方案三在Windows内使用EasyUEFI等工具管理启动项如果你不太习惯命令行操作或者chroot过程让你觉得复杂还有一个折中的图形化方案可以在Windows系统内完成。这个方法的原理是通过第三方工具手动在UEFI的启动列表中添加一个指向Ubuntu GRUB引导文件的新条目。4.1 准备工作确认ESP分区与引导文件路径首先你需要在Windows下确认ESP分区的位置和Ubuntu引导文件的存在。打开“磁盘管理”diskmgmt.msc找到那个几百MB的FAT32分区记下它的盘符如果没有盘符可以右键“更改驱动器号和路径”临时分配一个比如Z:。然后打开此电脑进入分配了盘符的ESP分区例如Z:。导航到Z:\EFI\目录。你应该能看到Microsoft和ubuntu两个文件夹。进入ubuntu文件夹确认里面存在grubx64.efi或shimx64.efi文件。记下这个文件的完整路径例如\EFI\ubuntu\grubx64.efi。4.2 使用EasyUEFI添加启动项下载并安装EasyUEFI有免费版。以管理员身份运行它。在软件主界面点击“管理EFI启动项”。点击右侧的“创建新项”按钮。在弹出的窗口中类型选择Linux或其他操作系统。描述可以填写Ubuntu。文件路径点击浏览按钮定位到你刚才记下的ESP分区如Z:然后依次选择EFI-ubuntu-grubx64.efi。软件会自动将其转换为UEFI格式的路径即\EFI\ubuntu\grubx64.efi。点击“确定”保存。创建成功后你可以在EasyUEFI的列表里看到新添加的“Ubuntu”条目。你可以通过“向上/向下”箭头按钮将其调整到“Windows Boot Manager”之上设置为第一启动项。4.3 重启验证与注意事项关闭软件并重启电脑。此时UEFI固件应该会读取到我们新添加的条目并首先加载Ubuntu的GRUB从而显示双系统菜单。实操心得这个方法虽然方便但属于“治标”的一种。因为它只是在UEFI的NVRAM变量中添加了一个启动条目并没有修复ESP分区里可能存在的文件关联。如果未来ESP分区里的grubx64.efi文件被误删或者GRUB核心模块损坏这个条目就会失效。它最适合用于UEFI启动项意外丢失但引导文件本身完好的情况。同时在Windows大版本更新后这个手动添加的条目有可能会再次被清除。5. 深度排查当上述方案都失效时如果尝试了以上所有方法问题依旧那么我们需要进行更深入的排查。这通常意味着有更底层的问题。5.1 检查引导模式UEFI vs Legacy BIOS一个根本性的冲突是引导模式。你的Windows 10很可能是在UEFI模式下安装的而你的Ubuntu可能被错误地以Legacy BIOS传统模式安装。这两种模式的引导方式GPT分区表 vs MBR分区表 ESP分区 vs 引导扇区完全不兼容无法共存于同一个硬盘的引导菜单中。如何检查进入UEFI设置查看“Boot”选项确认是否关闭了“CSM”兼容性支持模块或“Legacy Support”。对于纯UEFI系统应该关闭CSM。如果你在安装Ubuntu时U盘是以Legacy模式启动并安装的那么GRUB会被安装到MBR而Windows的UEFI引导器在ESP分区里两者互不识别。解决方案是用UEFI模式启动Ubuntu安装U盘重新安装Ubuntu或者在Live环境中以UEFI模式重新安装GRUB确保grub-install命令使用了--targetx86_64-efi参数。5.2 检查ESP分区状态与文件完整性ESP分区可能出现了问题。例如分区被意外格式化或文件被删检查ESP分区中/EFI/ubuntu/目录是否完整。如果丢失你需要从Ubuntu Live环境重新安装GRUB如方案二。分区空间不足ESP分区通常只有100MBWindows更新和多个系统可能会将其填满。你可以使用Windows的diskpart或第三方工具稍微扩大ESP分区或者清理其中旧的、无用的引导文件。文件系统错误在Windows下可以以管理员身份打开命令提示符运行chkdsk Z: /fZ为ESP分区盘符来检查和修复FAT32文件系统错误。5.3 修复Windows引导并重建BCD高级操作在某些罕见情况下Windows自身的引导配置数据BCD损坏导致其行为异常。你可以尝试在Windows中修复它但这可能会让Ubuntu引导项暂时消失需要之后再修复GRUB。从Windows安装介质或恢复环境启动打开命令提示符执行# 修复Windows引导记录和BCD bootrec /fixmbr bootrec /fixboot bootrec /rebuildbcd执行完毕后重启很可能直接进入Windows。此时你需要再使用方案二Ubuntu安装U盘的方法重新安装GRUB让GRUB去“包容”Windows。5.4 终极备用方案使用rEFInd引导管理器如果GRUB和Windows Boot Manager让你感到头疼可以考虑使用第三方引导管理器rEFInd。它颜值高能自动扫描所有硬盘上的操作系统内核包括Windows、Linux、macOS生成一个图形化的启动菜单。你可以在Windows或Linux下安装rEFInd到ESP分区。安装后将rEFInd设置为第一启动项它就能智能地管理所有系统很大程度上避免了引导冲突。这相当于引入了一个更强大的“总调度”替代了容易出问题的GRUB或Windows Boot Manager。踩过几次坑之后我的个人体会是双系统引导问题的预防比解决更重要。在进行Windows主要版本更新如从Win10到Win11前最好先做好引导备份。一个稳定的习惯是在安装完双系统并确认GRUB工作正常后立即进入UEFI设置界面将“Ubuntu”启动项固定为第一顺位。这样即使Windows更新后试图篡位只要UEFI设置没被重置控制权依然在GRUB手里。对于重要的开发或生产环境如果条件允许将两个系统安装在独立的物理硬盘上并在UEFI中通过启动菜单F12等键临时选择启动盘是隔离引导问题最彻底、最省心的方案。
返回列表