将 wubi 迁移到分区后修复 grub 菜单

将 wubi 迁移到分区后修复 grub 菜单

几周前我通过 Wubi 安装了 Ubuntu 12.04,今天在https://help.ubuntu.com/community/MigrateWubi将其移动到新分区。现在我对如何清理原始 Wubi 安装有点困惑。

设置如下:两个硬盘,/dev/sda 包含我的 Windows 7 安装,/dev/sdb 是辅助驱动器,带有一个用于存放数据的大分区。我在 /dev/sdb1 上安装了 Wubi,现在已创建了两个新分区 sdb2 和 sdb3,分别用于安装和交换。

启动时,计算机会启动 Windows 启动管理器,其中有两个选项:Windows 和 Ubuntu(这是我想要的行为,因为我大部分时间都在使用 Windows,并且不想在 Windows 休眠时意外启动到 Ubuntu);但现在选择 Ubuntu 选项时 grub 加载程序突然变得相当拥挤。似乎 Wubi 一直保留在列表顶部,而迁移后的版本(在 /dev/sdb2 上)则被推到了列表的较低位置。

这让我有两个疑问:

  1. 如何从 grub 列表中删除 Wubi 安装?
  2. 现在从 Windows 内部卸载 Wubi 是否安全,同时仍允许其启动管理器指向第二个驱动器上的 Grub?

干杯。

编辑:我尝试使用下面建议的 Ubuntu-Tweak 程序,它提出了一个相当有趣的问题。有几个旧内核版本也显示在 grub 列表中,我已将其删除。尝试运行其中任何一个都会出现类似“您需要先加载内核”的错误。并sudo update-grub没有将它们从列表中删除,事实上根据状态输出,它还应该将 Windows 添加到 grub(但它没有)。重新启动进入 Windows 并运行bcdedit,看起来它正在使用 Wubi 版本的 grub,并添加了新版本(因此为什么update-grub根本没有帮助)。这是 bcdedit 输出中的相关部分:

Real-mode Boot Sector
---------------------
identifier              {816916df-c233-11e0-a9e6-883a7e390b89}
device                  partition=G:
path                    \ubuntu\winboot\wubildr.mbr
description             Ubuntu

其中“G:\ubuntu”是 Wubi 的原始安装文件夹。

当我首先运行迁移脚本时,它说正在将 Grub 安装到 /dev/sdb - 但这本身并不是一个分区。迁移脚本是否可以在某个特定位置安装 Grub,即我可以指向引导加载程序以便它使用正确版本的 Grub 的地方?(之后,我很确定关于卸载 Wubi 的问题已经没有意义了)

答案1

Wubi 迁移只会在您要迁移到的驱动器上安装 Grub 引导加载程序。在这种情况下/dev/sdb。这样做是为了让事情变得更简单(我相信这是最安全的选择)。因此,启动迁移安装的最简单方法是/dev/sdb在选项中设置为首先启动BIOS

Wubi 的启动方式 - 以及您现在的启动方式 - 是从 Windows 启动管理器(BCD 存储区)开始,wubildr.mbr(在\ubuntu\winboot目录中),然后wubildrC:\wubildr),然后grub.cfg里面Wubi 安装(root.disk)。这是您从中启动迁移安装的位置。如果您卸载 Wubi,则所有这些东西都将被删除(不是 Windows 启动管理器,但它不会显示,因为 Wubi 条目已被删除)。

因此,在删除 Wubi 后​​,您无法使用 Wubi 启动方法启动迁移的安装。您可以将 grub 安装到迁移的分区并使用来easyBCD执行此操作。但我个人不建议这样做。如果您必须从包含 windows 的驱动器启动(在您的例子中/dev/sda),请执行以下操作:

  1. 引导迁移的安装
  2. 将 grub 安装到 MBR。假设您从其启动的驱动器是,/dev/sda您将运行:sudo grub-install /dev/sda
  3. 更改启动顺序,使 Windows 成为第一启动顺序。

代码:

sudo mv /etc/grub.d/30_os-prober /etc/grub.d/09_os-prober
sudo update-grub

最后的这些命令只是改变了 Grub 生成菜单项的顺序,将 Windows 项(从中生成30_os-prober)放在第一位。

附言:由于您已经在迁移的安装中调整了 grub 菜单,因此您可能只需要安装 Grub 就可以/dev/sda使一切正常工作,并且可以不用管 grub 脚本。

相关内容