我有一台相当新的 PC。刚买的时候,我将其设置为双启动 Windows XP 和 OpenSUSE Linux。当 OpenSUSE 莫名其妙地死机(严格来说只是 X 和/或 KDE)时,在经历了无数的驱动程序问题、配置问题等之后,这成了压垮骆驼的最后一根稻草。
说实话,Linux 主要是我的互联网操作系统,其他大部分工作都是在 Windows XP 上完成的 - 但在过去几年里,我不再愿意在互联网上信任它(以太网驱动程序已禁用)。
幸运的是,我以很优惠的价格买到了 Windows 7 Home Premium 的正版。
当我安装 Windows 7 时,它拒绝在引导加载程序中识别 Windows XP。我没有太担心 - 我用 Ubuntu 替换了 OpenSUSE,并使用 Grub 进行多重引导。
现在我的硬盘上有以下分区...
1 : 100GB : Windows XP main partition - Drive C in WinXP, not mounted in Win7
2 : 100MB : Windows 7 reserved - not mounted in anything
3 : 100GB : Windows 7 main partition - Drive C in Win7, not mounted in WinXP
4 : ...
4a : 166GB : Data partition - Drive G in WinXP and Win7
4b : 100GB : Ext3 partition for Ubuntu
但是,现在我使用的是 Windows 7,并且转换了所有备份内容(Firefox 配置文件移至 Win7 等),我不再需要或不想安装 Linux - 我宁愿拥有更大的共享数据分区。我已经有几周没有启动 Linux 了。Windows 7 已经承担了 Web 浏览器主机的角色,虽然它看起来可能并不比 KDE 好(我真的必须找到一个月相小工具 - 呃,抱歉,小工具),但驱动程序问题和大多数配置麻烦不再发生。仅有的我在这里描述的基本上就是我所遇到的 Windows 7 配置麻烦。
每个操作系统都将自己视为驱动器 C,而根本看不到其他操作系统主分区,这最初是因为 Windows 7 安装方式的另一个奇怪之处,但在我看来这也是一个很好的方案,现在我想保留这种状态。
所以...我想摆脱 Linux(实际上,它可能会在 VirtualBox 中继续存在,但不会作为主操作系统)。但 Grub 将所需的文件存储在该 Linux 分区中。我可以恢复到 Windows 7 引导加载程序(通常的启动 CD 和 fixmbr,fixboot 技巧可能适用于 Win7,或类似的东西),但我已经知道这无法检测到我的 Windows XP。
我尝试进行了一些研究。我发现了 GRUB4DOS 和 WINGRUB。我发现 GRUB4DOS 本身实际上是用于 DOS 的 - 而不是 Windows。WINGRUB 的最新下载日期是 2004 年,似乎与 Windows 7 不兼容。
我找到了各种救援启动盘映像等,例如 Rescatux。我找到了几种使用这些映像修复 GRUB 的方法,假如我安装了 Linux。不过,我很可能遗漏了某些东西,因为这些东西的强大工具似乎只是将您转入虚拟终端以使用命令行工具,而没有太多关于可用工具或如何使用它们的指示。这些东西中最巧妙的技巧可能是包括一个有效的互联网连接和网络浏览器,但即使这样我也找不到我需要的帮助……
我以前很乐意在 Windows XP 中编辑 boot.ini - 但 Windows 7 中没有 boot.ini,而且我尝试以 Windows 7 方式解决问题时,运气并不好。
最后,EasyBCD 似乎是我需要的魔法。我安装了它,似乎很容易将 Windows XP 添加到我的启动菜单中 - 但后来它告诉我找不到 Windows XP。显然,Windows XP必须位于已在 Windows 7 中安装并指定驱动器号的分区中。它无法识别并且不会引用该未安装的分区。
有人能推荐一个可以解决这个问题的方法吗?因为我没有信用卡,所以网上支付几乎是不可能的,所以任何软件都需要是免费的——至少对于尝试来说,这样当我知道它可行时,我只需要费力地寻找其他支付方式。
答案1
最后...
在 surasbs 的回答中留下评论后,我终于找到了解决这个问题的方法。不过要警告 - Ubuntu 分区在此过程中被删除了,没有任何警告或正当理由。换句话说,在尝试做这种事情之前,请先备份映像。Clonezilla 可以对大多数 Linux 分区进行映像处理。
正确的...
如果您很幸运,Windows 7 安装 DVD 中会内置修复选项。如果您不走运,东芝等公司会为您“简化”您的 DVD。在这种情况下,您仍然可以创建修复启动 CD...
Control Panel -> System and Security -> Backup and Restore
Create a system repair disc
在开始之前,必须将 Windows 7 主分区标记为活动(磁盘管理),否则某些修复操作将无法进行。
因此,从修复 CD 启动时,我需要使用控制台执行某些操作,特别是以下命令...
bootrec /fixmbr
bootrec /fixboot
bootrec /scanos
bootrec /rebuildbcd
我还需要运行自动修复选项来修复“丢失或损坏的启动管理器”。
这使我的 Windows 7 能够正确启动,但也破坏了我的 Ubuntu 分区。我注意到,如果我将 Windows XP 分区标记为活动(磁盘管理),Windows XP 将在下次启动时启动,而通过将 Windows 7 标记为活动,我就可以重新启动回到 Windows 7。
为了获得启动菜单,我找到了一个链接,并得出了以下说明...
http://www.kombitz.com/2009/01/13/how-to-add-windows-xp-to-windows-7-boot-manager/
可以调整这些说明以避免使用驱动器号。要了解如何引用分区,请使用...
diskpart
list volume
exit
我需要的调整命令是......
bcdedit /set {ntldr} device partition=\Device\HarddiskVolume1
然而,我得到的结果仍然不起作用。无奈之下,我只能为我的 Windows XP 分区分配一个驱动器号,使用 EasyBCD 编辑启动菜单,然后从该分区中删除驱动器号。
但是,我注意到 EasyBCD 使用的是路径\NST\ntldr
而不是\ntldr
。我真的不知道这是怎么回事——看起来不同的路径是 EasyBCD 自己设置的……
http://neosmart.net/wiki/display/EBCD/Windows+XP 参见——“NTLDR 和 EasyLDR 的机制”
所以我真的不知道为什么 bcdedit 方法不起作用,但目前,我有一个可用的启动菜单,所以我很高兴。
答案2
我建议从以下位置下载适合您架构的 Parted Magic 版本:http://partedmagic.com/doku.php?id=downloads
只需将其刻录为 .iso 格式的 CD - 然后(确保您的 BIOS 设置设置为从 CD 启动)启动磁盘。无需安装 - 它将从内存运行。您将在桌面上看到一些图标,单击 gparted 图标并查看(很可能)您的 /dev/sda 驱动器...这应该列出了您的所有分区...您可以删除不需要的分区(即 Ext3)并调整要保留的分区的大小。虽然它可能会导致调整分区大小的问题,但我从未遇到过这个问题,我自己也广泛使用过这个软件。如果在删除旧分区后问题仍然存在,请确保“启动标志”设置为启动您的 Windows 启动加载程序。
答案3
最好的办法是制作一张 XP CD 和一张 Windows 7 DVD。简而言之,您需要将 XP 分区设为可启动分区。
将 XP CD 启动文件夹中的文件复制到 XP 分区的根目录中。
使用 diskpart 将 XP 分区标记为活动分区。
- 打开命令提示符
- 类型
diskpart
list disk
然后输入select disk
数字list partitions
然后输入select partition
数字- 类型
active
这会将您的 XP 分区设置为可启动分区
启动 WIndows 7 DVD 并选择修复
它应该修改引导加载程序以列出 Windows 7 和 XP。