Mám Windows10 VM na OpenStack, který se automaticky restartuje po úspěšném automatickém přihlášení. Chvíli se s tím potýkat a hodiny strávené hledáním tohoto tématu na googlu byly marné. Postupujte podle níže uvedeného podrobného postupu, abyste našli hlavní příčinu a zastavili automatické restartování Windows10 VM na OpenStack!
Zajímá vás, proč se systém Windows restartuje automaticky? Naštěstí systém Windows sleduje události a záznamy v systémovém protokolu. Pomocí integrovaného prohlížeče událostí systému Windows můžete sledovat aktivity, ke kterým dochází na vašem počítači před, během a po jeho vypnutí nebo restartu. Tento článek mi pomohl zobrazit systémové protokoly ve Windows10, které spustily automatický restart.
Zobrazit protokol vypnutí a restartu z Prohlížeče událostí
Otevřete aplikaci Prohlížeč událostí
Přejděte do Windows Logs -> System
na levém panelu. Počkejte, až se načtou všechny protokoly. Klikněte na Filter Current Log
na pravém panelu. Typ 41, 1074, 6006, 6008 do textového pole pod položkou zahrnuje/nezahrnuje ID událostí a poté kliknutím na OK filtrujte protokoly událostí.
Z filtrovaných protokolů byl nalezen podezřelý protokol, který uvádí, že Cloudbase-Init zahájil restart počítače, jak je uvedeno níže:
To poskytlo nápovědu k dalšímu výzkumu a nalezlo chybu hlášenou v launchpadu související s cloudbase-init. Níže uvádím, proč došlo k automatickému restartu:
Z našeho cloudbase-init unattend.xml
soubor (C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\unattend.xml
), můžete si všimnout, že cloudbase-init se pokouší nastavit název hostitele ve specializovaných nastaveních. To způsobí, že se během kroku specializace spustí funkce SetComputerName, která změní název počítače na DESKTOP-<random string>
. Známým problémem ve Windows 10 je, že změna názvu počítače vyžaduje restart.
Jak zabránit automatickému restartování Windows10 VM na OpenStacku!
Děkuji Curtovi Mooreovi za jeho rychlé řešení. Totéž jsem se pokusil podrobně vysvětlit níže:
Krok 1: Nainstalujte Cloudbase-init pomocí MSI jako obvykle, s výjimkou toho, že během autoinstalace NEBUDE provádět automatické sysprep.
Krok 2: Po dokončení instalace Cloudbse-init spusťte z příkazového řádku následující příkaz (Spustit jako správce), abyste zakázali automatické spouštění servisní verze cloudbase-init pro Windows.
sc config cloudbase-init start= disabled
Krok 3: Upravte soubor unattend.xml a přidejte další RunSynchronousC
uzel, abyste znovu povolili automatické spouštění služby Windows init cloudbase. Tento příkaz _musí_ být nastaven jako <Order>1</Order>
a stávající bezobslužný uzel cloudbase-init nastaven na <Order>2</Order>
aby se příkaz re-enable spustil před bezobslužnou instancí cloudbase-init, která vyžaduje restart. Myšlenka je taková, že pokud znovu povolíme službu cloudbase-init (ale v tuto chvíli ji nerestartujeme) po restartu požadovaném bezobslužným cloudbase-init, instance služby Windows se spustí podle potřeby a nebude v rozporu s bezobslužnou instanci, protože již bude provedena. Níže je upravený soubor unattend.xml
soubor:
Krok 4: Po úpravě unattend.xml
ručně spusťte příkaz sysprep z příkazového řádku (Spustit jako správce) a odkazujte na upravený XML.
C:\Windows\system32>"%SYSTEMROOT%\system32\ sysprep\ sysprep. exe" /generalize /oobe /quit /unattend:C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\unattend.xml
Viz soubor unattend.xml
Odkazujte správně na cestu k souboru unattend.xml s ohledem na vaši instalaci.
Krok 5: Po sysprep uvolněte konfiguraci IP adresy Windows a poté okamžitě vypněte virtuální počítač.
Proč uvolnit IPTím se vyhnete opětovnému OBJEVENÍ stejné IP adresy, kterou měl virtuální počítač před sysprepped. To je problematické při spouštění virtuálního počítače v OpenStacku, protože segmenty sítě jsou zcela odlišné a Windows trvá ~10-20 sekund, než se přestanou pokoušet znovu OBJEVIT starou adresu a pouze vydají nový DHCP REQUEST.
ipconfig /release shutdown /s /f /t 1
Nyní nahrajte virtuální počítač Windows do OpenStack a spusťte instanci. Voila! virtuální počítač Windows10 se automaticky přihlásil a nerestartoval se!