我已在第二个硬盘上安装了 Windows 7,并且刚刚在第一个硬盘上安装了 Debian。遗憾的是,引导加载程序 (grub2) 未选择我现有的 Windows 安装,我不知道原因。
# os-prober
不返回任何内容(eek)。
这是我的磁盘布局:
# fdisk -l
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000a3b4a
Device Boot Start End Blocks Id System
/dev/sdb1 2048 389595713 194796833 7 HPFS/NTFS/exFAT
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00058a73
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 959997951 479997952 83 Linux
/dev/sda2 959999998 976771071 8385537 5 Extended
/dev/sda5 960000000 976771071 8385536 82 Linux swap / Solaris
我尝试通过编辑文件强制 grub2 选择我的 Windows 安装/etc/grub.d/40_custom
:
# cat /etc/grub.d/40_custom
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry "Windows 7" {
insmod ntfs
set root='(hd1,0)'
search --no-floppy --fs-uuid --set BC9839B098396A52
chainloader +1
}
然后运行update-grub
,但当我尝试在 grub 菜单中选择 Windows 7 条目时,它只显示“BOOTMGR 丢失”。有人有什么建议吗?我真的负担不起重新安装 Windows 7 的费用,所以这真的是最后的手段 :-(
答案1
看来您的 Windows Bootloader 已损坏,您应该尝试使用恢复磁盘修复它。
由于您有两个硬盘,因此您可以轻松防止任何覆盖:只需在 Windows 恢复磁盘上启动之前断开 Linux HDD 即可。这样,Windows 就不会以任何方式干扰 Debian 或 GRUB。
如果你很幸运,Windows Recovery 就足够了。但是由于你缺少一个分区,它可能无法工作。如果不是,你可能不得不重新安装你的 Windows(无论如何它都无法启动)。如果是这种情况,请在拔下 Linux HDD 的情况下执行 Windows 安装,再次避免不必要的干扰。
之后,将其重新插入,启动 Debian 并运行update-grub
。如果 Windows 恢复成功,os-prober
应该会找到它。