我在新的 DELL XPS 12(EFI/grub2)系统上安装了 ubuntu 13.04 和 windows 8 的双启动,遇到了一个问题,根本无法加载 windows8,...故事如下:
我有一个新的 DELL XPS 12 系统,其中预装了 Windows8 的 (U)EFI 固件(我以前从未处理过 EFI)。
那边有5-6个分区:
- 电喷
- Windows 8
- 休眠
- Ubuntu 13.04
- Windows 数据
- 维修
但它在几周内就按预期运行了。
然后我决定在 Windows8 上安装新的 Ubuntu 13.04 x64 并进行双启动。不知何故(别问)我搞砸了 Windows 8 分区,只在我之前创建的新分区上安装了一个新的 Ubuntu,但失去了访问/启动以及读取我拥有的任何 NTFS Windows 分区的方法。在接下来的几天里,我尝试使用 TestDisk、BootRepair 和其他一些工具成功地修复了这一切,现在我接近最终解决方案,但还没有,需要一些帮助。
实际情况如下:
- Ubuntu 13.04 x64 已安装并按预期使用 grub2 加载程序
- 从 ubuntu 我可以读取所有 NTFS 分区,因此我的 Windows 8 和 Windows 数据分区就在那里
- 在 EFI 模式下启动计算机(虽然没有安全启动),grub2 加载,Ubuntu 启动没有问题
- 问题是 Windows8 无法从 grub2 启动,提示“...EFI”文件未找到
- 将这些问题与我在这里读到的其他问题进行比较,似乎我的 Windows 8 EFI 文件有问题,因为我的 bootx64 和 bootmdfw efis 有 121KB 大,而不是像某些人报告/假设的 Windows 8 那样只有 1.3MB
- Boot-Repair 没有帮助,win8 修复 liveUSB 和 bootxxx /fixmbr /fixboot 选项也无济于事
这是我的 Boot-Repair 粘贴文件以及我的实际分区/efi 文件列表...
启动修复报告 -->http://paste.ubuntu.com/5668969/
list of partitions
------------------
Partition Start Sector End Sector # of Sectors System
EFI > /dev/sda1 2,048 1,026,047 1,024,000 EFI System partition
Win8-OS > /dev/sda2 1,026,048 132,098,047 131,072,000 EFI System partition
Win8-Hyber > /dev/sda3 132,098,048 150,530,047 18,432,000 EFI System partition
Ubuntu 13.4> /dev/sda4 150,530,048 236,510,511 85,980,464 Data partition (Windows/Linux)
Win8-Data >/dev/sda5 236,513,280 500,118,157 263,604,878 Data partition (Windows/Linux)
------------------
list efi files
--------------
/boot/efi:
total 5
drwxr-xr-x 3 root root 512 gen 1 1970 .
drwxr-xr-x 5 root root 4096 mag 8 10:09 ..
drwxr-xr-x 5 root root 512 mag 14 01:25 EFI
/boot/efi/EFI:
total 3
drwxr-xr-x 5 root root 512 mag 14 01:25 .
drwxr-xr-x 3 root root 512 gen 1 1970 ..
drwxr-xr-x 2 root root 512 mag 13 17:02 Boot
drwxr-xr-x 3 root root 512 mag 14 01:25 Microsoft
drwxr-xr-x 2 root root 512 mag 6 10:18 ubuntu
/boot/efi/EFI/Boot:
total 239
drwxr-xr-x 2 root root 512 mag 13 17:02 .
drwxr-xr-x 5 root root 512 mag 14 01:25 ..
-rwxr-xr-x 1 root root 121856 mag 13 17:02 bootx64.efi
-rwxr-xr-x 1 root root 0 mag 13 17:02 bootx64.efi.grb
-rwxr-xr-x 1 root root 121856 mag 8 10:09 bootx64.efi.old
/boot/efi/EFI/Microsoft:
total 2
drwxr-xr-x 3 root root 512 mag 14 01:25 .
drwxr-xr-x 5 root root 512 mag 14 01:25 ..
drwxr-xr-x 2 root root 512 mag 14 01:25 Boot
/boot/efi/EFI/Microsoft/Boot:
total 2759
drwxr-xr-x 2 root root 512 mag 14 01:25 .
drwxr-xr-x 3 root root 512 mag 14 01:25 ..
-rwxr-xr-x 1 root root 1350888 mag 14 01:25 bootmgfw.efi
-rwxr-xr-x 1 root root 0 mag 13 17:02 bootmgfw.efi.grb
-rwxr-xr-x 1 root root 1350888 mag 14 01:24 bootmgr.efi
-rwxr-xr-x 1 root root 121856 mag 13 17:02 bootx64.efi
-rwxr-xr-x 1 root root 0 mag 13 17:02 bootx64.efi.grb
/boot/efi/EFI/ubuntu:
total 120
drwxr-xr-x 2 root root 512 mag 6 10:18 .
drwxr-xr-x 5 root root 512 mag 14 01:25 ..
-rwxr-xr-x 1 root root 121856 mag 13 17:02 grubx64.efi
--------------
我将非常感谢你们的任何指导/帮助。
提前谢谢您,B。
答案1
首先,你的分区类型代码混乱了。你的前三个分区都标记为EFI 系统分区 (ESP),但只有第一个应该是该类型。您的分区 #2 几乎肯定应该是“Microsoft Basic Data”类型。我不确定您的分区 #3。您可以使用 更改分区类型代码gdisk
,使用其选项。完成后,t
请务必通过 选项保存更改。在 中,将分区 #2 的类型代码更改为。但我不确定分区 #3 是否如此。w
gdisk
0700
如果更改类型代码不起作用,请尝试使用重新索引CD 或 USB 闪存盘。(您可以从rEFInd 下载页面.) 如果您启动到 rEFInd 并且它允许您启动 Windows,则使用 Debian 包或二进制.zip
文件安装 rEFInd。这将补充或绕过 GRUB 2(根据您的需要)以启动 Linux,并绕过 GRUB 以启动 Windows。
答案2
我不得不说,看到这些工具(boot-pair、rEFInd等等)被一遍又一遍地推荐,而问题原因却不明,实际问题却被当做巫术一样对待,真是令人沮丧。
值得深思的是:在不了解问题的情况下运行 100 种工具,在某些情况下可能会解决你的问题,但也可能无法解决你的问题,或者使事情变得更糟。
您说得对,除了多个 EFI 系统分区之外,您的设置还缺少一些文件。正确的设置如下所示:
livewire@za21:~$ ll /media/livewire/Windows\ 8/EFI/
insgesamt 12
drwx------ 1 livewire livewire 0 Jan 28 09:13 ./
drwx------ 1 livewire livewire 12288 Mai 16 03:11 ../
drwx------ 1 livewire livewire 0 Jan 28 09:13 Boot/
drwx------ 1 livewire livewire 0 Jan 27 22:31 Microsoft/
livewire@za21:~$ ll /media/livewire/Windows\ 8/EFI/Boot/
insgesamt 1324
drwx------ 1 livewire livewire 0 Jan 28 09:13 ./
drwx------ 1 livewire livewire 0 Jan 28 09:13 ../
-rw------- 1 livewire livewire 1354480 Jul 26 2012 bootx64.efi
livewire@za21:~$ ll /media/livewire/Windows\ 8/EFI/Microsoft/Boot/
insgesamt 4044
drwx------ 1 livewire livewire 8192 Jan 28 09:13 ./
drwx------ 1 livewire livewire 0 Jan 27 22:31 ../
-rw------- 1 livewire livewire 40960 Jan 28 09:13 BCD
-rw------- 1 livewire livewire 36864 Jan 28 09:13 BCD.LOG
-rw------- 2 livewire livewire 0 Jan 28 09:13 BCD.LOG1
-rw------- 2 livewire livewire 0 Jan 28 09:13 BCD.LOG2
drwx------ 1 livewire livewire 0 Jan 28 09:13 bg-BG/
-rw------- 1 livewire livewire 1354480 Jul 26 2012 bootmgfw.efi
-rw------- 1 livewire livewire 1350896 Jul 26 2012 bootmgr.efi
-rw------- 1 livewire livewire 65536 Jan 27 22:07 BOOTSTAT.DAT
-rw------- 1 livewire livewire 4186 Jun 27 2012 boot.stl
drwx------ 1 livewire livewire 0 Jan 28 09:13 cs-CZ/
drwx------ 1 livewire livewire 0 Jan 28 09:13 da-DK/
drwx------ 1 livewire livewire 0 Jan 28 09:13 de-DE/
drwx------ 1 livewire livewire 0 Jan 28 09:13 el-GR/
drwx------ 1 livewire livewire 0 Jan 28 09:13 en-GB/
drwx------ 1 livewire livewire 0 Jan 28 09:13 en-US/
drwx------ 1 livewire livewire 0 Jan 28 09:13 es-ES/
drwx------ 1 livewire livewire 0 Jan 28 09:13 et-EE/
drwx------ 1 livewire livewire 0 Jan 28 09:13 fi-FI/
drwx------ 1 livewire livewire 4096 Jan 28 09:13 Fonts/
drwx------ 1 livewire livewire 0 Jan 28 09:13 fr-FR/
drwx------ 1 livewire livewire 0 Jan 28 09:13 hr-HR/
drwx------ 1 livewire livewire 0 Jan 28 09:13 hu-HU/
drwx------ 1 livewire livewire 0 Jan 28 09:13 it-IT/
drwx------ 1 livewire livewire 0 Jan 28 09:13 ja-JP/
drwx------ 1 livewire livewire 0 Jan 28 09:13 ko-KR/
drwx------ 1 livewire livewire 0 Jan 28 09:13 lt-LT/
drwx------ 1 livewire livewire 0 Jan 28 09:13 lv-LV/
-rw------- 1 livewire livewire 1263856 Jul 26 2012 memtest.efi
drwx------ 1 livewire livewire 0 Jan 28 09:13 nb-NO/
drwx------ 1 livewire livewire 0 Jan 28 09:13 nl-NL/
drwx------ 1 livewire livewire 0 Jan 28 09:13 pl-PL/
drwx------ 1 livewire livewire 0 Jan 28 09:13 pt-BR/
drwx------ 1 livewire livewire 0 Jan 28 09:13 pt-PT/
drwx------ 1 livewire livewire 4096 Jan 28 09:13 qps-ploc/
drwx------ 1 livewire livewire 0 Jan 28 09:13 Resources/
drwx------ 1 livewire livewire 0 Jan 28 09:13 ro-RO/
drwx------ 1 livewire livewire 0 Jan 28 09:13 ru-RU/
drwx------ 1 livewire livewire 0 Jan 28 09:13 sk-SK/
drwx------ 1 livewire livewire 0 Jan 28 09:13 sl-SI/
drwx------ 1 livewire livewire 0 Jan 28 09:13 sr-Latn-CS/
drwx------ 1 livewire livewire 0 Jan 28 09:13 sv-SE/
drwx------ 1 livewire livewire 0 Jan 28 09:13 tr-TR/
drwx------ 1 livewire livewire 0 Jan 28 09:13 uk-UA/
drwx------ 1 livewire livewire 0 Jan 28 09:13 zh-CN/
drwx------ 1 livewire livewire 0 Jan 28 09:13 zh-HK/
drwx------ 1 livewire livewire 0 Jan 28 09:13 zh-TW/
语言资源对于基本启动功能来说并不那么重要,但是,bootmgfw.efi
和。后一个文件(必须是,因为当我将文件放入编辑器时,类似 GUID 的字符串在其他数据中清晰可见)包含配置数据(例如,用于启动的分区)并且需要生成,这是相当棘手的部分,因为我只知道执行此操作的 Windows 命令。其他文件很容易找到,因为它们存储在典型安装中。bootmgr.efi
BOOTSTAT.DAT
BCD
BCD
C:\Windows\Boot\
如果幸运的话,您会在 Windows 8 分区或 Windows 启动分区上找到一个有效的 MBR ( C:\Boot\
) 或 EFI ( C:\EFI\
) 启动配置,该配置可以通过 GRUB 启动。对于启动 MBR 配置,我建议以 MBR 模式将 Ubuntu 安装到 USB 棒上,启动它,然后让 GRUB os-prober 找到启动 Windows 的配置并修复 Windows 中的问题。对于 EFI,您可以编写自定义 GRUB 条目。阅读我的评论:Windows 8 UEFI 双启动期间出现 Grub 错误(找不到命令“drivemap”)
在 Windows 中,您可以使用 将 EFI 引导加载程序和配置重新安装到您选择的位置bcdboot C:\Windows /s C: /f uefi
。在这种情况下/s C:
将安装到C:
,您应该将其替换为要使用的 ESP 的驱动器号。