Zu kleine EFI-Partitionen erkennen: Ein einfacher Check für mehr Stabilität bei Windows-Updates

In der Vergangenheit gab es immer wieder Probleme mit fehlgeschlagenen Windows Updates, bzw. anschließende Probleme. Immer mal wieder ist dafür eine zu kleine EFI-Partition verantwortlich. Dieser Check ist mit sehr wenig Zeitaufwand über Intune durchführbar, liefert aber die Daten um das Risiko für das eigene Unternehmen abzuschätzen.

Warum das Thema wieder relevant ist

Aktuell wird das Thema wieder durch Berichte über Probleme im Zusammenhang mit Windows-Updates sichtbar. Im Artikel von Borncity zu KB5094126 werden unter anderem Boot-Loops, Bluescreens und BitLocker-Recovery-Schleifen bei bestimmten HP- und Dell-Systemen beschrieben.

Ob in jedem Einzelfall ausschließlich die EFI-Partition die Ursache ist, ist noch nicht vollständig geklärt. Die grundsätzliche Problematik ist jedoch nicht neu: Zu kleine oder vollgelaufene EFI-Systempartitionen können Windows-Updates und Startvorgänge stören.

Gerade in Unternehmensumgebungen ist das ein guter Anlass, den Zustand der EFI-Partition proaktiv zu prüfen.

Was ist die EFI-Systempartition?

Die EFI-Systempartition wird bei UEFI-basierten Systemen verwendet, um Startdateien des Betriebssystems bereitzustellen.

Auf GPT-Datenträgern ist sie über einen speziellen Partitionstyp gekennzeichnet:

c12a7328-f81f-11d2-ba4b-00a0c93ec93b

Microsoft beschreibt die EFI-Systempartition als Systempartition, die üblicherweise auf dem primären Laufwerk liegt und vom Betriebssystem verwaltet wird. Sie sollte mit FAT32 formatiert sein und keine zusätzlichen Dateien enthalten, die dort nicht hingehören.

Für aktuelle UEFI-/GPT-Layouts nennt Microsoft mindestens 200 MB bei 512/512e-Sektorgröße und 300 MB bei nativen 4K-Sektoren.

Warum sind 100 MB problematisch?

Viele ältere Installationen oder bestimmte Installationsmethoden (auch von OEMs) haben EFI-Partitionen mit nur 100 MB erzeugt. Das war lange Zeit weit verbreitet und hat in vielen Fällen auch funktioniert.

In aktuellen Windows-Umgebungen kann diese Größe jedoch knapp werden.

Mögliche Folgen können sein:

  • fehlgeschlagene Windows Feature Updates
  • Fehler bei kumulativen Updates
  • Probleme bei Firmware- oder BIOS-Updates
  • Fehler im Zusammenhang mit Secure Boot
  • BitLocker-Recovery-Abfragen nach Änderungen am Bootprozess
  • im ungünstigen Fall nicht mehr sauber startende Systeme

Das Problem ist besonders unangenehm, weil es oft erst dann auffällt, wenn ein Update bereits verteilt wurde oder ein Gerät nach einem Neustart nicht mehr sauber hochkommt.

Ziel des Checks

Der hier gezeigte Check soll nicht automatisch reparieren. Er soll zunächst nur erkennen, ob die EFI-Systempartition kleiner als ein definierter Mindestwert ist.

Das Ziel ist Transparenz:

  • Welche Geräte haben eine kleine EFI-Systempartition?
  • Welche Modelle oder Hersteller sind besonders betroffen?
  • Gibt es Unterschiede zwischen OEM-Installationen und selbst installierten Images?
  • Sollte vor größeren Windows- oder Firmware-Rollouts genauer geprüft werden?

Gerade vor Windows Feature Updates, BIOS-/Firmware-Rollouts oder Änderungen im Secure-Boot-Kontext kann diese Information sehr hilfreich sein.

Warum Detection statt automatischer Reparatur?

Das Vergrößern einer EFI-Systempartition ist kein trivialer Standardvorgang.

Je nach Partitionslayout liegt direkt hinter der EFI-Partition bereits eine Microsoft Reserved Partition, die Windows-Partition oder eine Recovery-Partition. Zusätzlich können BitLocker, OEM-spezifische Partitionen und unterschiedliche Installationshistorien eine Rolle spielen.

Ein pauschales Resize-Skript, das auf alle Geräte angewendet wird, ist daher riskant.

Aus meiner Sicht ist der bessere erste Schritt:

Erkennen statt blind reparieren.

Ein Detection Script verursacht wenig Risiko, liefert aber wertvolle Informationen für die weitere Planung.

Detection Script: EFI-Partitionsgröße prüfen

Das folgende PowerShell-Skript prüft die Größe der EFI-Systempartition auf dem Systemdatenträger und ist als Detection Skript für Intune Remediations gedacht.

In diesem Beispiel wird ein Schwellwert von 250 MB verwendet. Dieser Wert ist bewusst etwas höher als 200 MB gewählt und eignet sich als pragmatischer Prüfwert.

#=======================================================
# Script Name: Detection - EFI Size
# Version: 1.1
# Description: Detects EFI System Partition size on the system disk
#
# Exit code 0 = compliant
# Exit code 1 = not compliant
#=======================================================

# Minimum EFI size in MB
$MinimumEfiSizeMB = 250

# EFI System Partition GPT Type
# Source: Microsoft partition type ID for EFI System Partition (Source: https://learn.microsoft.com/de-de/windows-server/administration/windows-commands/set-id)
$EfiGptType = "{c12a7328-f81f-11d2-ba4b-00a0c93ec93b}"

try {
    # Get system drive, usually C:
    $SystemDriveLetter = $env:SystemDrive.TrimEnd(':')

    # Get partition of the Windows system drive
    $SystemPartition = Get-Partition -DriveLetter $SystemDriveLetter -ErrorAction Stop
    $SystemDiskNumber = $SystemPartition.DiskNumber

    # Find EFI System Partition on the same disk as Windows
    $EfiPartition = Get-Partition -DiskNumber $SystemDiskNumber -ErrorAction Stop |
        Where-Object {
            $_.GptType -eq $EfiGptType
        } |
        Select-Object -First 1

    if (-not $EfiPartition) {
        Write-Output "EFI Partition not found on system disk."
        exit 1
    }

    $EfiSizeMB = [math]::Round($EfiPartition.Size / 1MB, 2)

    Write-Output "EFI Partition found."
    Write-Output "Disk Number: $($EfiPartition.DiskNumber)"
    Write-Output "Partition Number: $($EfiPartition.PartitionNumber)"
    Write-Output "EFI partition size: $EfiSizeMB MB"
    Write-Output "Minimum required size: $MinimumEfiSizeMB MB"

    if ($EfiSizeMB -lt $MinimumEfiSizeMB) {
        Write-Output "EFI Partition too small: $EfiSizeMB MB"
        exit 1
    }

    Write-Output "EFI System Partition size is compliant."
    exit 0
}
catch {
    Write-Output "Error checking EFI System Partition: $($_.Exception.Message)"
    exit 1
}

Ausgabe:

So sieht dann der Output aus:

Weitere Schritte:

Wie bereits zuvor geschrieben, eine automatische Bereinigung würde ich erstmal nicht ausführen. Hier sollte man aus meiner Sicht sehr vorsichtig sein. Auf Basis der Auswertung können dann weitere Schritte geplant werden.

Sie möchten das Thema auf Ihre Umgebung übertragen?

Ich unterstütze Unternehmen bei Microsoft Intune, Endpoint Security, Windows Autopilot und Modern-Workplace-Projekten.