Server rebootet kurz nach Erscheinen von "Drücken Sie STRG+ALT+ENTF"

Zuletzt aktualisiert am 25. Dezember 2023 von Lars

Mal eben noch schnell einen Browser auf einem Terminalserver eines Kunden aktualisieren. Kein Problem, dachte ich. Also habe ich den (virtuellen) Server heruntergefahren, vorsichtshalber die VHD, also die virtuelle Festplatte kopiert und neu gestartet.

Der Server kam genau bis zur Meldung "Drücken Sie STRG+ALT+ENTF um sich anzumelden", danach startete er neu. Das gleiche auch im abgesicherten Modus.

Was half, war das hochfahren mit F8 und die Auswahl der "Letze als funktionierend bekannte Konfiguration" bzw. auf English "last known good config".

Was passiert beim Aktivieren der "Letzte als funktonierend bekannte Konfiguration"

Im wesentlichen werden in der Registry die Schlüssel in

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet

wiederhergestellt.

Paul Adams beschreibt im Artikel "How does Last Known Good work" (Link nicht mehr verfügbar) die Details dahinter, daher erlaube ich mir hier eine weitestgehende Übersetzung.

Beim regulären Booten sucht Windows im Registrierungsschlüssel...

HKEY_LOCAL_MACHINE\SYSTEM\Select

Dort sind vier Werte vorhanden: Current, Default, Failed und LastKnownGood. Diese sehen bei einem funktionierenden System so aus:

[HKEY_LOCAL_MACHINESYSTEMSelect]
"Current"=dword:00000001
"Default"=dword:00000001
"Failed"=dword:00000000
"LastKnownGood"=dword:00000002

Current

"Current" ist der Registryzweig, mit dem gebootet wird. Unterscheidet sich "Current" von "Default", bedeutet das, das eine Änderung seit dem letzten Neustart festgestellt wurde.

Default

"Default" ist der Registryzweig für den nächsten Boot.

Failed

Ist "Failed" ungleich Null, ist "Failed" der Registryzweig, der aktuell war, als Du zuletzt mit Auswahl von "Letzte als funktonierend bekannte Konfiguration" gebootet hast.

LastKnownGood

"LastKnownGood" ist die Registry, mit der zuletzt ein erfolgreiches Booten möglich war.

Server bootet nicht

Server bootet nicht
Beispiele von Registry-Einträge bei zwei Server

Szenario 1 - Unerwarteter Reboot

Wenn das System unerwartet neu startet, z.B. wegen Stromausfall, Hardware-Problemen, etc., dann wartet der Bootmanager beim nächsten Booten 30 Sekunden lang, bevor Windows normal gestartet wird.

Als Anwender kannst Du dann zum Beispiel den abgesicherten Modus wählen.

Die Registrierungswerte unter "Select" sind in diesem Fall unverändert, da es unwahrscheinlich ist, dass das Problem dadurch entstanden ist, dass durch den Benutzer eine Systemänderung, wie z.B. eine Treiberinstallation vorgenommen wurde.

Szenario 2 - "Letzte als funktionierend bekannte Konfiguration" wurde ausgewählt

Ein neuer ControlSet003 Registrierungszweig wird vom Zweig "Lastknowngood" geklont. Ist 003 schon vorhanden, dann ist es immer die erste freie Nummer. Wenn in einem späteren Fall 001 nicht vorhanden ist, kann es also auch wieder 001 sein.

"Failed ist Null, daher wird Failed einfach auf den Wert von Current (001) gesetzt.

Wenn "Failed" ungleich Null wäre, würde der ControlSet00x (x=Wert von Failed) Registry-Zweig gelöscht. Beim ersten Mal ist dies aber nicht der Fall, es gibt also nichts zu tun.

Current und Default werden auf den Wert von Lastknowngood (002) gesetzt.

Lastknowngood wird auf den Wert des anfangs neu erstellten Schlüssel festgelegt (003).

Die Registrierung sieht nun so aus:

Registrierungsschlüssel unter SYSTEM:

  • ControlSet001
  • ControlSet002
  • ControlSet003
[HKEY_LOCAL_MACHINESYSTEMSelect]
"Current"=dword:00000002
"Default"=dword:00000002
"Failed"=dword:00000001
"LastKnownGood"=dword:00000003

Szenario 3 - "Letzte als funktionierend bekannte Konfiguration" wurde ausgewählt (2. Durchgang)

Ein neuer ControlSet004 Registrierungsszweig wird aus dem Schlüssel Lastknowngood (003) geklont.

Der ControlSet001 Zweig wird gelöscht, da er jetzt die vorletzte fehlgeschlagene Registrierung darstellt.

"Failed" wird jetzt auf den Wert von "Current" (002) gesetzt, da "Current" die Konfiguration war, die Du gerade mit "Letze als funktionierend bekannte Konfiguration" als fehlerhaft gekennzeichnet hast.

"Current" und "Default" wird auf den Default von "LastKnownGood" gesetzt (003).

"Lastknowngood" wird auf 004 gesetzt. Das ist der Registry-Zweig, der eingangs geklont wurde.

Registrierungsschlüssel unter SYSTEM:

  • ControlSet002
  • ControlSet003
  • ControlSet004
[HKEY_LOCAL_MACHINESYSTEMSelect]
"Current"=dword:00000003
"Default"=dword:00000003
"Failed"=dword:00000002
"LastKnownGood"=dword:00000004

Wann wird die "Letzte als funktionierend bekannte Konfiguration" aktualisiert?

Wenn ein Administrator einen Gerätetreiber installiert und ein Neustart auslöst, wird "Current" auf den Wert "Lastknowngood" gesetzt.

Beim Neustart unterscheidet sich dann "Default" von "Current". In dem Fall wird Das zugehörige ControlSet00x (x=Wert von "Current") wird an die erste freien Nummer geklont.

Anschliessend wird der ursprüngliche ControlSet00x (x=Wert von "Current") gelöscht.

"LastKnownGood" wird aber nicht upgedatet, bis ein erfolgreiches User-Logon stattgefundet hat. Ein erfolgreiches User-Logon beninhaltet den Start aller Autostart-Dienste.

Du willst meine Arbeit unterstützen? Dann freue ich mich über eine kleine Spende!

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert