当 UEFI 分区为 NTFS 时,如何安装 Ubuntu 与 Windows 10 双启动?

当 UEFI 分区为 NTFS 时,如何安装 Ubuntu 与 Windows 10 双启动?

我最近收到了一台安装了 OEM Windows 10 的机器。但我无法在上面安装 Ubuntu,因为 UEFI 分区是 NTFS 格式。而不是像UEFI 规范规定。那里甚至没有提到 NTFS。但一如既往:微软比任何国际标准都强大,所以其他人需要适应。

我尝试了不同的方法来重新创建 UEFI 分区,但如果不删除 Windows 安装,我就无法让它工作。我考虑重新安装 Windows 10 并尝试强制使用 FAT 格式的 UEFI。

但我能够说服客户/用户不要使用原生 Windows,因为他只需要用它来管理 Windows 服务器并模拟 Windows 用户/客户的问题。Remmina 可以连接到 Windows 服务器,虚拟机可以模拟 Windows 软件问题。

不过,我认为收集使用 NTFS UEFI 分区的双启动的解决方法/修复是一个好主意。因为我担心我不是唯一一个遇到这个问题的人。

答案1

编辑:事实证明,下面的内容是某种“误报”;稍后,我意识到托管此 NTFS“EFI”分区的磁盘是 MBR 格式,而不是 GPT;并且它也没有 EFI 文件夹,也没有典型的预期 Windows EFI 文件EFI/Microsoft/Boot/bootmgfw.efi。我猜,这个分区上存在的“esp”标志让我感到困惑。

最后,我最终这样做了:

  • 首先在 EFI 启动的 USB 的备用分区上安装 Ubuntu,并忽略在 NTFS 上安装 grub 的失败
  • 我希望能够在 NTFS 分区上手动刷新 GRUB2,但是 grub2 2.04 明确检查了 FAT,所以暂时不可能:
if (!efidir_is_mac && grub_strcmp (fs->name, "fat") != 0)
  grub_util_error (_("%s doesn't look like an EFI partition"), efidir);
  • 然后我尝试在评论中推荐:

要更改关闭的 ntfs EFI 分区,只需复制文件,更改分区类型并重新格式化为 FAT,然后将文件复制回来

此时这仍然无助于双重启动,但是,现在我有一个 FAT32 分区,我可以从以 EFI 模式启动的棒重新安装 Ubuntu,同时在此分区上刷新 GRUB2。

  • 现在 Ubuntu 确实启动了,但os-prober根本检测不到 Windows;boot-repair没有纠正任何问题,但它提到它看到了“旧版 Windows”
  • 最后,在 Ubuntu 安装中,我在分区上重新安装了 grub2,但使用--target=i386-pc; 并强制从 BIOS 进行仅传统启动
  • 现在重新启动进入 Ubuntu,boot-repair删除所有与 grub EFI 相关的软件包 - 最后,os-prober可以看到 Windows 分区;但是它添加的条目(带有chainload)无法启动进入 Windows,声称磁盘不可启动(但事实并非如此,因为 Windows 安装在分区 2 上,而该分区未标记为可启动)
  • 最后,按照建议当 grub 安装在 Windows 分区时,如何启动 Windows 7?- 我手动添加了一个使用的 Windows 10 条目ntldr ($root)/bootmgr- 最后我有了双重启动!

也就是说 - 这个第一个 NTFS 分区是可启动的(并标记为 esp),很可能不是一个真正的 EFI 分区 - 也许它以某种方式促进了恢复或其他什么;这(我猜)通过事实证明,我只能通过强制传统启动来实现 Windows 双重启动。


这不是答案,只是想回应这个问题:

我想看看这个带有所谓 NTFS ESP 的系统上 sudo parted -l 和 sudo blkid 的输出。我以前见过几次这样的说法,但没有证据。...

但是,请首先提供 parted -l 和 blkid 输出;它们可以提供重要信息。

是的,最后我得到了这样一个系统,翻新的 ThinkPad。

我在这台笔记本电脑上的 USB 拇指驱动器上启动了 Slax(以传统模式),它提供了以下信息(请注意,除了磁盘上已有的内容之外,我还做了一些手动分区;我还删除了有关其他驱动器的信息):

root@slax:~# parted -l
Model: ATA KINGSTON SUV400S (scsi)
Disk /dev/sda: 120GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type      File system     Flags
 1      1049kB  368MB   367MB   primary   ntfs            boot, esp
 2      368MB   54.1GB  53.7GB  primary   ntfs
 4      54.1GB  118GB   64.4GB  extended
 5      54.1GB  75.5GB  21.5GB  logical   ext4
 6      75.5GB  108GB   32.2GB  logical   ntfs
 7      108GB   118GB   10.7GB  logical   linux-swap(v1)
 3      118GB   120GB   1611MB  primary   ntfs            diag

因此,分区 1 既被标记为 ntfs,又被标记为 boot 和 esp。

root@slax:~# blkid
/dev/zram0: TYPE="swap"
...
/dev/sda1: LABEL="System" UUID="64C89227C891F78E" TYPE="ntfs" PARTUUID="5e4a12da-01"
/dev/sda2: LABEL="Windows" UUID="EE3E98553E9818A3" TYPE="ntfs" PARTUUID="5e4a12da-02"
/dev/sda3: LABEL="Recovery" UUID="28DE98A6DE986E36" TYPE="ntfs" PARTUUID="5e4a12da-03"
/dev/sda5: UUID="80bbb011-a20f-489f-99dc-bbcc9422f7f4" TYPE="ext4" PARTUUID="5e4a12da-05"
/dev/sda6: LABEL="XXXXXX" UUID="3BBF7C062DC0E351" TYPE="ntfs" PARTUUID="5e4a12da-06"
/dev/sda7: UUID="abf91577-e9e8-4cd5-9e3f-48393f6c084c" TYPE="swap" PARTUUID="5e4a12da-07"
/dev/sdb1: UUID="D4D5-9DAC" TYPE="vfat" PARTUUID="000568d1-01"

我想在这台机器上安装 Ubuntu 和 Windows 双启动,所以我从 USB 拇指驱动器(在 EFI 模式下)启动了 mini.iso,它运行文本安装程序;最初它显示了分区的这种状态:

textinst-零件-01

然后,我尝试将分区 1 设置为“用作”EFI 系统分区,结果显示以下状态:

textinst-零件-02

...但是,文本安装程序没有任何内容 - 并且它失败了,“尝试在 /boot/efi 上的 SCSI2(0,0,0)、分区#1(sdb)中挂载类型为 vfat 的文件系统失败。”:

textinst-零件-03

所以,是的 - 文本安装程序似乎假设 EFI 分区始终是 vfat,并且在这种情况下它是 NTFS,因此该过程失败......

所以我真的不知道,我能做什么,在这个系统上安装 Ubuntu 并将其与 Windows 安装在双启动配置中 - 而无需更改 EFI 分区......


编辑:这里大致是安装在此处的第一个 NTFS 分区上的文件/mnt(我删掉了一些明显的翻译和字体文件以使其更易于阅读) - 请注意,任何地方都没有 EFI 文件夹:

$ tree /mnt/

/mnt/
├── Boot
│   ├── BCD
│   ├── BCD.LOG
│   ├── BCD.LOG1
│   ├── BCD.LOG2
│   ├── bg-BG
│   │   └── bootmgr.exe.mui
│   ├── BOOTSTAT.DAT
│   ├── bootuwf.dll
│   ├── bootvhd.dll
│   ├── cs-CZ
│   │   ├── bootmgr.exe.mui
│   │   └── memtest.exe.mui
│   ├── da-DK
│   │   ├── bootmgr.exe.mui
│   │   └── memtest.exe.mui
...
│   ├── Fonts
│   │   ├── chs_boot.ttf
│   │   ├── cht_boot.ttf
...
│   │   ├── segoen_slboot.ttf
│   │   ├── segoe_slboot.ttf
│   │   └── wgl4_boot.ttf
│   ├── fr-CA
│   │   └── bootmgr.exe.mui
...
│   ├── memtest.exe
│   ├── nb-NO
│   │   ├── bootmgr.exe.mui
│   │   └── memtest.exe.mui
...
│   ├── Resources
│   │   ├── bootres.dll
│   │   ├── da-DK
│   │   │   └── bootres.dll.mui
...
│   ├── ro-RO
│   │   └── bootmgr.exe.mui
...
│   └── zh-TW
│       ├── bootmgr.exe.mui
│       └── memtest.exe.mui
├── bootmgr
├── BOOTNXT
├── gboot
│   └── grub
├── grub
├── manboot
│   ├── bcd
│   ├── bootfix.bin
│   ├── boot.sdi
│   ├── efisys.bin
│   ├── efisys_noprompt.bin
│   ├── etfsboot.com
│   └── fonts
│       ├── chs_boot.ttf
│       ├── cht_boot.ttf
│       ├── jpn_boot.ttf
│       ├── kor_boot.ttf
│       └── wgl4_boot.ttf
└── System Volume Information
    └── tracking.log

相关内容