无法在XPS 15上安装Ubuntu 18.10 - 找不到EFI\BOOT\mmx64.efi文件。

我之前试图在我的XPS 15 9570上安装Ubuntu 18.10。一切都运行正常,直到我执行分区选择的安装步骤时出现了崩溃。这时安装程序崩溃了,我不得不关闭我的机器。我认为是因为我将SATA配置设置为RAID ON而不是AHCI,现在已经修复了。

现在当我尝试从我的可引导USB运行安装程序时,会出现以下错误

Failed to open \EFI\BOOT\mmx64.efi - Not Found
Failed to load image \EFI\BOOT\mmx64.efi: Not Found
Failed to start MokManager: Not Fond
Something has gone seriously wrong: import_mok_state() failed

希望有人能对发生的事情有所了解。

你好,希望一切都好。我遇到了一些问题(https://askubuntu.com/questions/1066599/how-to-fix-this-error-when-installing-ubuntu-16-04),与EFI有关,只能通过在BOOT分区之前创建一个分区来解决。请查看这个问题,看看是否有帮助:https://askubuntu.com/questions/789998/16-04-new-installation-gives-grub-efi-amd64-signed-failed-installation-target - Miguel Espeso
1你不应该需要也不想要密钥管理器,Ubuntu使用已安装的Windows密钥。你是否关闭了UEFI安全启动?许多戴尔电脑还需要UEFI更新。https://askubuntu.com/questions/1042414/trying-to-install-ubuntu-on-dell-xps-15-9570 - oldfred
1我的新的干净安装18.10将mmx64.efi放入了/EFI/Boot和/EFI/ubuntu两个目录中。我以前从未见过这种情况。 - oldfred
我知道这个现在相对来说有点老了,但是这与这个bug相关:https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1798171 - Skaparate
解决方法是重命名文件:http://nrecursions.blogspot.com/2019/08/solving-mokmanager-mmx64efi-not-found.html - Nav
我在尝试使用一个带有Kubuntu 18的USB启动(在MSI笔记本电脑上)后遇到了相同的错误。通过进入BIOS并将启动方式从UEFI更改为Legacy,我解决了这个问题。重新启动后,从USB启动没有任何问题。 - Andrew Jens
11个回答

我启动了一个Ubuntu Live USB,进入我的硬盘驱动器的/boot/efi文件夹并将文件grubx64.efi重命名为mmx64.efi

重新启动机器,它应该可以工作。


5找了整整2个小时才找到这个!谢谢。 - Ivan Meredith
1这并没有太多帮助,因为引导驱动器默认为只读。要能够修改这些文件需要跳过相当多的障碍。 - gnomed
4@gnomed有一个与之相同的布局(efi/boot)的第二个FAT分区。我成功地通过相应地重新命名文件来启动了USB驱动器。 - Christian Rauch
1@joe-meagher 你怎么能在可启动的Live USB上做到这一点呢? - tjespe
我试图在我的Asus rog g751jt上安装Ubuntu 18.10,遇到了同样的问题。我使用Windows 10上的Universal-USB-Installer-1.9.8.2创建了安装程序,但这就是解决办法,谢谢你。 - Minichini Fernando
@joe-meagher 你能解释一下如何使用可启动光盘来做吗? - Amityo
解决了我的问题。使用balenaEtcher创建了USB。 - The Matt
怎么给它改名字?我们需要把USB挂载到某个地方然后改名吗?这个操作在Mac上可行吗?还是这个文件应该在硬盘里面? - Marcelo
2我使用Ubuntu Disk Creator应用程序创建了一个可引导的Ubuntu 18启动盘。我想要重命名这个文件,但问题是该驱动器是只读的。在这种情况下如何进行重命名? - Pramod Patil
1突然出现了这个错误。通过将grubx64.efimmx64.efishimx64.efi/boot/efi/ubuntu复制到/boot/efi/,然后将shimx64.efi重命名为BOOTx64.efi来修复它。 - user5480949
找不到那些文件:/ - RTYX
谢谢!太棒了。 - Luis Andrés García
@PramodPatil和其他人,当我使用dd创建可启动的USB时,我遇到了同样的问题。我无法移动或复制文件。最后,我转而使用Windows,并使用rufus(https://rufus.ie/)重新制作了可启动的USB,使用了所有默认设置。然后,我能够按照这个答案中描述的做法进行操作(这里还有一个有用的视觉指南:https://www.youtube.com/watch?v=ranBNkMV8k4)。 - salsbury
2与戴尔 G5 15 5590 有相同的问题。修复方法是将 grubx64.efi 重命名为 mmx64.efi,位于 USB 驱动器上的 /efi/boot 中的 第二个小型 EFI 分区(仅2.4 M)中,该分区已满100%。这第二个分区必须手动挂载,使用 sudo mount /dev/sdX2 /mnt/tmp。在大型分区(2.1G)上重命名或复制不起作用,因为它是在 Ubuntu bionic 上以严格的只读方式挂载的 isoimage。 - qbit
我遇到了同样的问题,不过我的BIOS允许自定义启动路径。在那里选择grubx64.efi就可以成功启动了。谢谢! - urban
@qbit 非常感谢你!你是唯一一个提到挂载驱动器的人!对我来说有效的方法是使用Ubuntu的Live USB,打开终端并执行以下操作:sudo mount /dev/sda1 /mnt/tmp(也许你需要先在mnt中创建tmp文件夹,通过mkdir tmp),然后进入/EFI/BOOT目录,将bootx64.efi复制一份并命名为mmx64.efi。关闭安全启动,重新启动,祝你好运! 我的情况有点特殊,因为我有一台很久没有开机的旧笔记本电脑,不知何故引导过程出了问题。 再次感谢你! - Aleksandar

问题是在可启动的USB中,文件mmx64.efi不存在,所以解决方法是将文件grubx64.efi复制为mmx64.efi(因此USB驱动器文件夹/EFI/BOOT现在包含三个文件:BOOTx64.EFIgrubx64.efimmx64.efi)。然后重新启动,安装应该可以正常进行。
我使用Rufus从Windows 10创建了可启动的USB驱动器。
如果在Rufus中使用了默认设置来创建USB驱动器,可以使用任何文件编辑器在同一台或另一台计算机上进行复制。

5嗯,基本上这就是被接受的答案所建议的。但是复制文件而不仅仅是移动它几乎肯定是一个更好的主意... 如果你想感谢另一个答案,你可以点赞它(即使你没有足够的声望来影响分数,这也会被记录下来)。如果你想改进它,你可以提出修改建议。我不会投票删除你的帖子,因为它可能有用。但请尽量避免在SE网站上通过发布类似的答案来重复信息。 - Zanna
2@Zanna,这个回答与被接受的答案不同。这个回答建议使用USB驱动器的/efi/boot文件夹,而被接受的答案在登录到live USB启动盘的Ubuntu系统后使用了/boot/efi文件夹。在我的情况下,在live USB启动盘的Ubuntu中,/boot/efi下没有grubx64.efi。但是,在USB驱动器的iso中,我确实有/efi/boot下的grubx64.efi。所以这个回答是正确的解决方案,但不是被接受的答案。 - Xiangyu
这个答案在我调试了几个小时之后帮了我大忙。其中关键的一句话是我用Rufus在Windows 10上创建了可启动的USB驱动器。我最初尝试了在另一个Linux系统下修改ISO文件并将其写入USB,但当我尝试引导时仍然不起作用。只有修改由Rufus创建的格式为FAT的USB闪存驱动器才有效。 - Bianfable

这里的答案都建议修改Live USB上的文件系统,但据我所知,这实际上是不可能的,除非重新构建整个ISO映像。
我认为我和OP遇到问题的原因是,在安装程序中勾选了安装第三方软件的框,并随后勾选了通过MOK管理安全启动的框,但随后无法完成安装,并使计算机处于一种状态,在下一次启动时期望启动Ubuntu系统中存在但在Live USB上不存在的路径中的MOK管理器。
为了解决这个问题,我使用了一个奇怪的解决方法。我按照 here提供的Wubi安装Ubuntu的说明进行操作,之后重新启动计算机后,Wubi成功启动了MOK管理器,尽管我没有执行任何MOK管理,但似乎这阻止了计算机期望在启动时找到MOK管理器,之后我尝试从USB启动时突然就起作用了。之后,我只需删除Wubi安装以及所有Wubi文件,并使用Live USB正常方式安装Ubuntu即可。
我对本答案的假设可能是错误的,但在尝试多个USB和许多不同的Ubuntu ISO镜像之后,这最终解决了问题。
注意:我在这个回答中描述的要求您已经安装了Windows,但您可能没有安装。如果没有安装Windows,您可能可以通过引导一个拥有GRUB和MOK管理器的系统来解决类似的问题。

1关于第三方软件的事情正是我遇到的情况。但请注意,您无需重新构建ISO镜像。一旦创建了可引导的USB驱动器,您只需编辑其内容即可。 - ke.
1这只是发生在我的Razer Blade笔记本电脑上,装有Windows 10。不幸的是,WUBI不支持Windows 10,所以我现在不确定该怎么办,因为Ubuntu Live USB无法启动了。有没有什么办法可以找到一个可引导的GRUB+MOK映像来修复这个问题?我猜那种半禁用的安全启动无法从笔记本电脑或BIOS的其他地方修复(甚至取消)吗? - Steve Lemke

我在安装Ubuntu 18.04.2 LTS到我的Acer Aspire V 17 Nitro Black Edition时遇到了同样的问题和错误信息。对我来说,正确的解决方案是重新启用secure boot并将位于Ubuntu安装USB介质上的\EFI\BOOT\grubx64.efi添加到我的BIOS (F2)信任的.efi列表中,然后再次关闭secure boot。之后,我重新启动并通过F12调用引导管理器,在那里我能够选择受信任的efi文件。这会调用grub,我只需要选择install Ubuntu开始安装即可。

在安装过程中启用第三方驱动程序的安全引导需要在重新启动时将新的MOK注册到UEFI中。Ubuntu安装程序在实际完成为您的新Ubuntu安装创建EFI系统分区之前,通过注册一些Mok* EFI变量来执行此操作。如果安装程序在完成之前被中断,我们需要删除两个Mok* EFI变量:
Variable NV+RT+BS '605DAB50-E046-4300-ABB6-3DD810DD8B23:MokAuth' DataSize = 0xAC
Variable NV+RT+BS '605DAB50-E046-4300-ABB6-3DD810DD8B23:MokNew' DataSize = 0x3C5

从UEFI(内部)Shell中运行以下两个命令:

dmpstore -d -all MokAuth
dmpstore -d -all MokNew

现在,当您使用Ubuntu安装介质重新启动时,您应该不再收到“Failed to open \EFI\BOOT\mmx64.efi - Not Found”错误。
如果您的Secure Boot签名的内部Shell没有dmpstore命令(或者您没有内部Shell选项),您将需要暂时禁用Secure Boot并使用其他Shell(例如,将https://github.com/tianocore/edk2/blob/UDK2018/ShellBinPkg/UefiShell/X64/Shell.efi复制到USB闪存驱动器的/EFI/Boot/bootx64.efi,并引导它)。
更新: 对于启用了Secure Boot的解决方案:使用启用了Secure Boot的“alternative amd64”引导https://clonezilla.org/downloads/download.php?branch=alternative。进入shell命令行提示符。输入cmd进入命令行提示符。运行:
sudo chattr -i /sys/firmware/efi/efivars/Mok{Auth,New}
sudo rm /sys/firmware/efi/efivars/Mok{Auth,New}

参考:https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1798171/comments/51

2这个问题在Ubuntu 19.10中已经修复了,所以你可以直接使用它。如果你启动了19.10的安装程序,在勾选第三方驱动选项后取消安装,安装程序会自动修复变量。在这样做之后,我的18.04 USB存储设备又开始正常工作了。感谢你的帮助! - cgmb
@cgmb 真是一招制胜!谢谢你! - fabiomaia
你如何进入这个UEFI shell? - Dustin Michels
@Dustin Michels:将https://github.com/tianocore/edk2/blob/UDK2018/ShellBinPkg/UefiShell/X64/Shell.efi复制到USB闪存驱动器的/EFI/Boot/bootx64.efi,并启动它。由于微软永远不会签署任何Shell程序,因此必须禁用安全启动。 - rcpa0

这是因为Windows有机会首先运行,运行其更新并在BIOS中打开安全启动。您需要进入BIOS并关闭它。在Ubuntu安装过程中,如果您安装第三方驱动程序,它将要求您打开它。
Windows只是“海伦·凯勒”了您的BIOS,并让您自己弄清楚它搞砸了什么。

我遇到了同样的问题。创建一个仅支持UEFI的可启动USB对我很有帮助。这里是说明
关于在Ubuntu上使用UEFI可启动的更多信息

3请编辑您的回答,包括实际解决方案的步骤(+链接),而不仅仅是链接。 - j-money

对我来说,以下方法有效。
  1. 保持安全启动

  2. 在启动时按F2进入BIOS,然后使用箭头键进入Boot。点击UEFI Hard Disk Drive BBS Priorities

                 Aptio Setup Utility - 版权所有(C) 2014 ...
      Main  Advanced  Chipset  Feature | Boot | Security ...
    ---------------------------------------------------------
      Boot Configuration
    
      Bootup NumLock State  [On]
      Quiet Boot            [Enabled]
    
      Set Boot Priority
      Boot Option #1        [USB Key]
      Boot Option #2        [CD/DVD]
      Boot Option #3        [Hard Disk:ubuntu]
      Boot Option #4        [USB CD/DVD]
      Boot Option #5        [USB Hard Disk]
      Boot Option #6        [Network]
    
    > UEFI Hard Disk Drive BBS Priorities
    
    ---------------------------------------------------------
                 Version 2.15.1236. 版权所有(C) 2014 ...
    

    BIOS截图1转录

  3. 然后,您会看到这个屏幕:

                 Aptio Setup Utility - 版权所有(C) 2014 ...
                                     | Boot |
    ---------------------------------------------------------
      Boot Option #1        [ubuntu]
      Boot Option #2        [UEFI OS (P0: SAMSUN...]
      Boot Option #3        [ubuntu (P0: SAMSUNG...]
    
    ---------------------------------------------------------
    

    BIOS截图2转录

    在这里,请确保选择Boot Option #1ubuntu

注意:如果您的计算机上有双系统(Windows和Ubuntu),不确定这样做是否会引起问题。在我的情况下,我只安装了Ubuntu!此外,如Fransisco所建议的,我将grub64.efi复制到mmx64.efi以使其启动。


我用PowerISO for Linux修改了ISO,并将grubx64.efi复制到\EFI\BOOT\目录下的mmx64.efi中。

这对我来说没有起作用。我不得不直接在USB驱动器中重命名文件,而这只能在Windows上完成。 - Michael Hays