从 11.10 更新至 12.04 后,Grub 无法启动 Windows

从 11.10 更新至 12.04 后,Grub 无法启动 Windows

感谢您的时间阅读本文,情况如下:

我从 11.10 升级到了 12.04,一切都很顺利,直到我重新启动,我成功地将 11.10 与 Windows Vista 进行了双启动。当我重新启动时,我的 GRUB 就崩溃了,无论我选择什么选项,它都说找不到分区或类似的东西...启动到拇指驱动器上的实时版本并从那里运行 bootrepair 解决了这个问题...但仅适用于 ubuntu,当我尝试启动到 Windows 时,它只会返回到 GRUB。我不在家,这是我随身携带的东西的清单...

  • 1 个 4GB 的 U 盘,空的
  • 1 个 8GB 拇指驱动器,可启动 Windows Vista 安装程序
  • 1 台旧笔记本电脑,我试图保存的那台,光驱不存在
  • 2 Mbps 互联网连接

您能帮助我重新回到我的 Windows 而不用重新安装 Windows 吗?或者至少告诉我如何通过虚拟机等使用我的 Illustrator?

这是我的 grub cfg

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by 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
  set have_grubenv=true
  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
}

function load_video {
  insmod vbe
  insmod vga
  insmod video_bochs
  insmod video_cirrus
}

insmod part_msdos
insmod ext2
set root='(hd0,msdos2)'
search --no-floppy --fs-uuid --set=root 1063e402-b14f-45e5-92b6-d20a2e3a717e
if loadfont /usr/share/grub/unicode.pf2 ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  insmod part_msdos
  insmod ext2
  set root='(hd0,msdos2)'
  search --no-floppy --fs-uuid --set=root 1063e402-b14f-45e5-92b6-d20a2e3a717e
  set locale_dir=($root)/boot/grub/locale
  set lang=de_DE
  insmod gettext
fi
terminal_output gfxterm
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
if background_color 44,0,30; then
  clear
fi
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
    set gfxpayload="${1}"
    if [ "${1}" = "keep" ]; then
        set vt_handoff=vt.handoff=7
    else
        set vt_handoff=
    fi
}
if [ "${recordfail}" != 1 ]; then
  if [ -e ${prefix}/gfxblacklist.txt ]; then
    if hwmatch ${prefix}/gfxblacklist.txt 3; then
      if [ ${match} = 0 ]; then
        set linux_gfx_mode=keep
      else
        set linux_gfx_mode=text
      fi
    else
      set linux_gfx_mode=text
    fi
  else
    set linux_gfx_mode=keep
  fi
else
  set linux_gfx_mode=text
fi
export linux_gfx_mode
if [ "${linux_gfx_mode}" != "text" ]; then load_video; fi
menuentry 'Ubuntu, mit Linux 3.2.0-24-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos2)'
    search --no-floppy --fs-uuid --set=root 1063e402-b14f-45e5-92b6-d20a2e3a717e
    linux   /boot/vmlinuz-3.2.0-24-generic root=UUID=1063e402-b14f-45e5-92b6-d20a2e3a717e ro   quiet splash $vt_handoff
    initrd  /boot/initrd.img-3.2.0-24-generic
}
menuentry 'Ubuntu, mit Linux 3.2.0-24-generic (Wiederherstellungsmodus)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos2)'
    search --no-floppy --fs-uuid --set=root 1063e402-b14f-45e5-92b6-d20a2e3a717e
    echo    'Linux 3.2.0-24-generic wird geladen …'
    linux   /boot/vmlinuz-3.2.0-24-generic root=UUID=1063e402-b14f-45e5-92b6-d20a2e3a717e ro recovery nomodeset 
    echo    'Initiale Ramdisk wird geladen …'
    initrd  /boot/initrd.img-3.2.0-24-generic
}
submenu "Previous Linux versions" {
menuentry 'Ubuntu, mit Linux 3.0.0-19-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos2)'
    search --no-floppy --fs-uuid --set=root 1063e402-b14f-45e5-92b6-d20a2e3a717e
    linux   /boot/vmlinuz-3.0.0-19-generic root=UUID=1063e402-b14f-45e5-92b6-d20a2e3a717e ro   quiet splash $vt_handoff
    initrd  /boot/initrd.img-3.0.0-19-generic
}
menuentry 'Ubuntu, mit Linux 3.0.0-19-generic (Wiederherstellungsmodus)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos2)'
    search --no-floppy --fs-uuid --set=root 1063e402-b14f-45e5-92b6-d20a2e3a717e
    echo    'Linux 3.0.0-19-generic wird geladen …'
    linux   /boot/vmlinuz-3.0.0-19-generic root=UUID=1063e402-b14f-45e5-92b6-d20a2e3a717e ro recovery nomodeset 
    echo    'Initiale Ramdisk wird geladen …'
    initrd  /boot/initrd.img-3.0.0-19-generic
}
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos2)'
    search --no-floppy --fs-uuid --set=root 1063e402-b14f-45e5-92b6-d20a2e3a717e
    linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos2)'
    search --no-floppy --fs-uuid --set=root 1063e402-b14f-45e5-92b6-d20a2e3a717e
    linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows Vista (loader) (on /dev/sda1)" --class windows --class os {
    insmod part_msdos
    insmod ntfs
    set root='(hd0,msdos1)'
    search --no-floppy --fs-uuid --set=root 2C9E66B39E6674EC
    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 ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

答案1

根据 Boot Info Script 输出,您意外地将 grub 的引导扇区安装到了 Windows 分区(grub 的引导扇区应始终安装到 MBR,而不是分区)。如果您从未亲自运行过 grub-install,那么可能是 Boot Repair 造成了这种情况,在这种情况下,您应该针对 Boot Repar 提交错误报告。要修复此问题,您需要恢复 Windows PBR。您可以按照以下指南进行操作:http://sourceforge.net/apps/mediawiki/bootinfoscript/index.php?title=Boot_Problems:Boot_Sector

答案2

尝试将 UEFI 加载程序更改为其他可用的加载程序。这解决了我的问题。

答案3

  1. sudo gedit /boot/grub/grub.cfg以超级用户身份打开文件,以便可以写入
  2. 转至
    ### 开始 /etc/grub.d/30_os-prober ###
    菜单项“Windows Vista (加载器) (在 /dev/sda1 上)”--class windows --class os {
    修改 part_msdos
    修改ntfs
    设置根目录='(hd0,msdos1)'
    搜索--no-floppy--fs-uuid--set = root 2C9E66B39E6674EC
    链式装载机 +1
    }
    ### END /etc/grub.d/30_os-prober###
  3. 在该行之前chainloader +1添加以下行:
    驱动器映射 -s (hd0) ${root}
    那么该部分应该看起来像
    ### 开始 /etc/grub.d/30_os-prober ###
    菜单项“Windows Vista (加载器) (在 /dev/sda1 上)”--class windows --class os {
    修改 part_msdos
    修改ntfs
    设置根目录='(hd0,msdos1)'
    搜索--no-floppy--fs-uuid--set = root 2C9E66B39E6674EC
    驱动器映射 -s (hd0) ${root}
    链式装载机 +1
    }
    ### END /etc/grub.d/30_os-prober###
  4. 保存文件并退出。
  5. 重新启动系统并启动至 Windows Vista。

答案4

我同意乔丹的观点,你需要修复 sda1 的引导扇区。

有关信息 Boot-Repair 默认在 MBR 中安装 GRUB,并且它没有任何选项可以在 Windows 分区的 PBR 中安装 GRUB,所以这不可能是 BR 的错误。

相关内容