我使用的是装有 Windows/Ubuntu 18.04 的 HP 笔记本电脑,但重新安装 Ubuntu 后,我无法启动 Windows。Ubuntu 和系统设置的高级选项,但我找不到访问 Windows 的选项。
我真的不知道问题出在哪里。我尝试了很多建议,但都没有用。
我尝试了这个问题中接受的答案(安装 Ubuntu 后无法启动 Windows,如何修复?),在创建文件并重新启动后。我可以看到一个名为 Windows-UEFI 的选项。但如果我尝试单击该选项并继续,我会收到错误,
error : no such device : /EFI/Microsoft/Boot/bootmgfw.efi. error : file /EFI/Microsoft/Boot/bootmgfw.efi' not found.
然后我尝试运行启动信息脚本(http://bootinfoscript.sourceforge.net/)。输出上传到这里:https://file.io/vuch51vB。
============================= Boot Info Summary: ===============================
=> No boot loader is installed in the MBR of /dev/sda.
sda1: __________________________________________________________________________
File system: vfat
Boot sector type: FAT32
Boot sector info: No errors found in the Boot Parameter Block.
Operating System:
Boot files: /efi/BOOT/fbx64.efi /efi/ubuntu/grubx64.efi
/efi/ubuntu/mmx64.efi /efi/ubuntu/shimx64.efi
sda2: __________________________________________________________________________
File system:
Boot sector type: -
Boot sector info:
Mounting failed: mount: /tmp/BootInfo-QDw4MMPm/sda2: 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:
Boot files: /Windows/System32/winload.exe
sda4: __________________________________________________________________________
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:
sda5: __________________________________________________________________________
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
sda6: __________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Ubuntu 18.04.4 LTS
Boot files: /boot/grub/grub.cfg /etc/fstab
sda8: __________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System:
Boot files:
============================ Drive/Partition Info: =============================
Drive: sda _____________________________________________________________________
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Partition Boot Start Sector End Sector # of Sectors Id System
/dev/sda1 1 1,953,525,167 1,953,525,167 ee GPT
GUID Partition Table detected.
Partition Start Sector End Sector # of Sectors System
/dev/sda1 2,048 534,527 532,480 EFI System partition
/dev/sda2 534,528 567,295 32,768 Microsoft Reserved Partition (Windows)
/dev/sda3 567,296 371,412,991 370,845,696 Data partition (Windows/Linux)
/dev/sda4 1,917,038,592 1,919,045,631 2,007,040 Windows Recovery Environment (Windows)
/dev/sda5 1,919,045,632 1,953,511,423 34,465,792 Data partition (Windows/Linux)
/dev/sda6 371,412,992 694,374,399 322,961,408 Data partition (Linux)
/dev/sda8 694,374,400 1,917,038,591 1,222,664,192 Data partition (Linux)
"blkid" output: ________________________________________________________________
Device UUID TYPE LABEL
/dev/loop0 squashfs
/dev/loop1 squashfs
/dev/loop10 squashfs
/dev/loop11 squashfs
/dev/loop12 squashfs
/dev/loop13 squashfs
/dev/loop14 squashfs
/dev/loop15 squashfs
/dev/loop16 squashfs
/dev/loop17 squashfs
/dev/loop18 squashfs
/dev/loop19 squashfs
/dev/loop2 squashfs
/dev/loop20 squashfs
/dev/loop21 squashfs
/dev/loop22 squashfs
/dev/loop23 squashfs
/dev/loop24 squashfs
/dev/loop25 squashfs
/dev/loop3 squashfs
/dev/loop4 squashfs
/dev/loop5 squashfs
/dev/loop6 squashfs
/dev/loop7 squashfs
/dev/loop8 squashfs
/dev/loop9 squashfs
/dev/sda1 E52D-D92B vfat
/dev/sda2
/dev/sda3 4410959410958E14 ntfs Windows
/dev/sda4 6C6CDA8F6CDA5384 ntfs Windows RE tools
/dev/sda5 009052CF9052CAB4 ntfs RECOVERY
/dev/sda6 921eabcd-626b-4ecc-bd47-40ea213357f1 ext4
/dev/sda8 4f953876-2a36-48ef-9ee9-47206f509d05 ext4
================================ Mount points: =================================
Device Mount_Point Type Options
/dev/sda1 /boot/efi vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
/dev/sda6 / ext4 (rw,relatime,errors=remount-ro)
/dev/sda8 /home ext4 (rw,noatime)
=========================== sda6/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_gpt
insmod ext2
set root='hd0,gpt6'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 921eabcd-626b-4ecc-bd47-40ea213357f1
else
search --no-floppy --fs-uuid --set=root 921eabcd-626b-4ecc-bd47-40ea213357f1
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=hidden
set timeout=0
# Fallback hidden-timeout code in case the timeout_style feature is
# unavailable.
elif sleep --interruptible 0 ; then
set timeout=0
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=1
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-921eabcd-626b-4ecc-bd47-40ea213357f1' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt6'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 921eabcd-626b-4ecc-bd47-40ea213357f1
else
search --no-floppy --fs-uuid --set=root 921eabcd-626b-4ecc-bd47-40ea213357f1
fi
linux /boot/vmlinuz-5.3.0-59-generic root=UUID=921eabcd-626b-4ecc-bd47-40ea213357f1 ro quiet splash $vt_handoff
initrd /boot/initrd.img-5.3.0-59-generic
}
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-921eabcd-626b-4ecc-bd47-40ea213357f1' {
menuentry 'Ubuntu, with Linux 5.3.0-59-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.3.0-59-generic-advanced-921eabcd-626b-4ecc-bd47-40ea213357f1' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt6'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 921eabcd-626b-4ecc-bd47-40ea213357f1
else
search --no-floppy --fs-uuid --set=root 921eabcd-626b-4ecc-bd47-40ea213357f1
fi
echo 'Loading Linux 5.3.0-59-generic ...'
linux /boot/vmlinuz-5.3.0-59-generic root=UUID=921eabcd-626b-4ecc-bd47-40ea213357f1 ro quiet splash $vt_handoff
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-5.3.0-59-generic
}
menuentry 'Ubuntu, with Linux 5.3.0-59-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.3.0-59-generic-recovery-921eabcd-626b-4ecc-bd47-40ea213357f1' {
recordfail
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt6'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 921eabcd-626b-4ecc-bd47-40ea213357f1
else
search --no-floppy --fs-uuid --set=root 921eabcd-626b-4ecc-bd47-40ea213357f1
fi
echo 'Loading Linux 5.3.0-59-generic ...'
linux /boot/vmlinuz-5.3.0-59-generic root=UUID=921eabcd-626b-4ecc-bd47-40ea213357f1 ro recovery nomodeset
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-5.3.0-59-generic
}
menuentry 'Ubuntu, with Linux 5.3.0-53-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.3.0-53-generic-advanced-921eabcd-626b-4ecc-bd47-40ea213357f1' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt6'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 921eabcd-626b-4ecc-bd47-40ea213357f1
else
search --no-floppy --fs-uuid --set=root 921eabcd-626b-4ecc-bd47-40ea213357f1
fi
echo 'Loading Linux 5.3.0-53-generic ...'
linux /boot/vmlinuz-5.3.0-53-generic root=UUID=921eabcd-626b-4ecc-bd47-40ea213357f1 ro quiet splash $vt_handoff
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-5.3.0-53-generic
}
menuentry 'Ubuntu, with Linux 5.3.0-53-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.3.0-53-generic-recovery-921eabcd-626b-4ecc-bd47-40ea213357f1' {
recordfail
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt6'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 921eabcd-626b-4ecc-bd47-40ea213357f1
else
search --no-floppy --fs-uuid --set=root 921eabcd-626b-4ecc-bd47-40ea213357f1
fi
echo 'Loading Linux 5.3.0-53-generic ...'
linux /boot/vmlinuz-5.3.0-53-generic root=UUID=921eabcd-626b-4ecc-bd47-40ea213357f1 ro recovery nomodeset
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-5.3.0-53-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/30_os-prober ###
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/30_uefi-firmware ###
menuentry 'System setup' $menuentry_id_option 'uefi-firmware' {
fwsetup
}
### 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 ###
--------------------------------------------------------------------------------
=============================== sda6/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/sda6 during installation
UUID=921eabcd-626b-4ecc-bd47-40ea213357f1 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda1 during installation
UUID=E52D-D92B /boot/efi vfat umask=0077 0 1
/swapfile none swap sw 0 0
# /home is on /dev/sda8, edited after install
UUID=4f953876-2a36-48ef-9ee9-47206f509d05 /home ext4 noatime 0 2
--------------------------------------------------------------------------------
=================== sda6: Location of files loaded by Grub: ====================
GiB - GB File Fragment(s)
=============================== StdErr Messages: ===============================
cat: /tmp/BootInfo-QDw4MMPm/Tmp_Log: No such file or directory
- 我尝试按照这里提到的方法编辑 grub 文件(安装 Ubuntu 14.04.3 后无法启动 Windows)
它也不起作用。
目前,我不知道我的问题到底是什么。而且我担心如果我在不知道自己在做什么的情况下尝试新的解决方案,会搞乱整个系统。有人能帮我找出问题所在吗?
答案1
假设 Windows 和 Ubuntu 都采用 UEFI 安装
- 查看
efibootmgr -v
这会冗长地产生如下结果:
efibootmgr -v
BootCurrent: 0003
Timeout: 60 seconds
BootOrder: 0003,0000,001D,000B,000C,000E,000D,001B,001C,001E
Boot0000* Windows Boot Manager HD(2,GPT,63c4ca60-c3b9-45a4-979a-f25f25c3d28e,0x1f4800,0x82000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}....................
Boot0001 Startup Interrupt Menu FvFile(f46ee6f4-4785-43a3-923d-7f786c3c8479)
Boot0002 Rescue and Recovery FvFile(665d3f60-ad3e-4cad-8e26-db46eee9f1b5)
Boot0003* ubuntu HD(2,GPT,63c4ca60-c3b9-45a4-979a-f25f25c3d28e,0x1f4800,0x82000)/File(\EFI\ubuntu\shimx64.efi)
Boot0005 Setup FvFile(721c8b66-426c-4e86-8e99-3457c46ab0b9)
Boot0006 Boot Menu FvFile(126a762d-5758-4fca-8531-201a7f57f850)
Boot0007 Diagnostic Splash Screen FvFile(a7d8d9a6-6ab0-4aeb-ad9d-163e59a7a380)
Boot0008 Lenovo Diagnostics FvFile(3f7e615b-0d45-4f80-88dc-26b234958560)
Boot000B* USB CD VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,86701296aa5a7848b66cd49dd3ba6a55)
Boot000C* USB FDD VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,6ff015a28830b543a8b8641009461e49)
Boot000D* ATAPI CD1 VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,aea2090adfde214e8b3a5e471856a35404)
Boot000E* ATA HDD0 VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,91af625956449f41a7b91f4f892ab0f600)
Boot001B* ATA HDD1 VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,91af625956449f41a7b91f4f892ab0f602)
Boot001C* ATA HDD2 VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,91af625956449f41a7b91f4f892ab0f603)
Boot001D* USB HDD VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,33e821aaaf33bc4789bd419f88c50803)
Boot001E* PCI LAN VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,78a84aaf2b2afc4ea79cf5cc8f3d3803)
我的复杂设置具有从多个条目启动的优势,但正如我所见不证据bootmgfw.efi
(我建议您尝试find / -name '*.efi'
),我假设您已经彻底检查了所有文件系统是否存在错误。
失败成功,使用来自 efibootmgr`try 的信息(以我的情况为例):
efibootmgr -n 000E
000E
在上面,这将通过查找列表中的条目来产生一次启动尝试。结果为BOOT000E ATA 硬盘0就我的情况而言,您需要找到与 sda3-6 相对应的条目[假设它们包含 Windows 组件],然后逐一尝试。
这些条目是由 UEFI(在 BIOS 中)启动选择顺序添加的,通常不会被删除,而是被重新排序。
编辑1: sda1
包含看起来像正常 EFI 启动结构但sda6
包含 /boot 和 /BCD(Windows 注册表)使用上述内容find
,结合您的efibootmgr
输出,它应该指示您的 Windows 启动结构/磁盘位于何处或可以从何处重建。
打字efibootmgr
没有 '-v'_ 产生一个更简单、信息量更少的结构:
efibootmgr
BootCurrent: 0003
Timeout: 0 seconds
BootOrder: 0003,0000,001D,000B,000C,000E,000D,001B,001C,001E
Boot0000* Windows Boot Manager
Boot0001 Startup Interrupt Menu
Boot0002 Rescue and Recovery
Boot0003* ubuntu
Boot0005 Setup
Boot0006 Boot Menu
Boot0007 Diagnostic Splash Screen
Boot0008 Lenovo Diagnostics
Boot000B* USB CD
Boot000C* USB FDD
Boot000D* ATAPI CD1
Boot000E* ATA HDD0
Boot001B* ATA HDD1
Boot001C* ATA HDD2
Boot001D* USB HDD
Boot001E* PCI LAN
编辑2:
如果未挂载文件系统sda1-7
以运行上述find..
命令,请依次尝试mkdir /tmp/sda1
、mount /dev/sda1 /tmp/sda1
和find /tmp/sda1 -name '*.efi'
,替换每个分区的 sda1。
正如前面的帖子所指出的,目标是找到正确的.efi
编辑3最佳解决方案:
在阅读了您提供的第一个链接后,我bootinfoscript
在我的 m/c 上运行了它,猜猜怎么着?它没有查找bootmgfw.efi
一点儿也不!
@Jordan Uggla 提供的最佳建议安装 ubuntu 后无法启动 Windows 如何修复)提供解决方案:
您的 /dev/sda1 分区必须包含 Windows bootmgfw.efi,因为它是事实上的 EFI 分区,因此基于@Jordan Uggla 的工作,我将其编辑为:
Create a file, /boot/grub/custom.cfg (by running sudo -H gedit /boot/grub/custom.cfg) with these contents:
#This entry should work for any version of Windows installed for UEFI booting
menuentry 'Windows Boot Manager (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-efi-E52D-D92B' {
insmod part_gpt
insmod fat
set root='hd0,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-
efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 E52D-D92B
else
search --no-floppy --fs-uuid --set=root E52D-D92B
fi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
(复制并粘贴以上内容到出现的 Gedit 窗口中,然后保存并退出 Gedit)
重新启动后,你会看到一个标题为Windows Boot Manager (on /dev/sda1)
如果您选择它,那么 Windows 应该启动,请查找bootmgfw.efi
,/boot
试试看,ls -R /boot|more
我确定它在那里!