(U)EFI > Ubuntu 与 Windows 8 - 启动 Windows 时出现问题

(U)EFI > Ubuntu 与 Windows 8 - 启动 Windows 时出现问题

我在新的 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 是否如此。wgdisk0700

如果更改类型代码不起作用,请尝试使用重新索引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.efiBOOTSTAT.DATBCDBCDC:\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 的驱动器号。

相关内容