windows 10 和 ubuntu 双启动

Abh*_*hor 2 windows-8 14.04 windows-10

在 Windows 10 旁边安装 ubuntu 时,我们会遇到与在 Windows 8 旁边安装 ubuntu 时遇到的相同问题吗?微软修复了吗?

nob*_*ody 6

让我写一些问题来帮助其他可能遇到相同问题的人。

我的电脑预装了 Windows 8,所以我缩小了 Windows 分区,为 Ubuntu 腾出空间。它是如何工作的去年。

在 Windows 10 升级中第二次重新启动后,计算机不再启动。grub 只显示 grub 救援命令提示符。后来我发现问题是因为windows以某种方式改变了分区方案。引导分区不再是 grub 预期的位置。我不知道这是如何以及为什么发生的。

首先你可以做的是用“ls”查看grub救援中的分区。我的是 (hd0,gpt1), (hd0,gpt2) 等。试着找出哪个分区是你的引导分区。我尝试了以下命令,直到找到正确的分区:

ls (hd0,gpt1)/

ls (hd0,gpt1)/boot

ls (hd0,gpt2)/
Run Code Online (Sandbox Code Playgroud)

等等。

然后输入setgrub 救援提示。它将显示 grub 查找其文件的位置。就我而言,(hd0,gpt6) 已移至 (hd0,gpt7)。设置命令显示:

prefix=(hd0,gpt6)/boot/grub

root=hd0,gpt6
Run Code Online (Sandbox Code Playgroud)

更改前缀和根设置以指向正确的分区。在我的情况下,命令是:

set prefix=(hd0,gpt7)/boot/grub

set root=(hd0,gpt7)
Run Code Online (Sandbox Code Playgroud)

然后从救援模式切换到正常模式:

insmod normal

normal
Run Code Online (Sandbox Code Playgroud)

你应该得到正常的 grub 菜单。从现在开始,您可以启动 Windows 并完成 Windows 升级。问题是你必须在每次重启时告诉 grub 救援正确的分区。我就是这样做的。我把 grub 的问题留到以后,因为我不确定 Windows 是否会对分区或引导做更多的更改。

当 Windows 完成后,我开始解决 grub 问题。按“e”编辑 Ubuntu 的启动选项。我将所有 (hd0,gpt6) 更改为 (hd0,gpt7) 并启动了 Ubuntu。但是,我使用加密分区和 cryptswap。在启动时 Ubuntu 要求我输入密码。幸运的是我在安装 Ubuntu 时保存了它并在启动时输入它。Ubuntu 启动没有问题。我更正了 /boot/grub/grub.cfg,我用 (hd0,gpt7) 替换了 (hd0,gpt6) 并执行了sudo grub-install.

现在只是加密。由于 Ubuntu 根分区被提升为 1(从 6 升至 7),交换分区也发生了类似的变化。我不得不将 /etc/crypttab 文件更改为指向 /dev/sda8 而不是 /dev/sda7。

我只为 Ubuntu 使用两个分区(root 和 swap)。如果与 Windows 共存的其他操作系统使用更多分区,则可能需要进行更多更改。特别是如果分区是根据它们的编号而不是它们的 UUID 安装的。看看你的 /etc/fstab。如果分区由 UUID 标识,则应该没有问题。但是,如果有 /dev/... 行,则如果更改了该数字,则应更正该数字。