grub2不会在双启动时加载Ubuntu

从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 bootloader成功加载了一个Linux grub,但这是两个操作系统都在同一个分区上,但由于我的操作系统现在安装在不同的分区上,所以EasyBcd似乎无法发挥其魔力。

ONe的鼓励是,如果我使用Neo grub bootloader并编辑confg,我可以让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中加载非常慢,并且截至今天这种方法已停止工作。有关详细信息,请参阅此POST 。

以下是我为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 Volume Manager上将其视为DISK1。


编辑 – 在尝试获得Ubuntu / Windows的工作启动管理器的困惑中,您将看到grub和Windows启动管理器已经安装在许多位置。 以下是所有bootmanager和Grub安装的当前位置和内容:

dev / sdb Windows7驱动器

/ dev / sdb1 – 512 MB fat32分区,当前为空

/ dev / sdb2 – 包含Windows7安装的110 GB ntfs分区。 这个分区包含一个’Boot’文件夹,其中包含BCD文件和一整套langauage文件夹。 这是WINDOWS BOOTLOADER使用的文件夹。

/ dev / sdb4 – 包含媒体存储的121.53 ntfs分区


dev / sdd – Ubuntu Drive

dev / sdd1 – 包含’EFI’文件夹的512 MB分区,其中包含两个文件夹’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条目,请为每个Ubuntu条目执行: bcdedit /delete {*} 。 将*替换为要删除的Ubuntu标识符 – 注意不要删除Windows条目。 此外,我建议卸载EasyBCD以避免BCD操作的进一步问题。

方法1:GRUB引导加载程序

从Ubuntu安装介质引导并选择Try Ubuntu而不安装,一旦在Live桌面上打开GParted以识别安装操作系统的磁盘和分区。 在大多数情况下,磁盘是sda ,即msdos分区表sda1上的Windows分区。

现在安装GRUB引导加载程序,您可以从传统BIOS( msdos分区表)模式将Ubuntu和Windows引导到磁盘 – 因此打开终端并执行以下命令:

 sudo mount /dev/sd** /mnt sudo grub-install --boot-directory=/mnt/boot /dev/sd* 

用您识别的字母和数字替换sd* (磁盘)和sd** (Ubuntu分区)。

如果系统安装在UEFI BIOS模式下…在EFI模式下安装GRUB引导加载程序。

 sudo mount /dev/sd*** /mnt sudo mount /dev/sd** /mnt/boot/efi for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done sudo chroot /mnt grub-install /dev/sd* update-grub 

sd* (磁盘), sd** (efi分区), sd*** (Ubuntu分区)替换为您已识别的内容。

启动进入BIOS并更改UEFI设置中的引导顺序 – 选择Ubuntu作为默认操作系统。

方法2:Windows启动加载程序

从Ubuntu安装介质引导并选择Try Ubuntu而不安装,一旦在Live桌面上打开GParted以识别安装操作系统的磁盘和分区。 在大多数情况下,磁盘是sda ,即msdos分区表sda1上的Windows分区。

首先挂载Windows分区,打开终端,执行: sudo mount /dev/sd*** /mnt
sd*** (Windows分区)替换为您之前识别的字母和数字。

复制Ubuntu的前512个字节: dd if=/dev/sd** of=/mnt/linux.bin bs=512 count=1
用你之前识别过的字母和数字替换sd** (Ubuntu分区)。

启动到Windows,以管理员身份打开命令提示符并执行以下命令:

 bcdedit /create /d Ubuntu /application bootsector bcdedit /set {identifier} device partition=c: bcdedit /set {identifier} path \linux.bin bcdedit /displayorder {identifier} /addlast bcdedit /timeout X 

将“identifier”替换为执行第一个命令时返回的字符,字母和数字,并将“X”替换为要查看Windows启动加载程序菜单的秒数(例如10) – 在它自动启动之前默认操作系统。

我终于能够在启动时使用Windows 7条目加载grub2,但是需要大量的试验和错误。

我所做的是从众多驱动器上安装的所有不同位置删除所有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中的启动顺序

 sudo add-apt-repository ppa:danielrichter2007/grub-customizer sudo apt-get update sudo apt-get install grub-customizer 

我将奖励赏金给第一个答案,因为这是唯一的答案,而且我很高兴作者花时间彻底解释。