我的笔记本电脑上设置了 Ubuntu 和 Windows 10 双启动。启动并更新 Windows 10 后,Windows 会重置 EFI 启动顺序。为了将 refind 恢复为主要启动选项,我曾经从 refind USB 驱动器启动到 Ubuntu 并恢复我的 EFI 配置。但今天当我尝试启动到 refind USB 驱动器时,出现了此错误:
ASSERT /usr/local/UDK2014/MyWorkSpace/MdePkg/Library/BaseMemoryLib/CopyMemWrapper.c(56): (Length - 1) <= (0xFFFFFFFFFFFFFFFFULL - (UINTN)DestinationBuffer)
ASSERT /usr/local/UDK2014/MyWorkSpace/MdePkg/Library/BaseMemoryLib/CopyMemWrapper.c(57): (Length - 1) <= (0xFFFFFFFFFFFFFFFFULL - (UINTN)SourceBuffer)
起初我以为是 USB 的问题,因为我修改了它的控制器,但在创建新的控制器后,我得到了同样的错误。我从 Ubuntu USB 备份了我的旧 EFI 配置,由于efibootmgr
没有列出 refind,我重新安装了它。重启后,refind 告诉我:
配置文件‘refind.conf’丢失!
尽管 refind.conf 存在。我尝试使用提供的 refind-sample.conf 代替我的,但仍然不起作用。你知道为什么会发生这种情况吗?更重要的是,你知道如何修复它吗?你需要更多信息吗?
答案1
您的 EFI 系统分区 (ESP) 上的 FAT 文件系统可能已损坏。这在 Windows 8 及更高版本的双启动系统中很常见,因为 Windows 现在默认不会关机 - 相反,它会休眠。因此,您需要禁用休眠和相关的快速启动选项,如下所述:
- http://www.tenforums.com/tutorials/4189-fast-startup-turn-off-windows-10-a.html
- http://www.tenforums.com/tutorials/2859-hibernate-enable-disable-windows-10-a.html
禁用这些功能后,您可能需要使用dosfsck
Ubuntu 或 Windows 中的等效工具修复文件系统。在极端情况下,您可能需要备份分区,在其上创建一个新的 FAT 文件系统(使用mkdosfs
或类似的东西),然后恢复它。如果这样做,您可能需要在 中编辑 ESP 的“UUID”(实际上是序列号)/etc/fstab
。
请注意,此类问题有时会出现在一个环境(Windows、Linux、UEFI)中,而不会出现在另一个环境中,因为每个环境都有自己的驱动程序,对文件系统损坏的反应可能不同。实际上,许多 EFI 的 FAT 驱动程序相当弱,似乎对损坏反应不佳,有时甚至对 Windows 和 Linux 认为没问题的文件系统也反应不佳。