我正在尝试设置一台双启动 Windows 7 和 Ubuntu 的机器。首先安装了 Windows 7,一切似乎都很好。安装了 Ubuntu 10.04(以避免默认安装 unity,很多人跟我提到这很烦人)。
现在,当从 grub 菜单中选择 Windows 7 时,它只是空白屏幕并返回到 grub 菜单。
以下是启动信息脚本的结果。尝试运行 testdisk,并让其检查 Windows 启动扇区;它表示启动扇区和备份启动扇区均正常且相互匹配。
但是如果 Windows 启动扇区没有问题,为什么通常的“chainloader +1”方法不起作用呢?
也尝试过在论坛上查找类似的问题,但他们似乎大多是那些不小心将 grub 安装到 windows 分区而不是 MBR 的人——根据 bootinfo 脚本结果,我们在这里没有犯这个特定的错误。
Boot Info Script 0.60 from 17 May 2011
============================= Boot Info Summary: ===============================
=> Grub2 (v1.97-1.98) is installed in the MBR of /dev/sda and looks at sector
1 of the same hard drive for core.img. core.img is at this location and
looks in partition 2 for /boot/grub.
=> No boot loader is installed in the MBR of /dev/sdb.
sda1: __________________________________________________________________________
File system: Extended Partition
Boot sector type: Windows Vista/7
Boot sector info:
sda5: __________________________________________________________________________
File system: vfat
Boot sector type: FAT32
Boot sector info: According to the info in the boot sector, sda5 starts
at sector 0. But according to the info from fdisk,
sda5 starts at sector 126.
Operating System:
Boot files:
sda2: __________________________________________________________________________
File system: ext2
Boot sector type: -
Boot sector info:
Operating System: Ubuntu 10.04.3 LTS
Boot files: /boot/grub/grub.cfg /etc/fstab /boot/grub/core.img
sda3: __________________________________________________________________________
File system: ntfs
Boot sector type: Windows Vista/7
Boot sector info: No errors found in the Boot Parameter Block.
Operating System: Windows 7
Boot files: /bootmgr /Boot/BCD /Windows/System32/winload.exe
sdb1: __________________________________________________________________________
File system: vfat
Boot sector type: FAT32
Boot sector info: According to the info in the boot sector, sdb1 starts
at sector 0. But according to the info from fdisk,
sdb1 starts at sector 63.
Operating System:
Boot files:
============================ Drive/Partition Info: =============================
Drive: sda _____________________________________________________________________
Disk /dev/sda: 300.1 GB, 300069052416 bytes
255 heads, 63 sectors/track, 36481 cylinders, total 586072368 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
Partition Boot Start Sector End Sector # of Sectors Id System
/dev/sda1 63 217,439,774 217,439,712 5 Extended
/dev/sda5 126 217,439,774 217,439,649 b W95 FAT32
/dev/sda2 217,439,775 401,753,519 184,313,745 83 Linux
/dev/sda3 * 401,753,520 586,067,264 184,313,745 7 NTFS / exFAT / HPFS
Drive: sdb _____________________________________________________________________
Disk /dev/sdb: 41.2 GB, 41174138880 bytes
255 heads, 63 sectors/track, 5005 cylinders, total 80418240 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
Partition Boot Start Sector End Sector # of Sectors Id System
/dev/sdb1 63 80,405,324 80,405,262 b W95 FAT32
"blkid" output: ________________________________________________________________
Device UUID TYPE LABEL
/dev/sda2 626bd315-3ecc-4724-96a4-39f00b5f6331 ext2 L
/dev/sda3 457351F40CFFDE49 ntfs C
/dev/sda5 7ED4-1FA1 vfat Data
/dev/sdb1 001A-9858 vfat Internal 40
================================ Mount points: =================================
Device Mount_Point Type Options
/dev/sda2 / ext2 (rw,errors=remount-ro)
=========================== sda2/boot/grub/grub.cfg: ===========================
--------------------------------------------------------------------------------
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
load_env
fi
set default="0"
if [ ${prev_saved_entry} ]; then
set saved_entry=${prev_saved_entry}
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z ${boot_once} ]; then
saved_entry=${chosen}
save_env saved_entry
fi
}
function recordfail {
set recordfail=1
if [ -n ${have_grubenv} ]; then if [ -z ${boot_once} ]; then save_env recordfail; fi; fi
}
insmod ext2
set root='(hd0,2)'
search --no-floppy --fs-uuid --set 626bd315-3ecc-4724-96a4-39f00b5f6331
if loadfont /usr/share/grub/unicode.pf2 ; then
set gfxmode=640x480
insmod gfxterm
insmod vbe
if terminal_output gfxterm ; then true ; else
# For backward compatibility with versions of terminal.mod that don't
# understand terminal_output
terminal gfxterm
fi
fi
insmod ext2
set root='(hd0,2)'
search --no-floppy --fs-uuid --set 626bd315-3ecc-4724-96a4-39f00b5f6331
set locale_dir=($root)/boot/grub/locale
set lang=en
insmod gettext
if [ ${recordfail} = 1 ]; then
set timeout=-1
else
set timeout=10
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Ubuntu, with Linux 2.6.32-38-generic-pae' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,2)'
search --no-floppy --fs-uuid --set 626bd315-3ecc-4724-96a4-39f00b5f6331
linux /boot/vmlinuz-2.6.32-38-generic-pae root=UUID=626bd315-3ecc-4724-96a4-39f00b5f6331 ro quiet splash
initrd /boot/initrd.img-2.6.32-38-generic-pae
}
menuentry 'Ubuntu, with Linux 2.6.32-38-generic-pae (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,2)'
search --no-floppy --fs-uuid --set 626bd315-3ecc-4724-96a4-39f00b5f6331
echo 'Loading Linux 2.6.32-38-generic-pae ...'
linux /boot/vmlinuz-2.6.32-38-generic-pae root=UUID=626bd315-3ecc-4724-96a4-39f00b5f6331 ro single
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-2.6.32-38-generic-pae
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
insmod ext2
set root='(hd0,2)'
search --no-floppy --fs-uuid --set 626bd315-3ecc-4724-96a4-39f00b5f6331
linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
insmod ext2
set root='(hd0,2)'
search --no-floppy --fs-uuid --set 626bd315-3ecc-4724-96a4-39f00b5f6331
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows 7 (loader) (on /dev/sda3)" {
insmod ntfs
set root='(hd0,3)'
search --no-floppy --fs-uuid --set 457351F40CFFDE49
chainloader +1
}
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/40_custom ###
# 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.
### END /etc/grub.d/40_custom ###
--------------------------------------------------------------------------------
=============================== sda2/etc/fstab: ================================
--------------------------------------------------------------------------------
# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
# / was on /dev/sda2 during installation
UUID=626bd315-3ecc-4724-96a4-39f00b5f6331 / ext2 errors=remount-ro 0 1
--------------------------------------------------------------------------------
=================== sda2: Location of files loaded by Grub: ====================
GiB - GB File Fragment(s)
125.679679394 = 134.947528192 boot/grub/core.img 2
125.573421001 = 134.833434112 boot/grub/grub.cfg 1
125.532954693 = 134.789983744 boot/initrd.img-2.6.32-38-generic-pae 3
125.523200512 = 134.779510272 boot/vmlinuz-2.6.32-38-generic-pae 2
125.532954693 = 134.789983744 initrd.img 3
125.523200512 = 134.779510272 vmlinuz 2
答案1
如果 Windows 出现任何问题,例如休眠或需要 chkdsk,它通常将无法从 grub 启动。
如果您从 Ubuntu 安装程序调整大小,Windows 引导扇区需要修复,chkdsk 可以完成此操作。但您只能从 Windows 或 Windows 修复 CD 运行 chkdsk。
少数人能够使用 grub 启动中的 f8,但速度太快,通常不起作用。如果您没有 Windows 修复 CD,还有第三方 Windows 工具可以运行 chkdsk。您应该有适用于您安装的每个系统的当前版本的修复工具 CD 或闪存驱动器。
免费版本中还提供 chkdsk 和一些其他 Windows 修复功能:
http://www.partitionwizard.com/features.html
可能能够从 Hiren 的启动 CD 运行 chkdsk。(mini xp。)Hiren 的启动 CD,然后在 XP 上执行 chkdsk
易我分区大师
答案2
插入您的 Windows 7 磁盘并选择Repair your computer
。startup repair
将
安装 Windows 7 启动菜单,然后将您的 ubuntu 添加easyBCD
到 Windows 7 启动加载程序。
答案3
尝试更改/Boot/BCD
为/boot/BCD
“我认为案例很重要”。