本网站上有许多标题非常相似的问题,但没有一个真正帮助到我。如果我漏掉了什么,请告诉我。
以下是我的故事:
我的笔记本电脑出厂时安装了 Win 8.1(UEFI 模式)。后来我安装了 Ubuntu 14.04,并告诉它从根分区启动。所以我有两个可启动分区,通常只启动 Ubuntu 分区,因为我也可以在 grub 菜单中 选择 Windows。几天前,我重新安装了 Win 8.1,不出所料,无法再启动 Ubuntu。Ubuntu 分区设置为不可启动。然后,我在 Windows 创建的启动分区上安装了 grub2,并执行了 和sudo os-prober
。sudo update-grub
现在,当从 Win 启动分区启动时,grub 会出现,我可以在操作系统之间进行选择,一切都正常。唯一的问题是,当我选择 Ubuntu 时,我现在收到消息
Disk drive for /boot/efi is not ready or not present.
Continue waiting or press s to skip or m for manual recovery.
如果我按下sUbuntu,它就会正常启动并正常工作,但是消息有点烦人,而且我也想了解它是从哪里来的。
我想,当我决定不再从 Ubuntu 分区启动,而是从 Windows 分区启动时,我搞砸了一点。/boot
我的 Ubuntu 分区上仍有该文件夹。只需重新设置boot
Ubuntu 分区上的标志,一切可能就会像以前一样工作,对吗?
解决这个问题的最好方法是什么?
以下是 gparted 的屏幕截图:
编辑:
问题很简单,就是序列号/dev/sdb2
错误/etc/fstab
。显然,重新安装 Windows 改变了序列号。修复后,一切正常。我接受了 Rods 的回答,因为它帮助我解决了这个问题。
答案1
首先,EFI 引导加载程序是驻留在EFI 系统分区 (ESP),在 Ubuntu 中安装于/boot/efi
。当操作系统安装 EFI 引导加载程序时,它还会在 NVRAM 中创建一个指向其引导加载程序的条目。启动计算机时,通常可以获得显示这些条目的启动菜单。这与 BIOS 形成对比,在 BIOS 中,引导加载程序存储在硬盘的第一个扇区中,并且(通常)存储在某些分区的前几个扇区中,这些扇区通常标有“引导标志”。因此,在 BIOS 中,引用启动盘或启动分区,但在 EFI 中,这些短语含糊不清或具有误导性;你必须引导文件和NVRAM 启动项相反。此外,EFI 不使用“启动标志”。令人困惑的是,libparted(以及parted
GParted)滥用术语“启动标志”来指代 ESP 的类型代码;不恰当地设置此类型代码可能会导致严重问题。我指出这一切是因为您的问题充斥着以 BIOS 为中心的术语,从字里行间看,您似乎不了解 BIOS 模式和 EFI 模式启动之间的这一关键区别。这种误解通常会导致人们犯下严重错误,甚至破坏他们的安装,因此了解这一点很重要。有关此类差异的更多信息,请参阅Adam Williamson 的博客文章关于 EFI 模式启动如何工作。
不过,您的问题与上述任何情况都没有直接关系。相反,您无法/dev/sdb2
在 Ubuntu 中安装 ESP(就您而言)。此症状通常由 Windows“快速启动”功能引起。(请注意,许多 EFI 都有一个名称相似的无关功能。它是视窗功能相关。)您可以按照说明在 Windows 8/8.1 中禁用快速启动这里,或按照说明在 Windows 10 中这里。(许多其他页面也描述了如何执行此操作。)在某些情况下,您可能还需要禁用 Windows 休眠功能,如下所述这里。
完成这些 Windows 更改后,ESP 应该可以再次在 Ubuntu 中挂载。如果不能,您可能需要备份并重新创建它。您可以通过在命令行中明确挂载它来强制它在 Ubuntu 中挂载;或者您可以在 EFI shell 或 Windows 中备份它。完成后,在其上创建一个新的文件系统并恢复备份文件。然后您可能需要修改 的条目/etc/fstab
以使用其新序列号(在 中称为 UUID ,尽管它实际上不是)/boot/efi
来标识它。您可以在其上创建一个新的文件系统后键入以了解序列号(“UUID”)。/etc/fstab
sudo blkid /dev/sda2