Portál AbcLinuxu, 21. dubna 2026 22:57
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.
Existují tři základní způsoby, jak to dělat. Z toho jeden je špatný a jeden pomalý.
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.
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.
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.
V našem případě si ukážeme tuto možnost. Postup je tedy následující.
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
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.
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í.
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
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.
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
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
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 -AllUsersTě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.
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).
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.
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
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.