我恢复了 Windows,但在此过程中丢失了 ubuntu 9 的 grub。现在我想更改 NTLDR,以便可以进行双重启动。有人可以帮忙吗?
答案1
我不确定你到底想做什么。如果你想恢复 GRUB 以便再次启动 Ubuntu,请按照此处的 Ubuntu 社区文档进行操作:安装 Windows 后恢复 Ubuntu。如果您想使用 NTLDR 启动,并且列表中有 Ubuntu 选项,请按照以下指南操作:如何使用 NTLDR 实现 Windows NT/2000/XP 和 Linux 双启动
答案2
这是一个非常复杂的过程。如果你做错了什么,你就会被锁定在自己的电脑之外。恢复可能非常耗时。准备好承受几个小时的痛苦和恐惧吧!
第一的,请准备一些应急启动媒体,例如您原来的 Linux 安装 CD/DVD 或 USB 笔式驱动器。某些 Linux 发行版具有恢复模式,该模式允许您将安装连接到启动提示符(即 chroot),从而允许您恢复 Linux 启动能力(例如:从 chroot 运行 grub-install),或者直接从安装启动(罕见)。
此外,准备好 Windows 安装 DVD 或笔式驱动器以供恢复选项。
另一件需要考虑的事情是拥有另一台电脑,至少可以让您在互联网上搜索一些信息。理想情况下,这是一台电脑,因为它还允许您在需要时将一些文件复制到 USB 笔式驱动器。iPad 或 Android 平板电脑等平板电脑仅适用于互联网搜索,而不能用于此类复制操作。
下一个,尝试所有选项:在您打算使用它们的计算机上启动所有 CD/DVD 和 USB 笔式驱动器。有些可能不起作用,因此您必须决定是否重试或是否跳过使用它们。
然后(只有这样)你才可以安全地开始:本博客文章介绍了如何将 Linux 引导加载程序 GRUB 添加到 Windows 7 的启动选项中。它可能适用于更高版本的 Windows,也可能不适用。但是,既然BCDEDIT
已经使用,那么它很有可能也适用于更高版本。但是,所述方法使用基于 BIOS 的启动,即分区启动扇区,这不会使其在基于 EFI 的系统下(那么容易)工作。
从这里可以看出,多年来启动变得多么复杂:我们有基于 BIOS 的启动,即使用主引导记录 (MBR) 和引导扇区。但是,我们现在也有基于 (U)EFI 的启动 – (通用)可扩展固件接口,古老 BIOS 的后继者,使用 EFI 系统分区 (ESP) 和适当的 EFI 可执行文件。系统是 32 位 EFI 还是 64 位 EFI 有很大区别 – 错误的架构将无法工作。然后我们有混合安装,因为 EFI 系统通常还具有兼容性支持模块 (CSM),它使用引导扇区模拟旧 BIOS 启动行为。因此,在 EFI(带有 CSM)上,您可以通过两种方式启动:使用 CSM 和引导扇区或使用 ESP 和 EFI 可执行文件作为引导加载程序。
我自己目前也在尝试使用 Windows 引导加载程序来启动 GRUB。我使用基于 EFI 的系统,该系统使用来自 ESP 的 EFI 加载程序启动两个操作系统。但 Windows 7 是使用与 BIOS 兼容的 EFI-CSM(兼容性支持模块,即 EFI 下的 BIOS 仿真)启动的。因此,Windows 7 是 1) 通过混合 MBR 分区启动的,2) 通过该分区的 VBR 启动的。现在,从此配置启动 Linux 使一切变得更加复杂,因为 Linux /boot 分区位于非混合 GPT 分区上。(我为什么要这样做呢?因为使用 CSM 时,VGA BIOS 也包含在 Linux 中以加载 DRM,而仅使用 EFI 启动时不存在 DRM。添加第二个 CSM 启动选项也并非没有复杂性,我有两个选择:使用从 Windows 和 Linux 的引导扇区启动的 PC-GRUB,或者从 Windows 引导加载程序中启动 Linux。)
就我的具体情况而言,很可能无法设置这样的启动配置……
我知道这其实没什么帮助,但如果你尝试一下的话确保有一个启动系统的备份计划。 祝你好运!
答案3
在 BIOS 模式(不是 UEFI!)下,与 NTLDR 一起工作的是设置 GRUB 以进行 MBR,但保留原始 MBR 并将修改后的 GRUB 的 MBR 安全地保存到一个文件中,然后将此文件添加到boot.ini
NTLDR。
原始来源可以在这里找到这里。
步骤:
- 备份原始 MBR。在 Linux 中,请执行
dd if=/dev/sda of=/tmp/mbr_saved.bin bs=512 count=1
(以 root 身份或使用sudo
)
当然,您必须在 Windows NTLDR 和原始 MBR 仍然存在时执行此操作。因此,这必须从 Linux LiveCD 或类似设备(USB 拇指驱动器)执行。将此 MBR 保存到安全的地方(USB 笔式驱动器或类似设备)以供日后使用! - 像往常一样安装 Linux,但不要选择将 GRUB 安装到 MBR!相反,让它驻留在 Linux 分区的引导扇区中,或者根本不安装它。只需确保您有办法再次引导到此 Linux,至少通过
chroot
LiveCD(或类似方式)引导。 - 现在,启动 Linux(或 chrooted),手动将 GRUB 安装到 MBR。与上述方法相同,将此 MBR 保存到文件(例如
grub2.mbr
),该文件位于 Windows 安装的根目录中(在 Windows 术语中,NTLDR 和 boot.ini 位于其中C:\
)。 - 恢复原始 MBR,但不恢复分区表 — 因为它将在 Linux 安装后被修改...
dd if=mbr_saved.bin of=/dev/sda bs=1 count=446
确保 Windows 分区具有活动或“可启动”标志,例如使用fdisk
。
另一种方法是使用 Windows XP 安装光盘。在救援可以开始命令行提示符(“恢复控制台”+登录到已安装的 Windows 直到看到命令行),这里fixmbr
也应该恢复原始 MBR 代码而不修改分区表。 - 将 GRUB MBR 文件添加到 boot.ini:
c:\grub2.mbr="GRUB2 Bootloader"
注意:这仅适用于 NTLDR,因此适用于 Windows NT 至 Windows XP (NT 5.1)。从 Vista 开始,使用 BootMgr,所述方法将不再有效!