Orhan ÇALIŞKAN

System Administrator

Sistem Yöneticisi

Orhan ÇALIŞKAN

System Administrator

Sistem Yöneticisi

sysBlog

HP Laptoplarda Windows 11 Upgrade Sisteme ayrılan bölümü güncelleştiremedik hatasının çözümü

11 Eylül 2025 Windows, Sistem
HP Laptoplarda Windows 11 Upgrade Sisteme ayrılan bölümü güncelleştiremedik hatasının çözümü

Merhaba,

Bu makalemizde özellikle HP laptoplarda yaşanan Windows 11 in-place upgrade sorununun çözümünü göreceğiz.

SCCM üzerinden ya da Windows 11 medyası üzerinden upgrade yapmayı denediğinizde “We couldn’t update the system reserved partition” ya da “Sisteme ayrılan bölümü güncelleştiremedik” hatasıyla mutlaka karşılaşmışsınızdır. Bunun sebebi Windows 10 işletim sisteminin EFI System bölümüne defaultta 100 Mb alan ayırması ve HP laptopların EFİ Partition’una nerdeyse bu alanı tamamen dolduracak kadar veri yazması. Yani özetle problemin asıl sebebi EFI partition’unda yeteri kadar boş alan olmaması. Ben daha önce script yardımı ile C:\ diskinden bir miktar alan Shrink edip yeni EFI bölümü oluşturarak denedim. Ama eski EFI bölümünü silmek ve yeni EFI bölümüne active flag atamak için Windowsun açık olmaması gerekiyor. Yani WinPe ile başlatmanız lazım. Ama EFI bölümündeki boş alan sorunu WinPe ile boot etmenize de engel oluyor.

Bu sebeple çözüm olarak, Windowsun çalışmasına engel olmayacak, EFİ üzerinde 40 MB civarında yer kaplayan bir dosya buldum ve onu bir network pathine yedekleyip daha sonra EFI üzerinden silecek bir script yazdırdım. Bu script aynı zamanda detaylı logları C:\Temp klasörü altına atıyor. Sorunla karşılaşmanız durumunda Log dosyasını okuyarak sorun kaynağını tespit edebilirsiniz.

Script şimdilik deneyseldir. Ama kendi yaptığım testlerde hiçbir sorunla karşılaşmadım.

Scripti aşağıda paylaşıyorum. \\fileserver.contoso.com yazan alana kendi sunucularınızda oluşturduğunuz network path’ini yazmanız yeterli olacaktır. Paylaşımın Okuma/Yazma haklarını ayarlamayı unutmayın.

Powershell Script

# Stop script on errors
$ErrorActionPreference = “Stop”

# Log file
$LogDir = “C:\Temp\FirmwareDelete”
if (-not (Test-Path $LogDir)) { New-Item -ItemType Directory -Path $LogDir -Force }
$LogFile = Join-Path $LogDir (“FirmwareDelete_” + (Get-Date -Format “yyyyMMdd_HHmmss”) + “.log”)

# Log writing function
function Write-Log {
param([string]$Message)
$TimeStamp = Get-Date -Format “yyyy-MM-dd HH:mm:ss”
“$TimeStamp – $Message” | Out-File -FilePath $LogFile -Append -Encoding UTF8
}

try {
Write-Log “=== Script Started ===”

# Import Storage module
Import-Module Storage -ErrorAction Stop
Write-Log “Storage module loaded.”

# EFI partition GUID
$EfiGuid = ‘{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}’

# Existing EFI partitions
$EfiList = Get-Partition -DiskNumber 0 | Where-Object {$_.GptType -eq $EfiGuid}
Write-Log “Number of EFI partitions found: $($EfiList.Count)”

if (-not $EfiList) {
Write-Log “No EFI partition found. All partitions on Disk 0:”
Get-Partition -DiskNumber 0 | ForEach-Object {
Write-Log “Partition: $($_.PartitionNumber), GPT Type: $($_.GptType), Size: $($_.Size)”
}
throw “EFI partition not found!”
}

# Select the first EFI partition
$Efi = $EfiList | Select-Object -First 1

# EFI letter check and char → string conversion
$CurrentDriveLetter = ([string]($Efi | Get-Volume).DriveLetter).Trim()
if ($CurrentDriveLetter) {
Write-Log “EFI partition is already mounted: $CurrentDriveLetter. This letter will be used.”
$MountPoint = “$CurrentDriveLetter`:”
$UnmountNeeded = $false
} else {
$MountPoint = “Z:”
Mount-Partition -Partition $Efi -AssignDriveLetter -DriveLetter $MountPoint
Write-Log “EFI partition mounted as Z:.”
$UnmountNeeded = $true
}

# firmware.bin backup path
$BackupPath = “\\fileserver.contoso.com\HP_Firmware_Backup\$env:COMPUTERNAME\firmware.bin”

# Create backup directory if it does not exist
$BackupDir = Split-Path $BackupPath -Parent
if (-not (Test-Path $BackupDir)) {
New-Item -ItemType Directory -Path $BackupDir -Force
Write-Log “Backup directory created: $BackupDir”
}

# firmware.bin path and log folder content
$FirmwarePath = “$MountPoint\EFI\HP\DEVFW\firmware.bin”
Write-Log “Checking firmware path: $FirmwarePath”

if (Test-Path “$MountPoint\EFI\HP\DEVFW”) {
$Files = Get-ChildItem “$MountPoint\EFI\HP\DEVFW”
if ($Files) {
Write-Log “Files found in DEVFW folder:”
foreach ($f in $Files) { Write-Log ” – $($f.Name)” }
} else {
Write-Log “DEVFW folder is empty.”
}
} else {
Write-Log “DEVFW folder not found.”
}

# Check if firmware.bin exists
if (Test-Path $FirmwarePath) {
Copy-Item $FirmwarePath $BackupPath -Force
Write-Log “Backup successful: $BackupPath”

# Delete firmware.bin
Remove-Item $FirmwarePath -Force
Write-Log “firmware.bin deleted.”
} else {
Write-Log “firmware.bin not found. Script will continue successfully.”
}

# EFI unmount (only if script mounted it)
if ($UnmountNeeded) {
Dismount-Partition -Partition $Efi
Write-Log “EFI partition unmounted.”
} else {
Write-Log “EFI was already mounted, unmount skipped.”
}

Write-Log “=== Script Completed ===”

} catch {
Write-Log “An error occurred: $_”
exit 1 # Exit code 1 to stop the task
}

Eğer SCCM aracılığı ile toplu Upgrade yapmak istiyorsanız bu scripti Task Sequence’in başına eklemeniz yeterli olacaktır. Başka bir makalede ona da değineceğiz. Scripti deneyen meslektaşlarımız olumlu ya da olumsuz feedback’lerini yazarlarsa geliştirilmesi ve kullanımı hakkında daha faydalı olacaktır.

We couldn’t update the system reserved partition | Sisteme ayrılan bölümü güncelleştiremedik hatası çözümü

Etiketler:
Yorum Yaz