jac*_*212 5 boot grub2 dual-boot uefi windows-10
我在将 GRUB 引导加载程序设为系统上的默认引导加载程序时遇到问题,该系统是 Windows 10 和 Ubuntu 20.04 之间的双重引导。它没有出现在我的 UEFI/BIOS 中的任何地方,我在网上看到正在运行
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
Run Code Online (Sandbox Code Playgroud)
在 Windows 中将其设置为默认为 grub,这意味着我可以在每次启动系统时选择要使用的操作系统,而不是像以前那样默认为 Windows 或 Ubuntu。然而,当我这样做时,在尝试启动 Ubuntu 时收到一条三行错误消息,内容如下:
failed to open \EFI\UBUNTU\(gibberish characters including some chinese characters) -- invalid parameter
Failed to load image \EFI\UBUNTU\(gibberish characters including some Chinese) -- invalid parameter
start_image() returned invalid parameter
Run Code Online (Sandbox Code Playgroud)
然后,它就启动进入 Windows。GRUB 不见踪影。
此外,如果我在启动时手动选择 Ubuntu,我根本无法启动到 Ubuntu,并出现相同的错误。我尝试撤消在 Windows 中运行的命令,但没有成功。我担心我必须用 Ubuntu 格式化分区并重新开始,我真的不想这样做。
在运行 Windows 命令之前,如果我在启动时按 F11(我使用的是 MSI b550 PRO WIFI),则可以启动到 Ubuntu,然后在那里选择 ubuntu。但是,GRUB 引导加载程序没有出现(并且 GRUB 也没有出现在 BIOS/UEFI 的引导顺序中)。这就是我做了这一切的原因,现在看来我无法运行 Ubuntu,大概是因为我搞砸了 windows 命令。
更多信息:如果我跑步
bcdedit \enum {bootmgr}
Run Code Online (Sandbox Code Playgroud)
我发现 Windows 启动管理器的路径 =“EFI\UBUNTU\SHIMX64.EFI” 这看起来很奇怪,因为我肯定不是第一次输入它。这是否与 Ubuntu 无法启动有关?
更新:我几年前就发现了这个类似的问题:无法在双启动中访问 Ubuntu 18.04,因为系统直接启动到 Windows 10
我尝试过第一个解决方案(其中设置目录表示文件路径不存在)和第三个解决方案,当我运行
cp -p .... \EFI\ubuntu
Run Code Online (Sandbox Code Playgroud)
它告诉我我尝试安装的文件不存在。
小智 2
我有一台 Windows 机器,可以在 Windows 10 和 ubuntu 18.04 之间双重启动。在 2022 年 2 月进行一些 Windows 升级后,机器只能直接启动到 Windows 10。感谢上面和其他地方收集的答案,下面是我修复双启动故障的步骤。
\n步骤1:使用bcdedit为grubx64.efi设置正确的booloader路径
\n首先,让\xe2\x80\x99s 检查当前的BCD(启动配置数据)设置。在 Windows 中,以管理员身份打开命令提示符,然后键入
\nbcdedit\nRun Code Online (Sandbox Code Playgroud)\n就我而言,它看起来像
\nWindows Boot Manager\n\xe2\x80\x94-----------------------------\nidentifier {bootmgr}\npath \\EFI\\ubuntu\\shimx64.efi\n...\nRun Code Online (Sandbox Code Playgroud)\n由于我的计算机禁用了安全启动,因此我不应该使用 shimx64.efi。因此,我使用许多人推荐的命令更改了 grubx64.efi 的路径:
\nbcdedit /set {bootmgr} path \\EFI\\ubuntu\\grubx64.efi\nRun Code Online (Sandbox Code Playgroud)\n您可以再次输入 bcdedit 来仔细检查路径现已更改为
\nWindows Boot Manager\n\xe2\x80\x94-----------------------------\nidentifier {bootmgr}\npath \\EFI\\ubuntu\\grubx64.efi\n...\nRun Code Online (Sandbox Code Playgroud)\n步骤 2:将 grubx64.efi 引导加载程序复制到 EFI 系统分区 (ESP)
\n在我的 Windows 计算机中,grubx64.efi 引导加载程序在之前的 Windows 升级后不知何故丢失了。以下是检查 EFI 系统分区 (ESP) 中是否存在引导加载程序的步骤。
\n在 Windows 中,以管理员身份打开命令提示符,然后键入以下命令将启动分区挂载到驱动器 P: 上。如果P: 是现有驱动器,则应选择另一个驱动器,例如Z:。挂载系统分区后,进入驱动器查看\\EFI\\ubuntu目录下有哪些文件。
\nmountvol P: /S\ncd /d P:\ncd EFI\ncd ubuntu\ndir\nRun Code Online (Sandbox Code Playgroud)\n就我而言,该目录包含 shimx64.efi、mmx64.efi、grub.cfg 和 BOOX64.CSV。幸好 grub.cfg 还在那里。但是,没有 grubx64.efi。
\n因此,我所做的是将 grubx64.efi 文件复制到该目录中。就我而言,我有一个带有 ubuntu 18.04(我的 ubuntu 映像版本)的 USB 驱动器。我将 USB 驱动器插入 Windows 机器。新驱动器似乎位于 F: 中。由于我已经在 P:\\EFI\\ubuntu 中,所以我复制了引导加载程序,但没有指定目标路径。
\ncopy "F:\\efi\\boot\\grubx64.efi"\nRun Code Online (Sandbox Code Playgroud)\n到目前为止,我做了两件事。
\n使用 bcdedit 为 grubx64.efi 设置正确的 booloader 路径。
\n将 grubx64.efi 引导加载程序文件复制到 EFI 系统分区 (ESP)。
\n我重新启动了 Windows 机器,双启动又开始工作了。我现在可以顺利地依次启动 Windows 或 ubuntu,不会出现任何问题。
\n