如何在启用 UEFI 和安全启动的情况下集成 Windows 10?

如何在启用 UEFI 和安全启动的情况下集成 Windows 10?

在安装 Windows 10 时,可以使用 Microsoft 的媒体创建工具创建 USB 安装介质。此棒本身支持与 UEFI 结合的安全启动。

如果想要顺利安装以预先修补 Windows 更新、更改设置和/或添加软件,则可以使用 NT Lite 来创建一个新的 ISO,然后使用 RUFUS 之类的程序将该 ISO 刻录到 USB 记忆棒上。

我以前也这样做过,但是在最近的 Windows 10 20H2 中,当我使用 Rufus 时,它告诉我安全启动不起作用,必须在启动前禁用它,并可以在安装完成后启用它。

鉴于它在过去有效,有没有办法让安全启动正常工作,以便我可以始终安装修改后的 Windows 10 安装程序并启用安全启动和 UEFI?

答案1

虽然 OP 已经找到了解决方案,但我还是利用这个答案空间来添加更多选项。

选项 1:分割 WIM 文件。

WIM 文件是可以进行整合的格式,将 .ESD 转换为 .WIM,然后在其中添加您自己的驱动程序/包等,这可能会导致 Windows 10 安装.WIM 大于 4GB。

使用 DISM 命令(Windows 10 中随时可用)将 .WIM 文件拆分为 .SWM,每个文件大小为 3 GB。从提取的源中删除原始 WIM,并使用 OSCDIMG.exe 命令(Windows 10 ADK 的一部分)使用现在包含序列化 SWM 文件和其他 Windows 10 源文件的源重建 ISO。Rufus 现在允许您使用 FAT32 分区,因为 ISO 内的文件现在都不大于 4 GB。Windows 10 安装程序将自动检测序列化 SWM,并在启用安全启动时顺利运行和安装,因为它使用原始 Windows 10 引导程序。与 WIM 到 ESD 的转换不同,拆分 WIM 非常快。

Dism /Split-Image /ImageFile:C:\install.wim /SWMFile:C:\install.swm /FileSize:3000

oscdimg -LTest -m -u2 -bootdata:2#p0,e,bC:\src\boot\etfsboot.com#pEF,e,bC:\src\efi\microsoft\boot\efisys.bin C:\src C:\Slipstremed.iso

上面的 oscdimg 命令创建了 Legacy + UEFI 可启动 ISO。Windows 10 源文件位于 C:\src,而 C:\Slipstremed.iso 是新创建的 ISO 文件。

选项 2 – 签署 Rufus Bootloader 和 NTFS 驱动程序。

当 Rufus 创建 UEFI 可启动 NTFS 格式的 Windows 10 笔式驱动器安装程序时,它会在笔式驱动器末尾创建一个小型 512KB FAT 分区,并使用其自己的引导加载程序和 NTFS 驱动程序加载它,该驱动程序未经签名(由 Microsoft 签名),因此 Rufus 会通知您禁用安装的安全启动。

您可以在 UEFI 计算机上使用该 U 盘安装 Windows 10,并开启安全启动,前提是目标计算机上的 UEFI 固件设置允许用户级安全启动数据库密钥管理。许多 UEFI 实现根本不允许或认为没有必要提供此功能。但是,原则上它就是这样工作的。假设目标 PC 使用 x64 架构。

在运行 Windows 10 的计算机上,以管理员权限运行 Powershell,为代码签名创建自签名证书

New-SelfSignedCertificate -Type CodeSigningCert -Subject "CN=Test, O=TestCorp, C=US" -KeyUsage DigitalSignature -FriendlyName "MyCert" -CertStoreLocation "Cert:\CurrentUser\My"   -NotAfter (Get-Date).AddYears(5)

在证书存储中访问该证书并将其与私钥一起导出到受密码保护的 PFX 文件中。将其公钥导出到 DER 编码的 X509 .CER 文件以及 Base64 编码的 X509 .CER 文件。

在固件设置中以用户模式访问安全启动变量,并将 CER 文件推送到 db 密钥中。检查 db 中可以接受这两种格式中的哪一种。

使用 Signtool.exe(Windows 10 SDK 的一部分)通过 PFX 文件对相应的 Rufus Bootloader 和 NTFS 驱动程序进行签名。

signtool sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /f "C:\mycert.pfx" /p <password> "K:\EFI\Boot\bootx64.efi" 

还有 K:\EFI\Rufus\ntfs_x64.efi。例如,K:是 Pen Drive 的驱动器号。

在目标计算机上使用 Rufus 创建的 NTFS 格式的笔式驱动器进行启动,并开启安全启动。

选项 3 – 检查目标计算机上的 UEFI 固件是否确实支持 NTFS 启动。

如果是这样,只需在 NTFS 格式的 U 盘上提取 ISO,然后通过它启动,开启安全启动即可。一些 UEFI 固件实现确实支持 NTFS。我的 MSI B450 芯片组主板带有 AMI UEFI 固件,确实支持 NTFS 启动。我甚至不需要 Rufus 即可在 UEFI 模式下安装 Windows 10。

答案2

我终于发现了我的问题所在,并认为这些信息应该很容易搜索,所以它会出现在超级用户上。

为了能够在具有安全启动环境的 UEFI 上启动 Windows 10 安装 USB 棒,该棒必须使用 GPT 分区方案并且必须使用 FAT32 格式化。如果是这样,该棒将正常工作。

但是 FAT32 有一个很大的限制。FAT32 不支持任何大于 4GB 的文件。如果您的 slipstreamed 棒上有大于 4GB 的文件,RUFUS 会自动检测到这一点,并从可能的选项中删除 FAT32,并默认为 NTFS。GPT+NTFS 不允许安全启动,因此这行不通。

当您使用 NTLite 创建安装介质时,第一步是将 ESD 转换为 WIM 格式,NTLite 生成的 install.wim 会很大。就我而言,Windows 10 20H4 的 install.wim 为 6GB,因此不受 FAT32 支持。

解决我的问题的方法是不要将其保留为 WIM 格式,而是在 NTLite 的最后一步将其转换回 ESD。ISO 的构建花费了相当长的时间,但 install.esd 文件现在有 3.5GB。小到可以放在 FAT32 文件系统上,因此 RUFUS 可以正确检测到 GPT+FAT32。

所以... TL;DR:确保您在 NTLite 中转换回 ESD,然后 RUFUS 将允许您选择 GPT+FAT32。

答案3

您是否尝试制作 Easy2Boot 多重引导 USB 驱动器并将所有 ISO 复制到其中?如果在提示时添加 agFM UEFI 引导文件,则应该能够从第二个 FAT32 分区保护 UEFI64 引导,然后从第一个分区上的任何 ISO 安装。

相关内容