Linux Mint 全新安装后,Windows 7 未显示在 GRUB 菜单中,无法通过 BIOS 启动

Linux Mint 全新安装后,Windows 7 未显示在 GRUB 菜单中,无法通过 BIOS 启动

我在标题中概述了上述问题 - 并在下文中进一步解释 - 并非常感谢任何帮助解决该问题。

为了直接解决问题,我将首先解释我的设置以及出现问题之前所做的事情。

当前设置(驱动器、分区、操作系统等):
->500 GB 磁盘驱动器:Linux Mint 17.2;4 GB 交换空间;全部位于 /dev/sda 上,具体来说分别是 sda1 和 sda2。-
>1 TB 磁盘驱动器:Windows 7 Pro;位于 /dev/sdb 上,具体来说就是 sdb1。

操作系统安装顺序(请原谅“历史课”):
一开始,我将 Windows 7 安装在 500 GB 驱动器上,而 1 TB 驱动器尚未安装。后来,我发现了 Linux 的奇妙之处,并决定在这台计算机上将其作为开发等的主要操作系统。我将它与 Windows 7 一起安装,没有任何问题,当时世界似乎很完美。在那之后的美好时光,1 TB 驱动器到了,我将所有这些都给了另一个 Windows 7,作为与另一个较旧的 Windows 7 分开的分区。似乎 Windows 喜欢相当大的文件,即使在其更新中也是如此。

由于 Linux 占用大约 200 GB 空间,Windows 占用超过 1.25 TB 空间并不是一件很有趣的事情,所以我想为我的 Linux 安装“加分”,因为它太棒了。我只是想在 Linux Mint 最新版本发布后这样做。在将新版本安装为全新安装的过程中(当然,之前也备份过),我选择了将整个 500 GB 驱动器格式化为空白状态,并使用上述设置在那里安装新版本的 Linux Mint。1 TB 驱动器从未被动过,至少我不记得是这样。

安装结束并重新启动计算机后,无法访问 Windows 驱动器。具体来说,当我尝试从 BIOS 启动菜单直接访问 Windows 时,会出现“BootMGR 丢失”错误,并且 Windows 7 未列在 GRUB 菜单中。我确实设法“修复”了 Windows“BOOTMGR 丢失”问题(通过 Windows 7 安装 DVD),但 Windows 仍然无法加载,相反,计算机重新启动并将我引导回 GRUB 菜单,其中 Windows 条目无论如何都丢失了。我可以通过文件管理器访问 Windows 分区上的文件,以及安装驱动器,没有任何问题。

我尝试过启动修复、Windows 安装盘(后者可能会使情况变得更糟?)等工具,但都没有特别的帮助。

如果您愿意的话,我的“论文”到此结束,我希望我已经充分解释了我的问题。如果有任何我应该发布的材料(例如“grub.cfg”的内容),请告诉我。

提前感谢您的帮助!

编辑:这是“grub.cfg”的内容:

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  set have_grubenv=true
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="0"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

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 {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  952aee30-e9f8-442d-aaa3-0d62e0557c56
else
  search --no-floppy --fs-uuid --set=root 952aee30-e9f8-442d-aaa3-0d62e0557c56
fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_US
  insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ] ; then
  set timeout=-1
else
  if [ x$feature_timeout_style = xy ] ; then
    set timeout_style=menu
    set timeout=10
  # Fallback normal timeout code in case the timeout_style feature is
  # unavailable.
  else
    set timeout=10
  fi
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 0,0,0; then
  clear
fi
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/06_mint_theme ###
set menu_color_normal=white/black
set menu_color_highlight=white/light-gray
### END /etc/grub.d/06_mint_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
menuentry 'Linux Mint 17.2 KDE 64-bit' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-952aee30-e9f8-442d-aaa3-0d62e0557c56' {
    recordfail
    load_video
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  952aee30-e9f8-442d-aaa3-0d62e0557c56
    else
      search --no-floppy --fs-uuid --set=root 952aee30-e9f8-442d-aaa3-0d62e0557c56
    fi
    linux   /boot/vmlinuz-3.16.0-38-generic root=UUID=952aee30-e9f8-442d-aaa3-0d62e0557c56 ro  quiet splash $vt_handoff
    initrd  /boot/initrd.img-3.16.0-38-generic
}
submenu 'Advanced options for Linux Mint 17.2 KDE 64-bit' $menuentry_id_option 'gnulinux-advanced-952aee30-e9f8-442d-aaa3-0d62e0557c56' {
    menuentry 'Linux Mint 17.2 KDE 64-bit, with Linux 3.16.0-38-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-38-generic-advanced-952aee30-e9f8-442d-aaa3-0d62e0557c56' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  952aee30-e9f8-442d-aaa3-0d62e0557c56
        else
          search --no-floppy --fs-uuid --set=root 952aee30-e9f8-442d-aaa3-0d62e0557c56
        fi
        echo    'Loading Linux 3.16.0-38-generic ...'
        linux   /boot/vmlinuz-3.16.0-38-generic root=UUID=952aee30-e9f8-442d-aaa3-0d62e0557c56 ro  quiet splash $vt_handoff
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-3.16.0-38-generic
    }
    menuentry 'Linux Mint 17.2 KDE 64-bit, with Linux 3.16.0-38-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-38-generic-recovery-952aee30-e9f8-442d-aaa3-0d62e0557c56' {
        recordfail
        load_video
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  952aee30-e9f8-442d-aaa3-0d62e0557c56
        else
          search --no-floppy --fs-uuid --set=root 952aee30-e9f8-442d-aaa3-0d62e0557c56
        fi
        echo    'Loading Linux 3.16.0-38-generic ...'
        linux   /boot/vmlinuz-3.16.0-38-generic root=UUID=952aee30-e9f8-442d-aaa3-0d62e0557c56 ro recovery nomodeset 
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-3.16.0-38-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,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  952aee30-e9f8-442d-aaa3-0d62e0557c56
    else
      search --no-floppy --fs-uuid --set=root 952aee30-e9f8-442d-aaa3-0d62e0557c56
    fi
    knetbsd /boot/memtest86+.elf
}
menuentry 'Memory test (memtest86+, serial console 115200)' {
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  952aee30-e9f8-442d-aaa3-0d62e0557c56
    else
      search --no-floppy --fs-uuid --set=root 952aee30-e9f8-442d-aaa3-0d62e0557c56
    fi
    linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_uefi-firmware ###
### END /etc/grub.d/30_uefi-firmware ###

### 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  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

答案1

我认为 Grub 无法识别 Windows,因为 Win 分区上缺少引导加载程序。

首先,尝试重新启动 Windows 安装。

从 Windows DVD 或恢复盘开始(如果您制作了) - 顺便说一句,这总是一个好主意。选择“系统修复”,选择第二个硬盘上的 Windows,然后打开命令提示符。问题

bootrec /fixmbr
bootrec /fixboot

这会将新的主引导记录和引导加载程序写入磁盘。现在,您应该能够通过在 BIOS 引导菜单中选择 Windows 驱动器来从该驱动器引导。或者,如果上述方法不起作用,您可以从修复菜单中选择“启动修复”,而不是打开命令提示符。

如果一切顺利,启动 Mint,然后通过以下方式更新 Grub

sudo update-grub

这是同义词

sudo grub-mkconfig -o /boot/grub/grub.cfg

该脚本应该识别第二个硬盘上的 Windows 引导加载程序。您应该看到相应的消息写入终端。如果是这样,一切顺利,您将能够从 Grub 加载 Windows。

相关内容