无法挂载 /boot/efi

无法挂载 /boot/efi

我刚刚从官方网站下载了最新版本的 Ubuntu13.04(当然是 amd64),我的电脑是 ASUS-A45V 笔记本电脑。我使用通用 usb 安装程序创建了一个启动 usb 盘来安装 ubuntu。首先我尝试使用第一个默认选项来安装它(这意味着我让 ubuntu 自己做所有的事情,我的硬盘上安装了 Win7),一切似乎运行得很好。但是,当我重新启动并尝试启动 ubuntu 时。它告诉我“无法挂载 /boot/efi,键入 S 跳过它,或键入 M 手动修复它”然后我检查 /boot/efi 文件夹,发现里面什么都没有!然后我尝试手动安装它,但得到了相同的结果。有什么问题?我该如何修复它?而且,Boot-Repair 只能将我的 Win7 加载程序带回 Grub 列表,但 Win7 的正式 efi 加载程序已被 Ubuntu 覆盖到 Grub 中。我该如何恢复它?

答案1

首先,是 Boot Repair 而不是 Ubuntu 的安装程序用 GRUB 的另一个副本替换了 Windows 引导加载程序。Boot Repair 之所以这样做,是因为它是唯一可用的解决方法,用于某些有缺陷的 BIOS,这些 BIOS 将启动 Windows 引导加载程序而不是 Linux 引导加载程序;但恕我直言,Boot Repair 太快地诉诸于这个解决方案,这是一个不雅的(尽管偶尔是必要的)黑客行为。如果我没记错的话,Boot Repair 中有一个选项可以撤消此更改。如果找不到它,您可以通过重命名文件手动执行相同的操作。Microsoft 引导加载程序应该位于EFI/Microsoft/Boot/bootmgfw.efiESP 上(/boot/efi在 Linux 中安装在;见下文)。对于您来说,该文件将包含 GRUB 的副本,而真正的 Microsoft 引导加载程序将使用另一个扩展名或几个新的前导字符重命名 - Boot Repair 开发人员似乎至少更改过一次他们使用的名称。请注意,如果您正确重命名了启动程序,则您的计算机可能会在启动时直接启动 Windows,而没有启动 Linux 的选项。如果发生这种情况,您可能能够在固件自己的启动管理器中找到 Linux(通常在启动时按功能键启动);并且您可能可以使用efibootmgrLinux 中的程序将 GRUB 恢复为默认设置。请参阅我的 EFI 引导加载程序安装网页了解详情。

/boot/efi目录为空,因为它是 ESP 的挂载点,正如您所报告的,系统无法挂载它。这很可能是因为文件系统损坏,尽管也可能是您的/etc/fstab输入/boot/efi有错误。尝试以下操作:

  1. 输入sudo parted /dev/sda print。这将生成磁盘上的分区列表。ESP 通常是一个 FAT 分区,其中设置了“启动标志”,这是parted的命名法。识别此分区并记下其编号。如果您找不到 FAT 分区,则可能是因为 ESP 损坏严重——但考虑到您可以启动,这种情况似乎不太可能。
  2. 输入sudo mount /dev/sda1 /boot/efi,将其更改1为您在第一步中确定的任何数字。如果有错误消息,请记下它;它可能提示出了什么问题。
  3. 如果无法挂载 ESP,请键入sudo dosfsck /dev/sda1,再次更改1为正确的分区号。这将在分区上运行 Linux 的 FAT 文件系统检查实用程序,如果运气好的话,这将解决问题。然后您可以尝试再次手动挂载该分区。
  4. 如果您能够在不运行 的情况下安装 ESP dosfsck,请查找其条目/etc/fstab并修复其中的任何问题。我知道这个描述很模糊,但如果不看条目就很难知道可能出了什么问题。如果您需要进一步的建议,请在此处发布。

您提到了 Windows 7,但请注意,Windows 8 默认不使用正常关机。相反,它使用“快速启动”功能,更像是挂起到磁盘的操作。这样做的后果之一是文件系统处于不一致的状态。我听说此功能会导致某些计算机上的 ESP 出现问题,这就是我提到它的原因。当使用 Windows 8 双启动时,您应该禁用“快速启动”功能,正如这里所述。即使在 Windows 7 中,如果您使用了暂停到磁盘功能或者没有干净地关机,您也可能会看到类似的情况。

相关内容