Portál AbcLinuxu, 21. dubna 2026 22:57

Windows 11 deployment - Golden Image / Sysprep

dnes 19:42 | Přečteno: 116× | windows | poslední úprava: dnes 19:53

Jak provádět hromadný deploy Windows 11? A čemu se vyvarovat?

Proč?

Důvod je hlavně ve firemním prostředí, resp. v prostředí, kde je velký počet stanic. Když tedy dorazí 100ks nových počítačů / notebooků, tak je třeba je nějak nainstalovat.


Druhy deployování

Existují tři základní způsoby, jak to dělat. Z toho jeden je špatný a jeden pomalý.

1) Naklonovat jeden pc na ostatní (špatný)

Nainstalovat jeden PC, ten zazálohovat Clonezillou, Acronisem apod. a pak ho obnovit na všechny ostatní, bez jakýchkoli úprav, to je velmi špatný nápad. Ve Windows zůstane uloženo spoustu věcí, učty a další věci mají stejný SID, machine ID se nemusí změnit atd. A to vše pak dělá problém v případě používání WSUS, Active Directory, některého typu sw apod.


2) Golden Image / Sysprep

Jedná se o jedinou podporovanou možnost. Princip je tedy takový, že se kompletně nainstaluje PC, všechny aplikace apod. Pak se provede sysprep, čímž se instalace uvede do režimu prvního spuštění. Při prvním spuštění se pak provede samoinstalace a inicializace. Výsledný stav je pak plně aktualizovaný OS se všemi programy, případně některými nastaveními.


3) Golden Image / sysprep + patch and deploy mgmt tool

Je to podobné předchozímu příkladu s tím, že v připraveném Golden Image nebude nainstalován žádný program, nic. Budou to čisté Windows. Po připojení do sítě se provede instalace agenta patch and deploy management nástroje a ten na základě pravidel tam sám nainstaluje požadovanou sadu sw a patchů. Příkladem takového nástroje je MS SCCM, N-Central apod.


Golden Image / sysprep - postup

V našem případě si ukážeme tuto možnost. Postup je tedy následující.

1) Start OS bez připojení k online účtu

Většina předinstalovaných Windows 11 vyžaduje při instalaci přihlášení k online účtu, vyžaduje připojení k netu a nedovolí založit lokálního uživatele. Lze to obejít několika způsoby, jedním z nich je spustit příkazový řádek. To lze v sekci s připojením k internetu, kdy dáme Shift + F10. To vyvolá cmd.exe, ve kterém pak provedeme bypass následovným příkazem "OOBE\BYPASSNRO". To restartuje PC a po nastartování už lze přeskočit přidání online účtu.
Myslím, že od verze 24H2 toto už nejde, ale místo něj lze spustit tento příkaz, který nám umožní obdobnou věc: start ms-cxh:localonly


2) Vypneme bitlocker

Minimálně každý dodaný ntb má zapnutý bitlocker. Se zapnutým bitlockerem nelze udělat sysprep. Je nutné jej tedy deaktivovat, což v překladu znamená zapnout a hned vypnout. Toto se nesmí dělat v auditovacím režimu sysprepu, musí se to provést v normálním režimu. Důvod je ten, že když se to udělá v auditovacím režimu, tak po obnově image na různé stroje se tváří vše ok, ale jen do doby, než zapneteme bitlocker. Tím dojde k nevratnému poškození dat, protože se bitlocker sice aktivuje, ale nikam si neuloží info o klíčích. Výsledkem pak je OS, co nebootuje a chcípne hned na začátku na nesmyslné hlášce aniž by nabídl možnost dešifrování. Toto je tedy celkem nebezpečné v tom, když máme takto poškozený image a pak se rozhodneme zapnout uživateli bitlocker až po nějaké delší době, kdy už má v PC nějaká svá data.


3) Full update včetně instalace aplikací

Po naběhnutí Windows provedeme full update OS, driverů apod. a nainstalujeme všechny naše aplikace, které chceme, aby byly součástí obrazu. Pokud máme starší build OS, můžeme provést upgrade na nejnovější build a pak smazat zálohu v podobě "Windows.old" pomocí klasického starého cleanup toolu, nebo toho nového cleanupu v novém nastavení.


4) Přepneme se do auditovacího módu

Auditovací mód je to, že se Windows restartují a naběhnou do prostředí, kde jsme automaticky přihlášení jako Administrátor. A je jedno, že je tento účet zakázán. Do auditovacího režimu se dostaneme takto:

REM run cmd.exe as administrator
cmd.exe

REM access to sysprep directory
cd C:\Windows\System32\sysprep

REM run sysprep audit mode
sysprep.exe /audit


5) Co udělat v auditovacím režimu

Můžeme zde provést nastavení OS, které se zachová i po zavolání pro vytvoření golden image. V tomto režimu je dobré odstranit námi vytvořený účet při instalaci OS, a to jak ve správě účtů, tak smazáním domovského adresáře "C:\users\uzivatel"

Restart OS nedeaktivuje auditovací mód. Pokud dojde k uzamknutí obrazovky, tak prostě jen restartujte PC a opět budete přihlášeni na plochu pod administratorem.


6) Finální kontrola

Je vhodné provést kontrolu FS a konzistence OS, zda je vše zdravé a není nikde problém, takže:

chkdsk c: /x
sfc /scannow


7) Sysprep generalizace

Nyní zbývá poslední možnost, spustit uvedení Windows do režimu prvního spuštění. My ale po obnovení image nechceme procházet instalátorem Windows / Asistentem prvního spuštění. Nechceme si ručně zakládat účet při instalaci, odpovídat na hlouposti apod. Windows mají možnost spoustu procesů automatizovat. Mají možnost vytvořit response file (soubor s odpověďmi / auto answer file), který za nás všechno jakoby projde.

Příklad response file, který proskáče celým instalátorem, zvolí jazyk češtinu, klávesnici českou, časové pásmo, vytvoří uživatele "spravce" s admin právy a příslušným heslem, které nevyprší a po prvním startu ho přihlásí. Soubor si uložíme pod názvem unattend.xml (já ho ukládám do adresáře "C:\Windows\System32\sysprep\")

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
	<settings pass="oobeSystem">
		<component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
			xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
			<InputLocale>0405:00000405</InputLocale>
			<SystemLocale>cs-CZ</SystemLocale>
			<UILanguage>cs-CZ</UILanguage>
			<UILanguageFallback>cs-CZ</UILanguageFallback>
			<UserLocale>cs-CZ</UserLocale>
		</component>
		<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
			xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
			<TimeZone>Central Europe Standard Time</TimeZone>
                        <ComputerName>Template</ComputerName>
			<OOBE>
				<HideEULAPage>true</HideEULAPage>
				<HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
				<HideLocalAccountScreen>true</HideLocalAccountScreen>
				<HideOnlineAccountScreens>true</HideOnlineAccountScreens>
				<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
				<NetworkLocation>Work</NetworkLocation>
				<ProtectYourPC>3</ProtectYourPC>
				<SkipMachineOOBE>true</SkipMachineOOBE>
				<SkipUserOOBE>true</SkipUserOOBE>
			</OOBE>
			<UserAccounts>
				<AdministratorPassword>
					<PlainText>true</PlainText>
					<Value></Value>
				</AdministratorPassword>
				<LocalAccounts>
					<LocalAccount wcm:action="add">
						<Group>Administrators</Group>
						<Name>spravce</Name>
						<Password>
							<PlainText>true</PlainText>
							<Value>supertajneheslo</Value>
						</Password>
					</LocalAccount>
				</LocalAccounts>
			</UserAccounts>
		</component>
	</settings>
	<settings pass="specialize">
		<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
			xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
			<RunSynchronous>
				<RunSynchronousCommand wcm:action="add">
					<Order>1</Order>
					<Path>net accounts /maxpwage:unlimited</Path>
					<WillReboot>Never</WillReboot>
				</RunSynchronousCommand>
				<RunSynchronousCommand wcm:action="add">
					<Order>2</Order>
					<Path>net user spravce /active:Yes</Path>
					<WillReboot>Never</WillReboot>
				</RunSynchronousCommand>
			</RunSynchronous>
		</component>
		<component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
			xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
			<SkipAutoActivation>true</SkipAutoActivation>
		</component>
		<component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
			xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
			<Identification>
				<JoinWorkgroup>WORKGROUP</JoinWorkgroup>
			</Identification>
		</component>
	</settings>
	<settings pass="windowsPE">
		<component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
			xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
			<InputLocale>0405:00000405</InputLocale>
			<SystemLocale>cs-CZ</SystemLocale>
			<UILanguage>cs-CZ</UILanguage>
			<UILanguageFallback>cs-CZ</UILanguageFallback>
			<UserLocale>cs-CZ</UserLocale>
			<SetupUILanguage>
				<UILanguage>cs-CZ</UILanguage>
			</SetupUILanguage>
		</component>
	</settings>
</unattend>

Je to jen příklad, automatizovat lze spoustu věcí včetně joinu PC do AD. Každý nechť si vytvoří soubor dle vlastních potřeb.

Následně už můžeme spustit sysprep generalizaci

REM run cmd.exe as administrator
cmd.exe

REM access to sysprep directory
cd C:\Windows\System32\sysprep

REM run sysprep generalize
sysprep /generalize /oobe /unattend:unattend.xml /shutdown


Možné problémy

Tyto dva problémy jsou takový běžný stav

1) nainstalované app bránící generalizaci

Když stanici připojíme k internetu, tak si stáhne různé aplikace, které blokují dokončení sysprep procesu. V takovém případě se podíváme do logu, kvůli čemuže to vyhodilo chybu a provedeme odinstalaci oné aplikace, příklad, jak na to:

Remove-AppxPackage -Package Fitbit.FitbitCoach_4.4.133.0_x64__6mqt6hf9g46tw -AllUsers
Těchto aplikací tam může být třeba pět. Takže opakujeme, dokud generalizace neprojde.


2) Vyskočené okno, co nabízí restart

Může se stát, že během procesu generalizace vyskočí okno, že došlo ke změnám v systému a je nutný provést restart, zda to chceme udělat. No, rozhodně ne, protože když to odbouchnete, tak dojde k restartu uprostřed procesu generalizace a skončíte s nefunkčním obrazem. Okno buď nepotvrozvat, nebo zrušit křížkem.

3) Bitlocker

Jak už jsme nastínili na začátku, bitlocker se musí vypnout ještě před vstupem do auditovacího režimu. Pokud jsme to zkonili a image je z tohoto pohledu nefunkční a tlačí nás čas, tak to má řešení. Po obnově image je třeba nabootovat recovery mod Windows a přegenerovat bootloader

REM oprav-uefi.txt
select disk 0
select volume 1
assign letter=G

REM oprav.bat
diskpart /s oprav-uefi.txt
bcdboot C:\windows /s G: /f UEFI

Tj. ano, zklohněná deaktivace bitlockeru asi něco zanechá v nastavení bootu a tímto se to přemázne / opraví. Víc jsem po tom nepátral.


8) Vytvoříme image

Máme tedy vypnutý PC, na kterém je předpřipravený systém pro spuštění. Uděláme si tedy image, který následně obnovíme na všechny nové stroje. Image můžeme udělat čím chceme, já to dělám pomocí clonezilla, kterou bootuji ze sítě (PXE Boot) a opět stejným způsobem obnovuji image na nové stroje (Clonezilla přes PXE Boot).


Jeden universální image, nebo per model?

Ze začátku se jeví universální image jako dobrý nápad, ale nakonec jsme šli cestou image per model. U kusových objednávek se image neřeší, u větších trvá jeho vytvoření nějakou krátkou dobu (časově pro mašinu den, časově pro správce 2-3h), ale člověk má pak na skladě třeba 100ks ntb s plně ověřenou konfigurací. V minulosti nám totiž nastalo několik problémů, které jsme se rozhodli, že už nikdy nechceme řešit.

První problém byl, že vendor nám odmítl reklamaci kvůli čisté instalaci, se kterou on hw nedodává. Tenkrát se řešila záhada, kterou mohl dělat OS, ale nemusel. Nakonec kolega vydyndal od vendora image a tam se to chovalo stejně, takže pak reklamace byla uznána. Tenkrát to bylo myslím HP. Podrobnosti neznám, řešil kolega, ale chyba nešla tenkrát nasimulovat (myslím, že náhodně tuhly usb po x hodinách práce na pc). V dalším případě se nám stalo u Lenova, že po čisté instalaci a sadě driverů přímo od Lenova se po nějaké době stáhly nějaké poškozené drivery, co deaktivovaly touchpad / myš (poškodily driver). A pořád se to vracelo. Zajímavé bylo, že u originálního image to nedělalo. Od doby, co jsme přešli na generování golden image z OEM dodaného image neevidujeme jediný problém.


Závěr

Windows nejsou úplně hloupé, když člověk zapátrá, je tam dost prostoru pro automatizaci, která je oficiálně podporována přímo od MS. Bohužel, i dnes se člověk setká s tím, že IT instaluje třeba 50 zařízení ručně kus po kusu. Je to až neuvěřitelné, obzvláště, když jsou zde nástroje plně zdarma, co to bez problémů pokryjí. Nám stačí jen clonezilla, ale existují projekty jako FOG, které jdou ještě dál.

Příště si ukážeme, jak jednoduše vypadá PXE Boot a jak lze pomocí něj automatizovat deployment golden image.

Zdar Max

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

dnes 22:12 RealJ | skóre: 10
Rozbalit Rozbalit vše Re: Windows 11 deployment - Golden Image / Sysprep
Odpovědět | Sbalit | Link | Blokovat | Admin
pokud pouzivate 365 proc misto tohodle lokalniho bastleni nepouzijes prihlaseni o365 uctem uzivatele a vse se mu nainstaluje/nakonfiguruje pres intune?

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.