mirror of
https://github.com/rbalsleyMSFT/FFU.git
synced 2026-06-14 02:09:35 -06:00
Updates boot file generation to use ADK BCDBoot
Addresses potential inconsistencies with Secure Boot servicing states by using the validated ADK toolset's BCDBoot instead of relying on the local OS installation. Passed ADK path and architecture parameters are now utilized to ensure boot binaries remain consistent across environments.
This commit is contained in:
@@ -2781,11 +2781,25 @@ function Add-BootFiles {
|
|||||||
[string]$OsPartitionDriveLetter,
|
[string]$OsPartitionDriveLetter,
|
||||||
[Parameter(Mandatory = $true)]
|
[Parameter(Mandatory = $true)]
|
||||||
[string]$SystemPartitionDriveLetter,
|
[string]$SystemPartitionDriveLetter,
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]$AdkPath,
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[ValidateSet('x86', 'x64', 'arm64')]
|
||||||
|
[string]$WindowsArch,
|
||||||
[string]$FirmwareType = 'UEFI'
|
[string]$FirmwareType = 'UEFI'
|
||||||
)
|
)
|
||||||
|
|
||||||
WriteLog "Adding boot files for `"$($OsPartitionDriveLetter):\Windows`" to System partition `"$($SystemPartitionDriveLetter):`"..."
|
# Use the ADK copy of BCDBoot so the boot binaries come from the validated ADK toolset
|
||||||
Invoke-Process bcdboot "$($OsPartitionDriveLetter):\Windows /S $($SystemPartitionDriveLetter): /F $FirmwareType" | Out-Null
|
# instead of the local OS installation, which can differ based on Secure Boot servicing state.
|
||||||
|
$bcdBootArchitecture = if ($WindowsArch -ieq 'arm64') { 'arm64' } else { 'amd64' }
|
||||||
|
$bcdBootPath = Join-Path $AdkPath "Assessment and Deployment Kit\Deployment Tools\$bcdBootArchitecture\BCDBoot\bcdboot.exe"
|
||||||
|
|
||||||
|
if (-not (Test-Path -Path $bcdBootPath)) {
|
||||||
|
throw "ADK BCDBoot was not found at $bcdBootPath"
|
||||||
|
}
|
||||||
|
|
||||||
|
WriteLog "Adding boot files for `"$($OsPartitionDriveLetter):\Windows`" to System partition `"$($SystemPartitionDriveLetter):`" using ADK BCDBoot at `"$bcdBootPath`"..."
|
||||||
|
Invoke-Process $bcdBootPath "$($OsPartitionDriveLetter):\Windows /S $($SystemPartitionDriveLetter): /F $FirmwareType" | Out-Null
|
||||||
WriteLog "Done."
|
WriteLog "Done."
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -7026,7 +7040,7 @@ try {
|
|||||||
|
|
||||||
WriteLog 'All necessary partitions created.'
|
WriteLog 'All necessary partitions created.'
|
||||||
|
|
||||||
Add-BootFiles -OsPartitionDriveLetter $osPartitionDriveLetter -SystemPartitionDriveLetter $systemPartitionDriveLetter[1]
|
Add-BootFiles -OsPartitionDriveLetter $osPartitionDriveLetter -SystemPartitionDriveLetter $systemPartitionDriveLetter[1] -AdkPath $adkPath -WindowsArch $WindowsArch
|
||||||
|
|
||||||
#Add Windows packages
|
#Add Windows packages
|
||||||
if ($UpdateLatestCU -or $UpdateLatestNet -or $UpdatePreviewCU ) {
|
if ($UpdateLatestCU -or $UpdateLatestNet -or $UpdatePreviewCU ) {
|
||||||
|
|||||||
Reference in New Issue
Block a user