在分区 (hd0,5) 中安装带有引导加载程序的 Ubuntu 17.04 后,我无法通过 EasyBCD 2.3.207(我首选的引导加载程序)启动它。我在安装 Windows 之后安装了 Ubuntu,并且不想在第一个磁盘的 MBR 上使用 grub。我可以通过 Super Grub Disk 启动 Ubuntu,但当我尝试通过 EasyBCD 启动时,无论是自动选择还是手动选择分区,它最终都会出现 Grub> 提示符。以下命令也无效:Root=(hd0,5) chanloader +1 boot
Now I am in Grub rescue > prompt. Interestingly, I now can boot into Ubuntu by:
set prefix=(hd0,6)/boot/grub
set root=(hd0,6)
insmod normal
normal
这给了我 grub 菜单,我可以选择其中的任何选项。问题是每次启动时都不可能这样做,或者使用超级 Grub 磁盘。我如何使用 BCDedit 或 EasyBCD 或 Neogrub 引导加载程序自动执行此操作(通过操作 Neogrub 的 menu.lst 文件尝试过,但没有成功)。
请帮忙,
谢谢,
西班牙小吃
答案1
终于成功了。我通过 bcdedit 在 Windows 引导加载程序中创建了一个条目,成功启动了 Ubuntu 17.04。因此,olfred 所说的“我相信 bcdedit 只适用于 UEFI”是不正确的。我也没有更新包含 Windows 7 的主磁盘的 MBR,因为这是我最不想做的事情。但是,我很感激 olfred,因为从他的评论中我猜想我在使用 grub4dos 或 Easybcd 的 neogrub 引导加载程序上浪费了时间。
详细步骤如下 - 首先禁用 Windows 的快速启动。
- 通过 Super Grub Disk 启动 ubuntu 分区。它是 (hd0,5)、sda6
- 它进入了 Grub 救援提示>
- 我通过以下方式启动 Ubuntu:set prefix=(hd0,6)/boot/grub set root=(hd0,6) insmod normal normal
- 这给了我 grub 菜单,我按下其中的第一个条目“ubuntu”即可正常启动。
- 通过以下方式在 ubuntu 分区中再次安装 grub:sudo grub-install dev/xxxy --force (xxxy 由 gparted 确定)(在我的情况下为 sdc6)
- 更新 grub : sudo update-grub
- 通过 Control + Alt + T 打开终端
- 通过以下方式创建临时挂载点:1. sudo su 2. mkdir /mnt/tmp
- 然后将代表我的磁盘中已经存在的 114 GB NTFS 分区的设备安装到此安装点(我想可以通过这种方式使用任何 NTFS 分区):mount -t ntfs-3g /dev/xxxy /mnt/tmp(xxxy 由 gparted 确定)(在我的情况下为 sdb7)
将 ubuntu 分区的前 512 个字节复制到 .bin 文件:dd if=/dev/xxxy of=/mnt/tmp/ubuntu.bin bs=512 count=1 (xxxy 由 gparted 确定) (在我的情况下是 sdc6)
退出终端并重新启动进入 Windows 7。
将 ubuntu.bin 文件从位于 sdb7 的 Windows 10 Pro 分区剪切并粘贴到 Windows 7 的根目录 (c:)
以管理员权限打开 cmd(开始 > 运行 > 框中的 cmd > 右键单击 cmd > 以管理员身份运行)
为 Ubuntu 创建菜单项:bcdedit /create /d “ubuntu” /application bootsector 返回此条目的 ID。打开记事本文件,输入条目并保存。这有助于复制粘贴需要输入的 ID 而不会出错。
指定哪个 Windows 分区包含 ubuntu.bin 文件:bcdedit /set {ID} 设备分区=c:
然后是 ubuntu.bin 文件的路径:bcdedit /set {ID} path \crunch.bin
指定 ubuntu 条目应在启动菜单的最后显示:bcdedit /displayorder {ID} /addlast
指定显示启动菜单的时间:bcdedit /timeout 15
退出 bcdedit
重新启动
在启动菜单的末尾,现在有一个新的条目“ubuntu”
已选择并输入。
Grub 菜单出现了。
选择第一个条目 – ubuntu
出现 Ubuntu 桌面。
感谢:1. Linux → 由 Iceflatline 在联想 T410 笔记本电脑上安装和配置 CrunchBang Linux。
答案2
我找到了另一种方法来实现相同的目的,这种方法稍微简单一些。同样,您的 MBR 保持不变。
使用 EasyBCD 在 BCD 中添加 Linux Ubuntu 条目。这将在您的 Windows 启动分区(系统保留)中添加两个文件:文件 ANGx 和 NST/AutoNeoGrubx.mbr,其中 x 是 BCD 中 Linux 菜单条目的计数器。
以任何可以的方式启动 Ubuntu,使用实时系统或 OP 描述的 grub 提示符。
在终端中执行以下命令(其中 XY 是从 fdisk -l 识别的磁盘/分区号,例如 /dev/sda2)
sudo su install-mbr /dev/sdXY grub-install /dev/sdXY update-grub
转储分区引导扇区的副本,但大小为 9216 字节,而不是 512 字节。原因是核心镜像驻留在额外字节内的文件。
dd if=/dev/sdXY of=sdXY.bin bs=9216 count=1
将此文件传输到 Windows(例如使用 USB 记忆棒)并重新启动 Windows。用转储的 sdXY.bin 文件替换 NST/AutoNeoGrubx.mbr。
重新启动并享受。
我也建议进行启动修复,但仅用于验证而不是修复。
请注意,此过程仅适用于具有 BIOS/MBR 配置的系统,而不适用于 BIOS/GPT 或 UEFI/GPT。我知道推荐的解决方案是将 GRUB 安装到 MBR 中,但这种替代处理方式多年来对我来说一直很安全。
答案3
除了技术术语之外,您可能希望尝试以下操作:在此处输入图片描述
当我终于注意到问题所在时,我一直忽略了显而易见的事实:Windows 中两个驱动器的驱动器号相同是大忌。NeoSmart 一直将驱动器号“C”分配给我想要启动的 Linux 驱动器。我的 Windows 中已经有驱动器“C”。解决方案:转到“工具”,您将看到“文件工具帮助”。确保 Easy BCD 位于您要使用的选定驱动器上,然后找到“BOOT”。忽略所有驱动器号并选择“BOOT”。不要通过,不要收取 200 美元。选择“BOOT”并保存您的设置。现在重新启动您的 PC。您应该会发现您的启动菜单运行良好,并且此方法也适用于 UEFI/BIOS。