![Linux Mint 全新安装后,Windows 7 未显示在 GRUB 菜单中,无法通过 BIOS 启动](https://linux22.com/image/1052179/Linux%20Mint%20%E5%85%A8%E6%96%B0%E5%AE%89%E8%A3%85%E5%90%8E%EF%BC%8CWindows%207%20%E6%9C%AA%E6%98%BE%E7%A4%BA%E5%9C%A8%20GRUB%20%E8%8F%9C%E5%8D%95%E4%B8%AD%EF%BC%8C%E6%97%A0%E6%B3%95%E9%80%9A%E8%BF%87%20BIOS%20%E5%90%AF%E5%8A%A8.png)
我在标题中概述了上述问题 - 并在下文中进一步解释 - 并非常感谢任何帮助解决该问题。
为了直接解决问题,我将首先解释我的设置以及出现问题之前所做的事情。
当前设置(驱动器、分区、操作系统等):
->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。