从 Windows 启动管理器运行的双启动设置存在问题。我可以从 Windows 引导管理器成功加载到 grub2,但是 grub2 似乎无法定位到内核或其他东西,因为它正在将我直接放入带有以下输出的 shell:
[ Minimal BASH-like line editing is suported. For the First word, TAB
list the posible command completion. Anywhere else tab list the posible
completions of a device/filename,]
grub>
我过去使用过 Easybcd 并通过 Windows 引导加载程序成功加载了 Linux grub,但这是两个操作系统都在同一个分区上的时候,但是由于我的操作系统现在安装在不同的分区上,所以 EasyBcd 似乎无法发挥它的魔力。
一个鼓励是,如果我使用 Neo grub 引导加载程序并使用以下命令编辑配置,我能够让 Easybcd 加载工作的 Grub:
title Ubuntu 14.04
find --set-root /boot/vmlinuz-3.19.0-61-generic
kernel /boot/vmlinuz-3.19.0-61-generic ro root=/dev/sdc
initrd /boot/initrd.img-3.19.0-61-generic
但是,这在 Grub4DOS 中加载非常慢,并且截至今天,此方法已停止工作,请参阅此帖子了解详细信息)。
这是我为 Ubuntu 14.04 安装尝试的所有不同方法的 EasyBcd 设置的输出:
Default: Windows 7
Timeout: 30 seconds
Boot Drive: C:\
Entry #1
Name: Windows 7
BCD ID: {current}
Drive: C:\
Bootloader Path: \Windows\system32\winload.exe
Entry #2
Name: Ubuntu 14.04 Legacy
BCD ID: {a4f127cf-3150-11e6-8aaf-408d5cb9e442}
Drive: C:\
Bootloader Path: \NST\nst_linux.mbr
Entry #3
Name: Ubuntu 14.04 Grub2
BCD ID: {a4f127d0-3150-11e6-8aaf-408d5cb9e442}
Drive: C:\
Bootloader Path: \NST\AutoNeoGrub0.mbr
Entry #4
Name: Ubuntu Neo Grub
BCD ID: {a4f127d1-3150-11e6-8aaf-408d5cb9e442}
Drive: C:\
Bootloader Path: \NST\NeoGrub.mbr
*似乎上面看到的路径都没有指向我的 dev/sdc2/ 分区,在我的 Windows 卷管理器上,该分区将被视为 DISK1。
编辑- 在尝试为 Ubuntu/Windows 获取工作引导管理器的困惑中,您会看到 grub 和 Windows 引导管理器都已安装在许多位置。以下是所有 bootmanager 和 Grub 安装的当前位置和内容:
dev/sdb Windows7 驱动器
/dev/sdb1 - 当前为空的 512 MB fat32 分区
/dev/sdb2 - 110 GB ntfs 分区,包含 Windows7 安装。此分区包含一个“引导”文件夹,其中包含 BCD 文件和一整套语言文件夹。这是 WINDOWS BOOTLOADER 使用的文件夹。
/dev/sdb4 - 121.53 ntfs 分区,包含媒体存储
dev/sdd - Ubuntu 驱动器
dev/sdd1 - 512 MB 分区,包含一个“EFI”文件夹,其中有两个文件夹“grub”和“Ubuntu”,它们都包含完全相同的文件(grub.cfg、grubx64.efi、MokManager.efi、shium64 .efi)
dev/sdd2 - 48.83 GB ext4 分区,包含“/”文件夹和 Ubuntu 安装。
dev/sdd3 - 69.91 GB ntfs 分区,包含媒体存储
我需要做什么才能让我进入的 Grub shell 加载 Ubuntu?如何让这台机器从 Grub 中双启动?
您有两个选择 - 使用 GRUB 引导加载程序(我推荐的)或 Windows 加载程序。首先删除您之前在 Windows BCD 存储中创建的所有 Ubuntu 或 GRUB 条目。要列出所有标识符以管理员身份打开命令提示符,请执行:
bcdedit /enum all /v
要删除 Ubuntu 条目,请执行 :
bcdedit /delete {*}
对于您拥有的每个 Ubuntu 条目。将 * 替换为要删除的 Ubuntu 标识符 - 注意不要删除 Windows 条目。此外,我建议卸载 EasyBCD 以避免 BCD 操作出现更多问题。方法 1:GRUB 引导加载程序
从 Ubuntu 安装媒体启动并选择 Try Ubuntu without installation,在 Live 桌面上打开 GParted 以识别安装操作系统的磁盘和分区。在大多数情况下,磁盘是分区表
sda
上的 Windows 分区。msdos
sda1
现在安装 GRUB 引导加载程序,您可以通过它以 Legacy BIOS(
msdos
分区表)模式将 Ubuntu 和 Windows 引导到磁盘 - 因此打开终端并执行以下命令:将
sd*
(disk) 和sd**
(Ubuntu partition) 替换为您确定的字母和数字。如果系统以 UEFI BIOS 模式安装...请以 EFI 模式安装 GRUB 引导加载程序。
将
sd*
(disk),sd**
(efi partition),sd***
(Ubuntu partition) 替换为您确定的内容。启动进入 BIOS 并在 UEFI 设置中更改启动顺序 - 选择 Ubuntu 作为默认操作系统。
方法 2:Windows 引导加载程序
从 Ubuntu 安装媒体启动并选择 Try Ubuntu without installation,在 Live 桌面上打开 GParted 以识别安装操作系统的磁盘和分区。在大多数情况下,磁盘是分区表
sda
上的 Windows 分区。msdos
sda1
首先挂载Windows分区,打开终端,执行:用你之前识别的字母和数字
sudo mount /dev/sd*** /mnt
替换(Windows分区)。
sd***
复制 Ubuntu 的前 512 个字节:
dd if=/dev/sd** of=/mnt/linux.bin bs=512 count=1
将
sd**
(Ubuntu partition) 替换为您之前确定的字母和数字。启动到 Windows,以管理员身份打开命令提示符并执行以下命令:
将“标识符”替换为执行第一个命令时返回的字符、字母和数字,并将“X”替换为您希望查看 Windows 引导加载程序菜单的秒数(例如 10) - 在它自动启动之前默认操作系统。
我终于能够让 grub2 在启动时加载一个 Windows 7 条目,但是它需要大量的试验和错误。
我所做的是从安装在众多驱动器上的所有不同位置删除所有 Grub 条目,然后删除所有 EasyBcd Grub 条目。
在此之后,我启动到启动修复磁盘并恢复 MBR 以允许 Windows 正常启动,重新启动回到启动磁盘修复,然后重新安装 Grub2(在所有驱动器上)。然后我进入我的 BIOS,更改了启动磁盘并启动到 Ubuntu 并输入
sudo update-grub
只有在执行此命令后,Grub2 引导加载程序才能识别 Windows。但它并没有在这里结束,因为在 Grub2 菜单中选择 Windows 后,Windows Bootloader 仍然出现(本质上添加了另一个步骤),所以我使用 EasyBCD 禁用 Windows 引导加载程序菜单,以便 Grub 直接加载到 Windows 中而无需等待输入Windows 引导加载程序。
然后我可以使用 grub-customizer 更改 Grub2 中的引导顺序
我将奖励第一个答案的赏金,因为它是唯一的答案,而且我很高兴作者花时间对他们的解释进行彻底的解释。