如何让 Windows-7 启动(GRUB/EFI 问题)

如何让 Windows-7 启动(GRUB/EFI 问题)

如果这个帖子在 Ubuntu 论坛上发布效果会更好,请告诉我。

标题是我的问题,经过大量研究和笔记后,我有一个假设的解决方案,但我想问一下那些比我更了解这些事情的人,它是否可行或者有什么更好的解决方案。

基本上我安装了两个操作系统:Windows-7 Home Premium 和 Xubuntu 14.04 (Trusty)。

每个都安装在自己的驱动器上:Win-7 安装在 120 GB OCZ SSD 上,Linux 安装在 1 TB WD HDD 上。

现状:

我的主板是技嘉GA-Z77X-UD3H(rev-1),安装在几年前购买的自装机上,没有安装任何操作系统。

两个驱动器都是 GPT 格式的,并且我要求主板仅在 UEFI 模式下启动(在 UEFI 屏幕中将“CSM 支持”设置为从不)。

安全启动和快速启动已被禁用。

我的主板(UEFI)显示三个启动驱动器选项:

  1. ubuntu -> 运行良好,安装在第二个驱动器上

  2. WDC WDC1002FAEX-00Y9A0 -> 不起作用,仅仅是因为它指向的(第二个驱动器,HDD)ESP 是空的

  3. Windows 启动管理器 -> 不起作用,安装在第一个驱动器上

每个驱动器上都有一个 ESP:

  • sda5,fat32(GRUB/Linux 正在使用的)
  • sdb1,fat32(空)

我知道驱动器的第 5 个分区对于 ESP 来说是一个奇怪的位置,请参阅下面“解决方案”部分中的我的评论。

我的 GRUB 菜单乱糟糟的:总共有 9 个选项,其中 4 个名称中包含“Windows”,但都不起作用。我知道其中一些是由“Boot Repair”创建的,当我更有信心时,我会删除它们。尽管如此,GRUB 中的“ubuntu”条目仍然可用。我现在正在使用它(Xubuntu),已经用了几个星期了。

我不会深入讨论我的机器是如何变成这种状态的,除非有人问。这篇文章太长了。我只能说我使用过 Windows 和 Xubuntu,将 Xubuntu 从 12.04 升级到 14.04,后来出现了问题,BIOS 固件更新和其他问题。现在我正在使用 Xubuntu,但由于“区域设置”问题,我不得不重新安装它,我无法修复。对我来说重要的一切都已经备份在通过 USB 连接的外部硬盘上。

我提出的解决方案:

首先,我想将 EFI 系统分区的内容从一个驱动器复制到另一个驱动器,以便保留和使用它们。当然,我的意思不是同时使用它们。我的意思是,当第一个驱动器在 UEFI 的屏幕选项中被选为第一个驱动器时,使用第一个驱动器上的 EFI 系统分区,当另一个驱动器是第一个驱动器时,使用另一个驱动器上的 EFI 系统分区。如果可能的话,如果这可以解决我的问题,我会在之后更新 GRUB,以便它反映所做的更改。

最后,我希望在每个驱动器 sda1 和 sdb1 中都有一个 ESP,换句话说,这是一种常规设置,但如果它太复杂,或者最好只为两个驱动器/操作系统设置一个 ESP,我希望它位于我的 Linux 驱动器上(第二个,1 TB HDD)。我想在物理上将 Linux 与 Windows 隔离。对我来说,Linux 是我的工作室,而 Windows 是一个玩具,我主要在上面玩游戏,而且只在本地玩游戏,我读过很多关于 Windows 安装搞砸了 Linux 安装的帖子,还有少数关于相反情况的帖子。

关于我的第一个驱动器(SSD,Windows 系统所在的位置)上活跃/使用的 ESP:

我多次读到过,ESP 应该位于驱动器的开头附近。虽然分区的“顺序”在 SSD 上的含义肯定与在 HDD 上的含义不同,但我想将其移动到 sda1,但我可以稍后再做,可能在重新格式化整个 SSD 之后,在重新安装 Windows 之前。也许我会尝试使用 PMagic 之类的程序移动我现有的分区,看看它是否有效。我不太在乎我当前的 Windows 设置,但如果我可以通过不重新安装所有内容来节省一个下午的时间,那可能是值得的。

另一个问题是,我很确定任何 ESP 分区都应该设置“启动标志”,而不是“/boot”分区,但我想确认一下,特别是我不确定一台计算机是否应该一次只设置一个,就像我的情况一样,有两个驱动器,每个驱动器都有自己的操作系统。由于 MBR 与 GPT 的问题,我在阅读过程中对很多东西感到困惑,这台机器是我第一台双启动机器。


我已经有一个 bootinfoscript 输出文件,如果需要的话可以将其添加到此处。

提前感谢任何评论/建议。


                  Boot Info Script 0.61      [1 April 2012]

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

 => No boot loader is installed in the MBR of /dev/sda.
 => No boot loader is installed in the MBR of /dev/sdb.

sda1: __________________________________________________________________________
    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:        /Windows/System32/winload.exe

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:        

sda3: __________________________________________________________________________
    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  
    Boot files:        

sda4: __________________________________________________________________________
    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  
    Boot files:        

sda5: __________________________________________________________________________
    File system:       vfat
    Boot sector type:  Windows 7: FAT32
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  
    Boot files:        

sda6: __________________________________________________________________________
    File system:       
    Boot sector type:  -
    Boot sector info: 
    Mounting failed:   mount: unknown filesystem type ''

sdb1: __________________________________________________________________________
    File system:       vfat
    Boot sector type:  FAT32
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  
    Boot files:        

sdb2: __________________________________________________________________________
    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  
    Boot files:        /grub/grub.cfg

sdb3: __________________________________________________________________________
    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  Ubuntu 14.04.3 LTS
    Boot files:        /etc/fstab

sdb4: __________________________________________________________________________
    File system:       swap
    Boot sector type:  -
    Boot sector info: 

sdb5: __________________________________________________________________________
    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:        

sdb6: __________________________________________________________________________
    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  
    Boot files:        

sdb7: __________________________________________________________________________
    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:        

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

Drive: sda _____________________________________________________________________

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 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                   1   234,441,647   234,441,647  ee GPT


GUID Partition Table detected.

Partition    Start Sector    End Sector  # of Sectors System
/dev/sda1           4,096    65,835,007    65,830,912 Data partition (Windows/Linux)
/dev/sda2      65,835,008   150,996,991    85,161,984 Data partition (Windows/Linux)
/dev/sda3     150,996,992   152,020,991     1,024,000 Data partition (Windows/Linux)
/dev/sda4     152,020,992   193,230,847    41,209,856 Data partition (Windows/Linux)
/dev/sda5     193,230,848   193,435,647       204,800 EFI System partition
/dev/sda6     193,435,648   193,697,791       262,144 Microsoft Reserved Partition (Windows)

Drive: sdb _____________________________________________________________________

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 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                   1 1,953,525,167 1,953,525,167  ee GPT


GUID Partition Table detected.

Partition    Start Sector    End Sector  # of Sectors System
/dev/sdb1           4,096       409,599       405,504 EFI System partition
/dev/sdb2         409,600     7,925,759     7,516,160 Data partition (Linux)
/dev/sdb3       7,925,760    69,365,759    61,440,000 Data partition (Linux)
/dev/sdb4      89,845,760   110,325,759    20,480,000 Swap partition (Linux)
/dev/sdb5     110,325,760   929,525,759   819,200,000 Data partition (Windows/Linux)
/dev/sdb6   1,093,365,760 1,421,045,759   327,680,000 Data partition (Linux)
/dev/sdb7   1,421,045,760 1,830,645,759   409,600,000 Data partition (Windows/Linux)

"blkid" output: ________________________________________________________________

Device           UUID                                   TYPE       LABEL

/dev/sda1        1C2E866C1128BCD3                       ntfs       Win-7_System
/dev/sda2        5E2256D51B201E21                       ntfs       Win-7_Profile-Apps
/dev/sda3        906e461a-1473-4f4f-a365-d0ce199765aa   ext4       Linux-SSD BOOT
/dev/sda4        81201b69-edac-4c7a-b878-79c6d487f569   ext4       Linux-SSD root
/dev/sda5        6A2D-CF9D                              vfat       EFI_SYSTEM
/dev/sdb1        6047-DBE8                              vfat       EFI_system
/dev/sdb2        dbba209a-c585-42f7-a408-17d6f8a587f8   ext4       boot_part
/dev/sdb3        a3eb9fbe-e91e-44ed-b826-071814a1be79   ext4       ROOT_part
/dev/sdb4        9e26bed2-0448-4ff9-af08-b469676e0ee1   swap       
/dev/sdb5        1AC8D5D5590C4FCC                       ntfs       AUDIO
/dev/sdb6        ac50468e-aeba-4fd2-8f9b-a728bc2cdb04   ext4       HOME
/dev/sdb7        1292A3272D072EC3                       ntfs       DOCS

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

Device           Mount_Point              Type       Options

/dev/sda5        /boot/efi                vfat       (rw)
/dev/sdb2        /boot                    ext4       (rw)
/dev/sdb3        /                        ext4       (rw,errors=remount-ro)
/dev/sdb5        /mnt/ntfs-int_AUDIO      fuseblk    (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
/dev/sdb6        /home                    ext4       (rw)
/dev/sdb7        /mnt/ntfs-int_DOCS       fuseblk    (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)


=============== sdb2/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_gpt
insmod ext2
set root='hd1,gpt3'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt3 --hint-efi=hd1,gpt3 --hint-baremetal=ahci1,gpt3  a3eb9fbe-e91e-44ed-b826-071814a1be79
else
  search --no-floppy --fs-uuid --set=root a3eb9fbe-e91e-44ed-b826-071814a1be79
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
### 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-a3eb9fbe-e91e-44ed-b826-071814a1be79' {
    recordfail
    load_video
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_gpt
    insmod ext2
    set root='hd1,gpt2'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  dbba209a-c585-42f7-a408-17d6f8a587f8
    else
      search --no-floppy --fs-uuid --set=root dbba209a-c585-42f7-a408-17d6f8a587f8
    fi
    linux   /vmlinuz-3.16.0-53-generic.efi.signed root=UUID=a3eb9fbe-e91e-44ed-b826-071814a1be79 ro  quiet splash $vt_handoff
    initrd  /initrd.img-3.16.0-53-generic
}
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-a3eb9fbe-e91e-44ed-b826-071814a1be79' {
    menuentry 'Ubuntu, with Linux 3.16.0-53-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-53-generic-advanced-a3eb9fbe-e91e-44ed-b826-071814a1be79' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='hd1,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  dbba209a-c585-42f7-a408-17d6f8a587f8
        else
          search --no-floppy --fs-uuid --set=root dbba209a-c585-42f7-a408-17d6f8a587f8
        fi
        echo    'Loading Linux 3.16.0-53-generic ...'
        linux   /vmlinuz-3.16.0-53-generic.efi.signed root=UUID=a3eb9fbe-e91e-44ed-b826-071814a1be79 ro  quiet splash $vt_handoff
        echo    'Loading initial ramdisk ...'
        initrd  /initrd.img-3.16.0-53-generic
    }
    menuentry 'Ubuntu, with Linux 3.16.0-53-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-53-generic-recovery-a3eb9fbe-e91e-44ed-b826-071814a1be79' {
        recordfail
        load_video
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='hd1,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  dbba209a-c585-42f7-a408-17d6f8a587f8
        else
          search --no-floppy --fs-uuid --set=root dbba209a-c585-42f7-a408-17d6f8a587f8
        fi
        echo    'Loading Linux 3.16.0-53-generic ...'
        linux   /vmlinuz-3.16.0-53-generic.efi.signed root=UUID=a3eb9fbe-e91e-44ed-b826-071814a1be79 ro recovery nomodeset 
        echo    'Loading initial ramdisk ...'
        initrd  /initrd.img-3.16.0-53-generic
    }
    menuentry 'Ubuntu, with Linux 3.16.0-52-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-52-generic-advanced-a3eb9fbe-e91e-44ed-b826-071814a1be79' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='hd1,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  dbba209a-c585-42f7-a408-17d6f8a587f8
        else
          search --no-floppy --fs-uuid --set=root dbba209a-c585-42f7-a408-17d6f8a587f8
        fi
        echo    'Loading Linux 3.16.0-52-generic ...'
        linux   /vmlinuz-3.16.0-52-generic.efi.signed root=UUID=a3eb9fbe-e91e-44ed-b826-071814a1be79 ro  quiet splash $vt_handoff
        echo    'Loading initial ramdisk ...'
        initrd  /initrd.img-3.16.0-52-generic
    }
    menuentry 'Ubuntu, with Linux 3.16.0-52-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-52-generic-recovery-a3eb9fbe-e91e-44ed-b826-071814a1be79' {
        recordfail
        load_video
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='hd1,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  dbba209a-c585-42f7-a408-17d6f8a587f8
        else
          search --no-floppy --fs-uuid --set=root dbba209a-c585-42f7-a408-17d6f8a587f8
        fi
        echo    'Loading Linux 3.16.0-52-generic ...'
        linux   /vmlinuz-3.16.0-52-generic.efi.signed root=UUID=a3eb9fbe-e91e-44ed-b826-071814a1be79 ro recovery nomodeset 
        echo    'Loading initial ramdisk ...'
        initrd  /initrd.img-3.16.0-52-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+ ###
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/25_custom ###

menuentry "Windows UEFI bootmgfw.efi" {
search --fs-uuid --no-floppy --set=root 6A2D-CF9D
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader" {
search --fs-uuid --no-floppy --set=root 6A2D-CF9D
chainloader (${root})/EFI/Boot/bkpbootx64.efi
}

menuentry "EFI/ubuntu/MokManager.efi" {
search --fs-uuid --no-floppy --set=root 6A2D-CF9D
chainloader (${root})/EFI/ubuntu/MokManager.efi
}

menuentry "efi/EFI/Boot/bkpbootx64.efi" {
search --fs-uuid --no-floppy --set=root dbba209a-c585-42f7-a408-17d6f8a587f8
chainloader (${root})/efi/EFI/Boot/bkpbootx64.efi
}

menuentry "efi/EFI/ubuntu/MokManager.efi" {
search --fs-uuid --no-floppy --set=root dbba209a-c585-42f7-a408-17d6f8a587f8
chainloader (${root})/efi/EFI/ubuntu/MokManager.efi
}
### END /etc/grub.d/25_custom ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (on /dev/sda5)' --class windows --class os $menuentry_id_option 'osprober-efi-6A2D-CF9D' {
    insmod part_gpt
    insmod fat
    set root='hd0,gpt5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5  6A2D-CF9D
    else
      search --no-floppy --fs-uuid --set=root 6A2D-CF9D
    fi
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
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.
#
# ME:  I added what follows today, August 15 , 2015, when my Win-7 did't show
#      in the list of "boot items" in my UEFI screen, neither MBR nor EFI. I have
#      not yet re-installed Xubuntu 14.04.  I can't write French, accents not
#      working in "mousepad" or "ted".  Also I never solved my "locale" problem
#      and the "perl" error messages in terminal when I play with apt-get and
#      other packages/repositories related stuff.  ALL CSM STUFF NOW DISABLED,
#      CAN BOOT OK IN XUBUNTU ONLY.
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
menuentry "Windows x86_64 UEFI-GPT" {
  search --fs-uuid --no-floppy --set=root UUID
**chainloader (${root})/efi/Microsoft/Boot/bootmgfw.efi**
}
### 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 ###

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

           GiB - GB             File                                 Fragment(s)

============== sdb3/etc/fstab: ===============

# /etc/fstab: static file system information.
#
# <file system>                           <mount point>   <type>   <options>          <dump>  <pass>
# / was on /dev/sdb3 during installation
UUID=a3eb9fbe-e91e-44ed-b826-071814a1be79       /          ext4     errors=remount-ro   0       1
# /boot was on /dev/sdb2 during installation
UUID=dbba209a-c585-42f7-a408-17d6f8a587f8       /boot      ext4     defaults            0       2
# /boot/efi was on /dev/sda5 during installation
#UUID=6A2D-CF9D                                  /boot/efi  vfat     defaults            0       1
# /home was on /dev/sdb6 during installation
UUID=ac50468e-aeba-4fd2-8f9b-a728bc2cdb04       /home      ext4     defaults            0       2
# swap was on /dev/sdb4 during installation
UUID=9e26bed2-0448-4ff9-af08-b469676e0ee1       none       swap     sw                  0       0
#
# /dev/sdb5: LABEL="AUDIO" MOI: "not mounted during installation"
UUID=1AC8D5D5590C4FCC      /mnt/ntfs-int_AUDIO    ntfs-3g   dmask=003,fmask=113,uid=1000,gid=1000,relatime,nls=utf8,x-gvfs-show  0  0
#
# /dev/sdb7: LABEL="DOCS" MOI: not mounted during installation
UUID=1292A3272D072EC3      /mnt/ntfs-int_DOCS     ntfs-3g   defaults,uid=1000,gid=1000,relatime,nls=utf8,x-gvfs-show,umask=002  0  0
UUID=6A2D-CF9D  /boot/efi   vfat    defaults    0   1

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

           GiB - GB             File                                 Fragment(s)

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

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

当我选择任何名称中包含“Windows”的 Grub 启动选项时出现错误消息:

“Widows 无法启动...
1. 安装 Windows 安装光盘并重新启动... 2. 选择语言...
3. 单击“修复计算机”。...
文件:\EFI\Microsoft\Boot\BCD 状态:0xc000000d
信息:尝试读取启动配置数据时发生错误。”

当我通过选择“Windows 启动管理器”作为第一个启动设备来更改主板的 UEFI 屏幕中的启动选项/顺序时,会出现相同的消息。

答案1

首先介绍简单的东西:GPT 磁盘上的 ESP 的分区类型代码为 C12A7328-F81F-11D2-BA4B-00A0C93EC93B。这个代码太长太复杂,不适合人类使用,因此程序使用各种简写来引用此代码。在 GPT fdisk(gdiskcgdisksgdisk)中,它是“EF00”。在大多数基于 libparted 的工具(parted、GParted 等)中,它是一个“启动标志”。不幸的是,libparted 开发人员从 MBR 启动标志(又名“活动标志”)中“劫持”了“启动标志”命名法,这与 ESP 类型代码完全无关,尽管存在模糊的概念关系。这造成了混淆,因为在 MBR 中,启动标志通常设置在保存第二阶段引导加载程序代码的分区上,在 Linux 中通常是/boot或根(/)分区;但在 GPT 下,“启动标志”应该设置仅有的在 ESP 上。我建议您不要考虑 ESP 磁盘上的“启动标志”,因为这是 libparted 特有的识别 ESP 的方式。相反,请考虑分区类型(即分区是 ESP,还是 Linux 文件系统分区,还是 Windows 文件系统分区等),并知道 libparted 将 ESP 标识为具有“启动标志”。

至于其余部分,启动信息脚本输出确实会有所帮助。我真正的问题是 Windows 启动过程哪里出错了。您报告的“无法正常工作”不准确,因此很难提出解决方案。选择 Windows 选项时的具体症状是什么?Windows 条目是什么grub.cfg?(启动信息脚本将显示此详细信息。)

以下是一些大胆的建议:

  • 下载并准备我的 USB 闪存驱动器或 CD-R 版本的rEFInd 启动管理器。然后,您可以尝试使用它进行启动。rEFInd 通常比 GRUB 更能检测 Windows 引导加载程序并启动它,因此这可能会让您进入 Windows;但是,如果 Windows 引导加载程序丢失或损坏,rEFInd 将无济于事。尝试这种方法的一个优点是风险非常低;除非您将其安装到磁盘上,否则 rEFInd 不会破坏您当前的启动配置,即使它无法提供帮助。如果它帮助,您可以将 rEFInd 安装到您的硬盘上,并且可以确信它在以这种方式启动时可以像从外部介质启动时一样正常工作。
  • 跑过引导修复工具。这更像是一种信念的飞跃;它要么有效,要么无效,如果无效,那么很有可能会让事情变得更糟。
  • 运行 Windows 修复工具。如果问题是 Windows 引导加载程序文件丢失或损坏,此选项可能会有所帮助。如果您需要帮助,您可能应该在 Windows 论坛上提问。

是否要运行基于 Linux 的修复(例如 Boot Repair)或基于 Windows 的修复,很大程度上取决于确定 Windows 启动问题是 GRUB 配置错误还是 Windows 启动文件丢失或损坏。您可以手动查找这些文件 - 它们应该出现在EFI/Microsoft/Boot/bootmgfw.efi您的某个 ESP 上(以及同一目录中的其他文件)。如果这些文件完全丢失,请尝试 Windows 修复。如果文件存在,则您的 GRUB 配置混乱或 Windows 文件已损坏。(请注意,“损坏”可能包括“被 GRUB 替换”。某些工具(包括 Boot Repair)有时会尝试通过使用另一个 GRUB 副本替换 Windows 引导加载程序来修复 Linux 启动问题,通常会将 Windows 文件重命名为其他名称以使其可访问。)

相关内容