安装 Linux 后无法启动 Windows 7

安装 Linux 后无法启动 Windows 7

解决了

必须将由于某种原因标记为“交换”的 Windows 系统分区类型更改为 NTFS 系统类型。我通过登录 Linux 并在分区管理器中更改它来做到这一点。我重新启动,从 GRUB 菜单加载我的 Windows7,最后能够加载登录屏幕。

老问题

因此,我将 Linux Ubuntu 安装在单独的分区上,以避免与 Windows 安装发生冲突。我在解决“同时安装”问题时遇到了很多问题。在我终于能够做到这一点并在成功安装 Linux 后重新启动计算机后,我无法从 Windows 7 启动。

我尝试了很多解决方案,但没有一个能够帮助我。

一些值得一提的相关事项:

当前操作系统为 Windows 7,预装了 Windows 8(但未激活)。我的电脑上没有 CD 读取器。

我有一个显示 Windows 7 的 grub 菜单,但单击它时,它卡在 Windows 徽标上。它只是一直停留在那里,一直加载。

我运行了 bootinfo 脚本;其结果如下:

                  Boot Info Script 0.61      [1 April 2012]


============================= Boot Info Summary: ===============================

 => Grub2 (v1.99) 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 112 for .

sda1: __________________________________________________________________________

    File system:       vfat
    Boot sector type:  Dell Utility: FAT16
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  
    Boot files:        /DELLBIO.BIN /DELLRMK.BIN /COMMAND.COM

sda2: __________________________________________________________________________

    File system:       ntfs
    Boot sector type:  Windows Vista/7: NTFS
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  
    Boot files:        /bootmgr /Boot/BCD

sda3: __________________________________________________________________________

    File system:       ntfs
    Boot sector type:  Windows Vista/7: NTFS
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  Windows 7
    Boot files:        /ubuntu/winboot/menu.lst /bootmgr /Boot/BCD 
                       /Windows/System32/winload.exe /ubuntu/winboot/wubildr 
                       /ubuntu/winboot/wubildr.mbr

sda4: __________________________________________________________________________

    File system:       ext4
    Boot sector type:  Grub2 (v1.99)
    Boot sector info:  Grub2 (v1.99) is installed in the boot sector of sda4 
                       and looks at sector 950258656 of the same hard drive 
                       for core.img. core.img is at this location and looks 
                       in partition 112 for .
    Operating System:  Ubuntu 14.04.3 LTS
    Boot files:        /boot/grub/grub.cfg /etc/fstab

============================ Drive/Partition Info: =============================

Drive: sda _____________________________________________________________________

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 / 4096 bytes

Partition  Boot  Start Sector    End Sector  # of Sectors  Id System

/dev/sda1                  63        80,324        80,262  de Dell Utility
/dev/sda2              81,920    24,686,591    24,604,672  27 Hidden NTFS (Recovery Environment)
/dev/sda3    *     24,686,592   945,315,347   920,628,756  82 Linux swap / Solaris
/dev/sda4         945,315,840   976,771,071    31,455,232  83 Linux


"blkid" output: ________________________________________________________________

Device           UUID                                   TYPE       LABEL

/dev/sda1        5450-4444                              vfat       DellUtility
/dev/sda2        D68A2A4B8A2A2887                       ntfs       RECOVERY
/dev/sda3        06EE2C2BEE2C1609                       ntfs       OS
/dev/sda4        43da45a0-e34e-41ce-ae71-5cf02c75de0a   ext4       

================================ Mount points: =================================

Device           Mount_Point              Type       Options

/dev/sda4        /                        ext4       (rw,errors=remount-ro)


======================== sda3/ubuntu/winboot/menu.lst: =========================

--------------------------------------------------------------------------------
debug off
hiddenmenu
default 0
timeout 0
fallback 1

title find /ubuntu/disks/boot/grub/menu.lst
    find --set-root --ignore-floppies /ubuntu/disks/boot/grub/menu.lst
    configfile /ubuntu/disks/boot/grub/menu.lst

title find /ubuntu/install/boot/grub/menu.lst
    fallback 2
    find --set-root --ignore-floppies /ubuntu/install/boot/grub/menu.lst
    configfile /ubuntu/install/boot/grub/menu.lst

title find /menu.lst
    fallback 3
    find --set-root --ignore-floppies /menu.lst
    configfile /menu.lst

title find /boot/grub/menu.lst
    fallback 4
    find --set-root --ignore-floppies /boot/grub/menu.lst
    configfile /boot/grub/menu.lst

title find /grub/menu.lst
    fallback 5
    find --set-root --ignore-floppies /grub/menu.lst
    configfile /grub/menu.lst

title commandline
    commandline

title reboot
    reboot

title halt
    halt
--------------------------------------------------------------------------------

=========================== sda4/boot/grub/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
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,msdos4'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos4 --hint-efi=hd0,msdos4 --hint-baremetal=ahci0,msdos4  43da45a0-e34e-41ce-ae71-5cf02c75de0a
else
  search --no-floppy --fs-uuid --set=root 43da45a0-e34e-41ce-ae71-5cf02c75de0a
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=30
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 44,0,30,0; 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
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-43da45a0-e34e-41ce-ae71-5cf02c75de0a' {
    recordfail
    load_video
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos4'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos4 --hint-efi=hd0,msdos4 --hint-baremetal=ahci0,msdos4  43da45a0-e34e-41ce-ae71-5cf02c75de0a
    else
      search --no-floppy --fs-uuid --set=root 43da45a0-e34e-41ce-ae71-5cf02c75de0a
    fi
    linux   /boot/vmlinuz-3.16.0-57-generic root=UUID=43da45a0-e34e-41ce-ae71-5cf02c75de0a ro  quiet splash $vt_handoff
    initrd  /boot/initrd.img-3.16.0-57-generic
}
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-43da45a0-e34e-41ce-ae71-5cf02c75de0a' {
    menuentry 'Ubuntu, with Linux 3.16.0-57-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-57-generic-advanced-43da45a0-e34e-41ce-ae71-5cf02c75de0a' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos4'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos4 --hint-efi=hd0,msdos4 --hint-baremetal=ahci0,msdos4  43da45a0-e34e-41ce-ae71-5cf02c75de0a
        else
          search --no-floppy --fs-uuid --set=root 43da45a0-e34e-41ce-ae71-5cf02c75de0a
        fi
        echo    'Loading Linux 3.16.0-57-generic ...'
        linux   /boot/vmlinuz-3.16.0-57-generic root=UUID=43da45a0-e34e-41ce-ae71-5cf02c75de0a ro  quiet splash $vt_handoff
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-3.16.0-57-generic
    }
    menuentry 'Ubuntu, with Linux 3.16.0-57-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-57-generic-recovery-43da45a0-e34e-41ce-ae71-5cf02c75de0a' {
        recordfail
        load_video
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos4'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos4 --hint-efi=hd0,msdos4 --hint-baremetal=ahci0,msdos4  43da45a0-e34e-41ce-ae71-5cf02c75de0a
        else
          search --no-floppy --fs-uuid --set=root 43da45a0-e34e-41ce-ae71-5cf02c75de0a
        fi
        echo    'Loading Linux 3.16.0-57-generic ...'
        linux   /boot/vmlinuz-3.16.0-57-generic root=UUID=43da45a0-e34e-41ce-ae71-5cf02c75de0a ro recovery nomodeset 
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-3.16.0-57-generic
    }
    menuentry 'Ubuntu, with Linux 3.16.0-30-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-30-generic-advanced-43da45a0-e34e-41ce-ae71-5cf02c75de0a' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos4'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos4 --hint-efi=hd0,msdos4 --hint-baremetal=ahci0,msdos4  43da45a0-e34e-41ce-ae71-5cf02c75de0a
        else
          search --no-floppy --fs-uuid --set=root 43da45a0-e34e-41ce-ae71-5cf02c75de0a
        fi
        echo    'Loading Linux 3.16.0-30-generic ...'
        linux   /boot/vmlinuz-3.16.0-30-generic root=UUID=43da45a0-e34e-41ce-ae71-5cf02c75de0a ro  quiet splash $vt_handoff
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-3.16.0-30-generic
    }
    menuentry 'Ubuntu, with Linux 3.16.0-30-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-30-generic-recovery-43da45a0-e34e-41ce-ae71-5cf02c75de0a' {
        recordfail
        load_video
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos4'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos4 --hint-efi=hd0,msdos4 --hint-baremetal=ahci0,msdos4  43da45a0-e34e-41ce-ae71-5cf02c75de0a
        else
          search --no-floppy --fs-uuid --set=root 43da45a0-e34e-41ce-ae71-5cf02c75de0a
        fi
        echo    'Loading Linux 3.16.0-30-generic ...'
        linux   /boot/vmlinuz-3.16.0-30-generic root=UUID=43da45a0-e34e-41ce-ae71-5cf02c75de0a ro recovery nomodeset 
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-3.16.0-30-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,msdos4'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos4 --hint-efi=hd0,msdos4 --hint-baremetal=ahci0,msdos4  43da45a0-e34e-41ce-ae71-5cf02c75de0a
    else
      search --no-floppy --fs-uuid --set=root 43da45a0-e34e-41ce-ae71-5cf02c75de0a
    fi
    knetbsd /boot/memtest86+.elf
}
menuentry 'Memory test (memtest86+, serial console 115200)' {
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos4'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos4 --hint-efi=hd0,msdos4 --hint-baremetal=ahci0,msdos4  43da45a0-e34e-41ce-ae71-5cf02c75de0a
    else
      search --no-floppy --fs-uuid --set=root 43da45a0-e34e-41ce-ae71-5cf02c75de0a
    fi
    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/sda2)' --class windows --class os $menuentry_id_option 'osprober-chain-D68A2A4B8A2A2887' {
    insmod part_msdos
    insmod ntfs
    set root='hd0,msdos2'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos2 --hint-efi=hd0,msdos2 --hint-baremetal=ahci0,msdos2  D68A2A4B8A2A2887
    else
      search --no-floppy --fs-uuid --set=root D68A2A4B8A2A2887
    fi
    parttool ${root} hidden-
    chainloader +1
}
menuentry 'Windows 7 (loader) (on /dev/sda3)' --class windows --class os $menuentry_id_option 'osprober-chain-06EE2C2BEE2C1609' {
    insmod part_msdos
    insmod ntfs
    set root='hd0,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3  06EE2C2BEE2C1609
    else
      search --no-floppy --fs-uuid --set=root 06EE2C2BEE2C1609
    fi
    parttool ${root} hidden-
    chainloader +1
}
set timeout_style=menu
if [ "${timeout}" = 0 ]; then
  set timeout=10
fi
### 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 ###
--------------------------------------------------------------------------------

=============================== sda4/etc/fstab: ================================

--------------------------------------------------------------------------------
# /etc/fstab: static file system information.
#
# Use 'blkid' 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>
# / was on /dev/sda4 during installation
UUID=43da45a0-e34e-41ce-ae71-5cf02c75de0a /               ext4    errors=remount-ro 0       1
--------------------------------------------------------------------------------

=================== sda4: Location of files loaded by Grub: ====================

           GiB - GB             File                                 Fragment(s)


=============================== StdErr Messages: ===============================

cat: /tmp/BootInfo-cGaxV0L8/Tmp_Log: No such file or directory

答案1

我建议进行启动修复

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

您可以从这里获取更多信息: https://help.ubuntu.com/community/Boot-Repair

“活动操作系统是 Windows 7,预装了 Windows 8(但未激活)。”这到底是什么意思?为什么您不能先升级到 Windows 8 或 Windows 10 - 拥有恢复磁盘(USB),然后再进行全新安装?由于这是全新安装,因此您不会丢失太多数据。

答案2

尝试改变grub配置文件适用于 Windows 7。

  1. 将系统启动到 GRUB 菜单。
  2. 选择(突出显示)GRUB 启动菜单项Windows 7 (loader) (on /dev/sda3)
  3. 按下e编辑 Windows 7 的 GRUB 启动命令。

您当前的启动命令应如下所示:

insmod part_msdos
insmod ntfs
set root='hd0,msdos3'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3  06EE2C2BEE2C1609
else
  search --no-floppy --fs-uuid --set=root 06EE2C2BEE2C1609
fi
parttool ${root} hidden-
chainloader +1

将其更改为

insmod part_msdos
insmod ntfs
insmod ntldr
set root='hd0,msdos3'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3  06EE2C2BEE2C1609
else
  search --no-floppy --fs-uuid --set=root 06EE2C2BEE2C1609
fi
parttool ${root} hidden-
ntldr ($root)/bootmgr
  • 添加命令insmod ntldr
  • 将命令更改chainloader +1ntldr ($root)/bootmgr

按下F10使用这些编辑的命令进行启动。

如果成功加载 Windows 7,那么你可以让它永久

  1. 编辑文件/etc/grub.d/40_custom并添加第二个修改后的菜单项。
  2. 运行命令update-grub进行更新grub配置文件包含您的自定义条目。

相关内容