另一个“Grub2 中缺少 Windows 7 条目”问题

另一个“Grub2 中缺少 Windows 7 条目”问题

像我之前许多人遇到过以下问题一样,在安装 Ubuntu(已安装 Windows 7)后,grub 引导加载程序不会将 Windows 7 显示为引导选项,但如果我在 x220 上使用“选择引导设备”选项,我可以正常引导。不同之处在于我尝试仅使用 UEFI,因此许多答案并不真正适合我的问题,尽管我尝试了几种方法:

  • 运行启动修复后,它破坏了 ubuntu 启动加载程序
  • /etc/grub.d/40_custom 中不显示的 Windows 自定义条目
  • 多次更新 grub 并重启
  • 尝试 Windows 修复恢复
  • 在那里我还执行了 bootrec.exe /FixBoot
  • 然后更新 grub 并再次重启
  • 最后,因为它太有趣了,我重新安装了 Linux,同时格式化并删除了之前与 Linux 相关的所有内容。

现在我想起来了,Ubuntu 在安装过程中也没有注意到 Windows 的存在,而且根据启动修复中的启动信息,它仍然没有注意到。

            Boot Info Script 0.61-git-patched      [23 April 2012]


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

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

sda1: __________________________________________________________________________

    File system:       vfat
    Boot sector type:  Windows 7: FAT32
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  
    Boot files:        /efi/Boot/bootx64.efi /efi/ubuntu/grubx64.efi

sda2: __________________________________________________________________________

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

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

sda4: __________________________________________________________________________

    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  Ubuntu precise (development 
                       branch)
    Boot files:        /boot/grub/grub.cfg /etc/fstab

sda5: __________________________________________________________________________

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

sda6: __________________________________________________________________________

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

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

Drive: sda _____________________________________________________________________

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142448 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   625,142,447   625,142,447  ee GPT


GUID Partition Table detected.

Partition    Start Sector    End Sector  # of Sectors System
/dev/sda1           2,048       206,847       204,800 EFI System partition
/dev/sda2         206,848       468,991       262,144 Microsoft Reserved Partition (Windows)
/dev/sda3         468,992   170,338,303   169,869,312 Data partition (Windows/Linux)
/dev/sda4     170,338,304   330,338,304   160,000,001 Data partition (Windows/Linux)
/dev/sda5     330,338,305   617,141,039   286,802,735 Data partition (Windows/Linux)
/dev/sda6     617,141,040   625,141,040     8,000,001 Swap partition (Linux)

"blkid" output: ________________________________________________________________

Device           UUID                                   TYPE       LABEL

/dev/sda1        885C-ED1B                              vfat       
/dev/sda3        EE06CC0506CBCCB1                       ntfs       
/dev/sda4        604dd3b2-64ca-4200-b8fb-820e8d0ca899   ext4       
/dev/sda5        d62515fd-8120-4a74-b17b-0bdf244124a3   ext4       
/dev/sda6        7078b649-fb2a-4c59-bd03-fd31ef440d37   swap       

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

Device           Mount_Point              Type       Options

/dev/sda1        /boot/efi                vfat       (rw)
/dev/sda4        /                        ext4       (rw,errors=remount-ro)
/dev/sda5        /home                    ext4       (rw)


=========================== 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
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 efi_gop
  insmod efi_uga
  insmod video_bochs
  insmod video_cirrus
}

insmod part_gpt
insmod ext2
set root='(hd0,gpt4)'
search --no-floppy --fs-uuid --set=root 604dd3b2-64ca-4200-b8fb-820e8d0ca899
if loadfont /usr/share/grub/unicode.pf2 ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  insmod part_gpt
  insmod ext2
  set root='(hd0,gpt4)'
  search --no-floppy --fs-uuid --set=root 604dd3b2-64ca-4200-b8fb-820e8d0ca899
  set locale_dir=($root)/boot/grub/locale
  set lang=en_US
  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, with Linux 3.2.0-20-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_gpt
    insmod ext2
    set root='(hd0,gpt4)'
    search --no-floppy --fs-uuid --set=root 604dd3b2-64ca-4200-b8fb-820e8d0ca899
    linux   /boot/vmlinuz-3.2.0-20-generic root=UUID=604dd3b2-64ca-4200-b8fb-820e8d0ca899 ro   quiet splash $vt_handoff
    initrd  /boot/initrd.img-3.2.0-20-generic
}
menuentry 'Ubuntu, with Linux 3.2.0-20-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod gzio
    insmod part_gpt
    insmod ext2
    set root='(hd0,gpt4)'
    search --no-floppy --fs-uuid --set=root 604dd3b2-64ca-4200-b8fb-820e8d0ca899
    echo    'Loading Linux 3.2.0-20-generic ...'
    linux   /boot/vmlinuz-3.2.0-20-generic root=UUID=604dd3b2-64ca-4200-b8fb-820e8d0ca899 ro recovery nomodeset 
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-3.2.0-20-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_gpt
    insmod ext2
    set root='(hd0,gpt4)'
    search --no-floppy --fs-uuid --set=root 604dd3b2-64ca-4200-b8fb-820e8d0ca899
    linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
    insmod part_gpt
    insmod ext2
    set root='(hd0,gpt4)'
    search --no-floppy --fs-uuid --set=root 604dd3b2-64ca-4200-b8fb-820e8d0ca899
    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/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 ###
--------------------------------------------------------------------------------

=============================== 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>
proc            /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/sda4 during installation
UUID=604dd3b2-64ca-4200-b8fb-820e8d0ca899 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda1 during installation
UUID=885C-ED1B  /boot/efi       vfat    defaults        0       1
# /home was on /dev/sda5 during installation
UUID=d62515fd-8120-4a74-b17b-0bdf244124a3 /home           ext4    defaults        0       2
# swap was on /dev/sda6 during installation
UUID=7078b649-fb2a-4c59-bd03-fd31ef440d37 none            swap    sw              0       0
--------------------------------------------------------------------------------

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

           GiB - GB             File                                 Fragment(s)

 129.422874451 = 138.966753280  boot/grub/grub.cfg                             1
  83.059570312 = 89.184534528   boot/initrd.img-3.2.0-20-generic               2
 101.393131256 = 108.870045696  boot/vmlinuz-3.2.0-20-generic                  1
  83.059570312 = 89.184534528   initrd.img                                     2
 101.393131256 = 108.870045696  vmlinuz                                        1


ADDITIONAL INFORMATION :
=================== log of boot-repair 2012-04-25__23h40 ===================
boot-repair version : 3.18-0ppa3~precise
boot-sav version : 3.18-0ppa4~precise
glade2script version : 0.3.2.1-0ppa7~precise
internet: connected
python-software-properties version : 0.82.7

0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 591 not upgraded.
dpkg-preconfigure: unable to re-open stdin: No such file or directory
boot-repair is executed in installed-session (Ubuntu precise (development branch) , precise , Ubuntu , x86_64)

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted.


=================== OSPROBER:
/dev/sda4:The OS now in use - Ubuntu precise (development branch) CurrentSession:linux

=================== BLKID:
/dev/sda3: UUID="EE06CC0506CBCCB1" TYPE="ntfs"
/dev/sda1: UUID="885C-ED1B" TYPE="vfat"
/dev/sda4: UUID="604dd3b2-64ca-4200-b8fb-820e8d0ca899" TYPE="ext4"
/dev/sda5: UUID="d62515fd-8120-4a74-b17b-0bdf244124a3" TYPE="ext4"
/dev/sda6: UUID="7078b649-fb2a-4c59-bd03-fd31ef440d37" TYPE="swap"


1 disks with OS, 1 OS : 1 Linux, 0 MacOS, 0 Windows, 0 unknown type OS.


WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util sfdisk doesn't support GPT. Use GNU Parted.



=================== /etc/default/grub :

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"



EFI_OF_PART[1]  (, )

=================== dmesg | grep EFI :
[    0.000000] EFI v2.00 by Lenovo
[    0.000000] Kernel-defined memdesc doesn't match the one from EFI!
[    0.000000] EFI: mem00: type=3, attr=0xf, range=[0x0000000000000000-0x0000000000001000) (0MB)
[    0.000000] EFI: mem01: type=7, attr=0xf, range=[0x0000000000001000-0x000000000004e000) (0MB)
[    0.000000] EFI: mem02: type=3, attr=0xf, range=[0x000000000004e000-0x0000000000058000) (0MB)
[    0.000000] EFI: mem03: type=10, attr=0xf, range=[0x0000000000058000-0x0000000000059000) (0MB)
[    0.000000] EFI: mem04: type=7, attr=0xf, range=[0x0000000000059000-0x000000000005e000) (0MB)
[    0.000000] EFI: mem05: type=4, attr=0xf, range=[0x000000000005e000-0x000000000005f000) (0MB)
[    0.000000] EFI: mem06: type=3, attr=0xf, range=[0x000000000005f000-0x00000000000a0000) (0MB)
[    0.000000] EFI: mem07: type=2, attr=0xf, range=[0x0000000000100000-0x00000000005b9000) (4MB)
[    0.000000] EFI: mem08: type=7, attr=0xf, range=[0x00000000005b9000-0x0000000020000000) (506MB)
[    0.000000] EFI: mem09: type=0, attr=0xf, range=[0x0000000020000000-0x0000000020200000) (2MB)
[    0.000000] EFI: mem10: type=7, attr=0xf, range=[0x0000000020200000-0x00000000364e4000) (354MB)
[    0.000000] EFI: mem11: type=2, attr=0xf, range=[0x00000000364e4000-0x000000003726a000) (13MB)
[    0.000000] EFI: mem12: type=7, attr=0xf, range=[0x000000003726a000-0x0000000040000000) (141MB)
[    0.000000] EFI: mem13: type=0, attr=0xf, range=[0x0000000040000000-0x0000000040200000) (2MB)
[    0.000000] EFI: mem14: type=7, attr=0xf, range=[0x0000000040200000-0x000000009df35000) (1501MB)
[    0.000000] EFI: mem15: type=2, attr=0xf, range=[0x000000009df35000-0x00000000d39a0000) (858MB)
[    0.000000] EFI: mem16: type=4, attr=0xf, range=[0x00000000d39a0000-0x00000000d39c0000) (0MB)
[    0.000000] EFI: mem17: type=7, attr=0xf, range=[0x00000000d39c0000-0x00000000d5df5000) (36MB)
[    0.000000] EFI: mem18: type=4, attr=0xf, range=[0x00000000d5df5000-0x00000000d6990000) (11MB)
[    0.000000] EFI: mem19: type=7, attr=0xf, range=[0x00000000d6990000-0x00000000d6b82000) (1MB)
[    0.000000] EFI: mem20: type=1, attr=0xf, range=[0x00000000d6b82000-0x00000000d6b9f000) (0MB)
[    0.000000] EFI: mem21: type=7, attr=0xf, range=[0x00000000d6b9f000-0x00000000d77b0000) (12MB)
[    0.000000] EFI: mem22: type=4, attr=0xf, range=[0x00000000d77b0000-0x00000000d780a000) (0MB)
[    0.000000] EFI: mem23: type=7, attr=0xf, range=[0x00000000d780a000-0x00000000d7826000) (0MB)
[    0.000000] EFI: mem24: type=4, attr=0xf, range=[0x00000000d7826000-0x00000000d7868000) (0MB)
[    0.000000] EFI: mem25: type=7, attr=0xf, range=[0x00000000d7868000-0x00000000d7869000) (0MB)
[    0.000000] EFI: mem26: type=4, attr=0xf, range=[0x00000000d7869000-0x00000000d786a000) (0MB)
[    0.000000] EFI: mem27: type=7, attr=0xf, range=[0x00000000d786a000-0x00000000d786b000) (0MB)
[    0.000000] EFI: mem28: type=4, attr=0xf, range=[0x00000000d786b000-0x00000000d786c000) (0MB)
[    0.000000] EFI: mem29: type=7, attr=0xf, range=[0x00000000d786c000-0x00000000d786d000) (0MB)
[    0.000000] EFI: mem30: type=4, attr=0xf, range=[0x00000000d786d000-0x00000000d825f000) (9MB)
[    0.000000] EFI: mem31: type=7, attr=0xf, range=[0x00000000d825f000-0x00000000d8261000) (0MB)
[    0.000000] EFI: mem32: type=4, attr=0xf, range=[0x00000000d8261000-0x00000000d82f7000) (0MB)
[    0.000000] EFI: mem33: type=7, attr=0xf, range=[0x00000000d82f7000-0x00000000d82f8000) (0MB)
[    0.000000] EFI: mem34: type=4, attr=0xf, range=[0x00000000d82f8000-0x00000000d8705000) (4MB)
[    0.000000] EFI: mem35: type=7, attr=0xf, range=[0x00000000d8705000-0x00000000d8706000) (0MB)
[    0.000000] EFI: mem36: type=4, attr=0xf, range=[0x00000000d8706000-0x00000000d8761000) (0MB)
[    0.000000] EFI: mem37: type=7, attr=0xf, range=[0x00000000d8761000-0x00000000d8768000) (0MB)
[    0.000000] EFI: mem38: type=4, attr=0xf, range=[0x00000000d8768000-0x00000000d9b9f000) (20MB)
[    0.000000] EFI: mem39: type=7, attr=0xf, range=[0x00000000d9b9f000-0x00000000d9e4c000) (2MB)
[    0.000000] EFI: mem40: type=2, attr=0xf, range=[0x00000000d9e4c000-0x00000000d9e52000) (0MB)
[    0.000000] EFI: mem41: type=3, attr=0xf, range=[0x00000000d9e52000-0x00000000da59f000) (7MB)
[    0.000000] EFI: mem42: type=5, attr=0x800000000000000f, range=[0x00000000da59f000-0x00000000da6c3000) (1MB)
[    0.000000] EFI: mem43: type=5, attr=0x800000000000000f, range=[0x00000000da6c3000-0x00000000da79f000) (0MB)
[    0.000000] EFI: mem44: type=6, attr=0x800000000000000f, range=[0x00000000da79f000-0x00000000da8b1000) (1MB)
[    0.000000] EFI: mem45: type=6, attr=0x800000000000000f, range=[0x00000000da8b1000-0x00000000da99f000) (0MB)
[    0.000000] EFI: mem46: type=0, attr=0xf, range=[0x00000000da99f000-0x00000000daa22000) (0MB)
[    0.000000] EFI: mem47: type=0, attr=0xf, range=[0x00000000daa22000-0x00000000daa9b000) (0MB)
[    0.000000] EFI: mem48: type=0, attr=0xf, range=[0x00000000daa9b000-0x00000000daa9c000) (0MB)
[    0.000000] EFI: mem49: type=0, attr=0xf, range=[0x00000000daa9c000-0x00000000daa9f000) (0MB)
[    0.000000] EFI: mem50: type=10, attr=0xf, range=[0x00000000daa9f000-0x00000000daadd000) (0MB)
[    0.000000] EFI: mem51: type=10, attr=0xf, range=[0x00000000daadd000-0x00000000dab9f000) (0MB)
[    0.000000] EFI: mem52: type=9, attr=0xf, range=[0x00000000dab9f000-0x00000000dabdc000) (0MB)
[    0.000000] EFI: mem53: type=9, attr=0xf, range=[0x00000000dabdc000-0x00000000dabff000) (0MB)
[    0.000000] EFI: mem54: type=4, attr=0xf, range=[0x00000000dabff000-0x00000000dac00000) (0MB)
[    0.000000] EFI: mem55: type=7, attr=0xf, range=[0x0000000100000000-0x000000021e600000) (4582MB)
[    0.000000] EFI: mem56: type=11, attr=0x8000000000000001, range=[0x00000000f80f8000-0x00000000f80f9000) (0MB)
[    0.000000] EFI: mem57: type=11, attr=0x8000000000000001, range=[0x00000000fed1c000-0x00000000fed20000) (0MB)
[    0.000000] ACPI: UEFI 00000000dabde000 0003E (v01 LENOVO TP-8D    00001280 PTL  00000002)
[    0.000000] ACPI: UEFI 00000000dabdd000 00042 (v01 PTL      COMBUF 00000001 PTL  00000001)
[    0.000000] ACPI: UEFI 00000000dabdc000 00292 (v01 LENOVO TP-8D    00001280 PTL  00000002)
[    0.795807] fb0: EFI VGA frame buffer device
[    1.057243] EFI Variables Facility v0.08 2004-May-17
[    9.122104] fb: conflicting fb hw usage inteldrmfb vs EFI VGA - removing generic driver

ReadEFI: /dev/sda , N 128 , 0 ,  , PRStart 1024 , PRSize 128

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted.


=================== PARTITIONS & DISKS:
sda4    : sda,  not-sepboot,    grubenv-ok  grub2,  grub-efi,   update-grub,    64, with-boot,  is-os,  gpt-but-not-EFI,    fstab-has-bad-efi,  no-nt,  no-winload, no-recov-nor-hid,   no-bmgr,    no-grldr,   no-b-bcd,   apt-get,    grub-install,   .
sda3    : sda,  maybesepboot,   no-grubenv  nogrub, no-docgrub, no-update-grub, 32, no-boot,    no-os,  gpt-but-not-EFI,    part-has-no-fstab,  no-nt,  haswinload, no-recov-nor-hid,   no-bmgr,    no-grldr,   no-b-bcd,   nopakmgr,   nogrubinstall,  /mnt/boot-sav/sda3.
sda1    : sda,  maybesepboot,   no-grubenv  nogrub, no-docgrub, no-update-grub, 32, no-boot,    no-os,  is-correct-EFI, part-has-no-fstab,  no-nt,  no-winload, no-recov-nor-hid,   no-bmgr,    no-grldr,   no-b-bcd,   nopakmgr,   nogrubinstall,  /boot/efi.
sda5    : sda,  maybesepboot,   no-grubenv  nogrub, no-docgrub, no-update-grub, 32, no-boot,    no-os,  gpt-but-not-EFI,    part-has-no-fstab,  no-nt,  no-winload, no-recov-nor-hid,   no-bmgr,    no-grldr,   no-b-bcd,   nopakmgr,   nogrubinstall,  /home.

sda : GPT-BIS,  GPT,    no-BIOS_boot,   has-correctEFI,     2048 sectors * 512 bytes

=================== PARTED:

Model: ATA HITACHI HTS72323 (scsi)
Disk /dev/sda: 320GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system     Name                          Flags
1      1049kB  106MB   105MB   fat32           EFI system partition          boot
2      106MB   240MB   134MB                   Microsoft reserved partition  msftres
3      240MB   87.2GB  87.0GB  ntfs            Basic data partition
4      87.2GB  169GB   81.9GB  ext4
5      169GB   316GB   147GB   ext4
6      316GB   320GB   4096MB  linux-swap(v1)


=================== MOUNT:
/dev/sda4 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/sda1 on /boot/efi type vfat (rw)
/dev/sda5 on /home type ext4 (rw)
gvfs-fuse-daemon on /home/vierlex/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=vierlex)
/dev/sda3 on /mnt/boot-sav/sda3 type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096)


/sys/block/sda:  alignment_offset bdi capability dev device discard_alignment events events_async events_poll_msecs ext_range holders inflight power queue range removable ro sda1 sda2 sda3 sda4 sda5 sda6 size slaves stat subsystem trace uevent
/dev:  agpgart autofs block bsg btrfs-control bus char console core cpu cpu_dma_latency disk dri ecryptfs fb0 fd full fuse hpet input kmsg log mapper mcelog mei mem net network_latency network_throughput null oldmem port ppp psaux ptmx pts random rfkill rtc rtc0 sda sda1 sda2 sda3 sda4 sda5 sda6 sg0 shm snapshot snd stderr stdin stdout tpm0 uinput urandom usbmon0 usbmon1 usbmon2 v4l vga_arbiter video0 watchdog zero
/dev/mapper:  control
/boot/efi:  EFI
/boot/efi/EFI:  Boot Microsoft ubuntu
/boot/efi/efi:  Boot Microsoft ubuntu
/boot/efi/efi/Boot:  bootx64.efi
/boot/efi/efi/ubuntu:  grubx64.efi

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted.


=================== DF:

Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda4      ext4       77G  4.1G   69G   6% /
udev           devtmpfs  3.9G   12K  3.9G   1% /dev
tmpfs          tmpfs     1.6G  864K  1.6G   1% /run
none           tmpfs     5.0M     0  5.0M   0% /run/lock
none           tmpfs     3.9G  152K  3.9G   1% /run/shm
/dev/sda1      vfat       96M   18M   79M  19% /boot/efi
/dev/sda5      ext4      137G  2.2G  128G   2% /home
/dev/sda3      fuseblk    81G   30G   52G  37% /mnt/boot-sav/sda3

=================== FDISK:

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf34fe538

Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1   625142447   312571223+  ee  GPT



=================== Before mainwindow
FSCK no PASTEBIN yes WUBI no WINBOOT yes
recommendedrepair, purge, QTY_OF_PART_FOR_REINSTAL 1 no-kernel-purge
UNHIDEBOOT_ACTION yes (10s), noflag ()
PART_TO_REINSTALL_GRUB sda4, FORCE_GRUB no (sda) REMOVABLEDISK no
USE_SEPARATEBOOTPART no (sda3) grub2 ()
UNCOMMENT_GFXMODE no ATA  ADD_KERNEL_OPTION no (acpi=off)
MBR_TO_RESTORE  ( )
EFI detected. Please check the options.

=================== Actions
FSCK no PASTEBIN yes WUBI no WINBOOT no
bootinfo, nombraction, QTY_OF_PART_FOR_REINSTAL 1 no-kernel-purge
UNHIDEBOOT_ACTION no (10s), noflag ()
PART_TO_REINSTALL_GRUB sda4, FORCE_GRUB no (sda) REMOVABLEDISK no
USE_SEPARATEBOOTPART no (sda3) grub2 ()
UNCOMMENT_GFXMODE no ATA  ADD_KERNEL_OPTION no (acpi=off)
MBR_TO_RESTORE  ( )
No change has been performed on your computer. See you soon!
internet: connected

感谢您的时间和关注。

编辑:附加信息请求

=>/dev/sda 的 MBR 中没有安装引导加载程序。

但也许这就是它应该如何运作?

是的,没问题。启动项似乎位于单独的分区上,在我的情况下是 sda1。我对这个 UEFI 东西也很陌生。

缺少 bootmgr 等文件

我真的不知道 :D 但是是的,也许这就是它应该的样子?相反,出于某种原因,日志中没有显示什么:在 /efi/microsoft/ 下的 sda1 上还有其他微软启动文件 [很多东西]

我记得还做过某种破解工作来制作 UEFI Windows 7 USB 记忆棒。 http://jake.io/b/2011/installing-windows-7-with-uefi-boot-on-an-x220-from-usb/ 简而言之:创建并将 bootx64.efi 放置在棒上,以便它可以在 UEFI 模式下启动。

引导顺序

我决定在我的 BIOS 中。我读到某处,thinkpad x220(序列号的重要部分:4921http://www.lenovo.com/shop/americas/content/user_guides/x220_x220i_x220tablet_x220itablet_ug_en.pdf) 实际上没有 UEFI 接口之类的东西,但这两个选项与所有其他可以优先启动的常用设备一起列出。现在它看起来像这样:

Boot Priority Order
 1. ubuntu
 2. Windows Boot Manager
 3. USB FDD
 4. USB HDD
 5. ATA HDD0 HITACHI [random string]

答案1

我的第二次尝试

现在回想起来,我认为我之前的评论没有任何价值,所以我删除了它们。

您的主要问题似乎是它update-grub没有(自动)在grub.cfg它生成的“菜单”中找到并包含您的 Windows 安装,对吗?

  • 一个建议。考虑将问题的标题改为类似这样的东西
    为什么 UEFI Thinkpad 笔记本电脑上的 update-grub 没有将 Windows 添加到 GRUB 菜单?
    这可能会引起某些人的注意,他们与我不同,实际上知道 update-grub探测操作系统时发生了什么。:-)

我将解释我对您的问题的理解,以便您能够纠正我的错误。

我认为您有一台使用 UEFI BIOS 的联想 ThinkPad X220 (4291)。

  • 笔记:4291 是我的猜测。我想指的是dddd-xxx位于 X220 笔记本电脑/平板电脑底部的此贴纸上的Type和之间的代码。S/N
    联想机器类型和型号贴纸

您的笔记本电脑已安装并运行 Windows 7。然后您安装了 Ubuntu 12.04(Beta 2?)。但是安装后,GRUB 菜单不包含用于启动 Windows 7 的条目,对吗?

您仍然可以通过进入 BIOS 配置、选择菜单Startup,然后将 Windows 条目设为Boot子菜单中的第一个条目来启动 Windows 7。但显然这是一个 PITA,您希望在 GRUB 菜单中有一个可用于启动 Windows 的条目。

我假设您安装了 Ubuntu 12.04 的 Beta 2 版本。(64 位?)如果是这样,现在 12.04 已经发布,您是否习惯update-manager应用所有更新和修复?(只是检查。)

您尝试过的方法之一是添加自定义的 windows 条目,/etc/grub.d/40_custom 但它没有显示出来。我假设您是基于非 Mac x86_64 UEFI 特定信息Ubuntu 社区文档中是否有此部分?

我所能想到的只是建议再试一次。

  1. 启动 Ubuntu,打开终端窗口,并运行ls -l /etc/grub.d/40_custom以验证 root 是否拥有此文件以及该文件是否可执行。
      -rwxr-xr-x 1 root root 356 Apr 26 14:15 /etc/grub.d/40_custom
  2. 用于sudo gedit /etc/grub.d/40_custom编辑文件。我认为您希望它包含的内容是:
    /bin/sh #!/bin/sh 复制代码
    执行 tail -n +3 $0
    # 此文件提供了一种添加自定义菜单项的简单方法。只需输入
    # 个要在此注释后添加的菜单项。请注意不要更改
    # 上面的‘exec tail’行。

    菜单项“Windows x86_64 UEFI-GPT”{
        搜索--fs-uuid--no-floppy--set = root 885C-ED1B
        chainloader (${root})/efi/Boot/bootx64.efi
    }

保存文件并运行sudo update-grub。上面的编辑应该添加到/boot/grub/grub.cfg### BEGIN /etc/grub.d/40_custom ###和行之间### END /etc/grub.d/40_custom ###

如果上述步骤有效,请尝试重新启动并查看现在是否有一个允许您启动 Windows 的 GRUB 菜单项。(心里祈祷着。)

答案2

首先,您应该检查 ESP 上是否存在 Windows 引导加载程序。在 Linux 下,此文件通常以 的形式存在/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi。如果不存在,请检查是否只有那个文件消失了,或者是否所有文件都/boot/efi/EFI/Microsoft消失了。不幸的是,Ubuntu 12.04 之前的版本会清除 ESP,包括任何预先存在的 Windows 引导加载程序及其整个目录树。如果此文件丢失,唯一的修复方法是从备份中恢复它或使用 Windows 恢复光盘进行修复。完成后,您可能需要再次重新调整以使 GRUB(或其他引导管理器)默认启动。

假设 Windows 引导加载程序存在,有几种方法可以解决这个问题。

一个是安装改装或者重新索引。我从 rEFIt 中分叉出 rEFInd,因为 rEFIt 似乎已被废弃;因此,在我看来 rEFInd 是更好的解决方案。这两个程序都是启动管理器,如果安装正确,它们会在 GRUB 之前运行。它们都可以自动检测 GRUB 和 Windows 启动加载程序,让您可以选择启动其中任何一个。因此,如果 GRUB 无法检测到 Windows 或无法启动它,那也没关系。

第二种方法是添加一个条目到/etc/grub.d/40_custom类似于无理约翰所建议的条目;然而,你必须将序列号从 更改885C-ED1B为系统上的任何序列号,或者以其他方式指定 ESP。此外,您应将行指向chainloaderWindows 引导加载程序,即/EFI/Microsoft/Boot/bootmgfw.efi。(它可能在 处重复/EFI/Boot/bootx64.efi,但不能保证)。例如,这应该有效:

menuentry "Windows" {
    set root=(hd0,gpt1)
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

不过,这只是我的记忆,也可能是我忘记了什么或输入了错别字。此外,以这种方式完成时,您必须在该set root=行中正确指定 ESP;如果 ESP 不是第一个物理磁盘上的第一个分区,则必须适当调整数字。

相关内容