Windows/Ubuntu 双启动时 ESP 位于错误磁盘上

Windows/Ubuntu 双启动时 ESP 位于错误磁盘上

我有一台预装了 HDD 和 Windows 8 的笔记本电脑。我用 SSD 替换了 HDD,并用 optibay 将 HDD 放置在光驱托架的位置。我在 SSD 上安装了新的 Windows,之后又安装了 Ubuntu。

我的问题是,从 GRUB 启动到 Windows 时,经常会收到以下错误消息:

错误:不是有效的根设备。

这种情况并不总是发生,但大约有一半的时间会发生。当这种情况发生时,如果我进入 UEFI 启动设置并更改启动顺序,使 Windows 领先于 Ubuntu (GRUB),Windows 仍然可以启动。当然,在这种情况下,我只能启动 Windows,如果我想启动 Ubuntu,我必须返回启动设置并改回顺序。相当烦人。

(这种情况已经持续了很长一段时间,但现在我才真正受够了,因为我必须频繁地在两个操作系统之间切换。)

我调查了这个问题,结果发现出于某种原因,当我在 SSD 上安装 Windows 时,它仍然决定使用已经在 HDD 上创建的 ESP。Ubuntu 也将自己注册到 sdb1 上的同一个 ESP 中,但也在 sda3 上创建了自己的 ESP。

当我启动 Ubuntu 时,/dev/sda3 被挂载到 /boot/efi,其中只有 Ubuntu 启动文件:

> ls -lR /boot/efi
/boot/efi:
total 4
drwxr-xr-x 3 root root 4096 feb 13  2016 EFI

/boot/efi/EFI:
total 4
drwxr-xr-x 2 root root 4096 feb 13  2016 ubuntu

/boot/efi/EFI/ubuntu:
total 3444
-rwxr-xr-x 1 root root     126 aug 20 13:50 grub.cfg
-rwxr-xr-x 1 root root  958328 aug 20 13:50 grubx64.efi
-rwxr-xr-x 1 root root 1271672 aug 20 13:50 MokManager.efi
-rwxr-xr-x 1 root root 1289424 aug 20 13:50 shimx64.efi

sdb1 没有自动挂载。如果我挂载它,我可以看到 Ubuntu 和 Windows 的启动文件(文件太多,无法全部列出):

> ll sdb1/EFI/
total 20
drwxr-xr-x 5 root root 4096 mrt 13  2015 ./
drwxr-xr-x 6 root root 4096 jan  1  1970 ../
drwxr-xr-x 2 root root 4096 mrt 13  2015 Boot/
drwxr-xr-x 4 root root 4096 okt 12  2014 Microsoft/
drwxr-xr-x 2 root root 4096 mrt 13  2015 ubuntu/

此处的文件夹ubuntu似乎也包含所有相关文件,除了较旧的文件:

sdb1/EFI/ubuntu:
total 3444
-rwxr-xr-x 1 root root     126 jan  8  2016 grub.cfg
-rwxr-xr-x 1 root root  958328 jan  8  2016 grubx64.efi
-rwxr-xr-x 1 root root 1271672 jan  8  2016 MokManager.efi
-rwxr-xr-x 1 root root 1289424 jan  8  2016 shimx64.efi

我对这种情况不太满意,理想情况下我希望 HDD (sdb) 仅用作数据存储,这样我就可以根据需要将其移除。当然,目前这是不可能的,因为 (更完整的) ESP 位于该磁盘上。

我还怀疑这在某种程度上导致了error: not a valid root device我之前描述的问题。

您建议我如何解决这种情况?

相关内容