Univerzálny image systému Windows XP
Spôsob vytvorenia takmer univerzálne použiteľného obrazu systému Windows XP. Tento postup vyžaduje určité znalosti a nie je určený úplným laikom, preto neriešim určité elementárne procesy ako napr. spôsob vytvorenia samotného image, ako vytvoriť boot CD s image a pod.
Sledoval som mnoho diskusií, či a prípadne akým spôsobom je možné preniesť operačný systém Windows na iný hardvér. Výsledkom bolo mnoho dohadov a prakticky skoro vždy uzáver, že to možné nie je, alebo je to možné len v obmedzenom množstve prípadov a aj to len s problémami.
V tomto článku sa zameriam na spôsob vytvorenia takmer univerzálneho obrazu (angl. image) systému Windows XP, ktorý používam už dlhší čas. S výsledným image je možne sprevádzkovať systém na cieľovom počítači za cca. 15 minút.
System Preparation Tool
Microsoft poskytuje nástroj Sysprep (System Preparation Tool), ktorý úlohu vytvorenia takéhoto image výrazne uľahčuje. Sysprep je priamo určený pre prípravu predkonfigurovaného systému pre spustenie na počítačoch dokonca s rôznym hardvérom. Sysprep umožňuje priradiť nový security ID (SID) a plne nakonfigurovať systém podľa určených požiadaviek.
V ďalšom texte budem používať termín radič, aj keď radič disku je v prípade ATA disku umiestnený vždy priamo na disku a na MB sa nachádza tzv. host-adapter.
Z hardvérového hľadiska je pri použití Sysprep-u potrebné splniť niekoľko podmienok. Zdrojový a cieľový počítač musia mať kompatibilné hardware abstraction layers (HAL) a zhodné mass-storage radiče (IDE alebo SCSI). Potreba zhodných radičov vedie k známej chybe Stop 0x0000007B alebo INACCESSIBLE_BOOT_DEVICE, čo len potvrdzuje domnienku, že jednoduché prenesenie systému na MB s iným radičom nie je možné, t.j. je nutné preinštalovať systém. Sysprep však umožňuje vyriešiť potrebu zhodných radičov zahrnutím všetkých mass-storage zariadení identifikovaných v
Machine.inf
,
Scsi.inf
,
Pnpscsi.inf
a
Mshdc.inf
do výsledného image. Toto je dosiahnuté pridaním položky BuildMassStorageSection = Yes do sekcie Sysprep v súbore
sysprep.inf
.
Postup pri príprave systému
Pri príprave systému najprv nainštalujeme systém, aktualizácie a všetky požadované aplikácie. Samozrejme, že ak chceme mať univerzálny image, neinštalujeme nijaké hardvérovo závislé aplikácie a ovládače. Vytvoríme v roote systémového disku adresár sysprep a z inštalačného CD tam nakopírujeme obsah archívu support\tools\deploy.cab (je nutné použiť originálne CD Windows XP SP2, v prípade použitia staršej verzie je nutné stiahnuť zo stránok Microsoftu súbor WindowsXP-KB838080-SP2-DeployTools-ENU.cab).
Ďalej v adresári
sysprep
vytvoríme textový súbor
sysprep.inf
, ktorý bude obsahovať požadovanú konfiguráciu systému. Obsah
sysprep.inf
môže byť napríklad takýto:
[Unattended]
OemSkipEula=Yes
[GuiUnattended]
AdminPassword="1111"
EncryptedAdminPassword=NO
OEMSkipRegional=1
OemSkipWelcome=1
[UserData]
ProductKey=XXXXX- XXXXX - XXXXX - XXXXX - XXXXX
FullName=""
OrgName=""
[Identification]
JoinWorkgroup=WORKGROUP
[Networking]
InstallDefaultComponents=Yes
[Sysprep]
BuildMassStorageSection = Yes
[SysprepMassStorage]
Význam jednotlivých položiek je detailne vysvetlený v dokumentácii. Pre nás je zaujímavá hlavne položka
BuildMassStorageSection = Yes
, ktorá tu musí byť, ak chceme použiť image na počítačoch s rôznymi radičmi. V tomto prípade musí sekcia
SysprepMassStorage
zostať prázdna, pretože si ju sysprep vyplní sám.
Po dokončení konfigurácie spustíme
sysprep.exe
, zaškrtneme Use Mini-Setup, Detect non-plug and play hardware a stlačíme Reseal.
Proces prípravy bude trvať 15-20 min, potom sa počítač vypne (nereštartovať pred vytvorením image). Teraz môžeme urobiť image - vôbec nezáleží na tom, či použijeme Ghost, Paragon, Acronis, dd a pod., všetky robia to isté. Vytvorený image môžeme napríklad napáliť na DVD.
Po obnovení image na cieľový počítač a štarte systému prebehne konfigurácia systému a zobrazí sa séria konfiguračných dialógov podľa toho, ako sme to definovali v
sysprep.inf
.
Výsledný image by mal pracovať na všetkých počítačoch s kompatibilnými HAL. Samozrejme, existujú prípady, že sa systém z nejakého dôvodu nerozbehne, ale to je skôr výnimka. V prípade, že je nutné použiť nejaký externý ovládač, je tu možnosť zaintegrovať ho pomocou
sysprep.inf
(viac v dokumentácii).
Ešte lepšie výsledky sa dajú dosiahnuť kombináciou sysprep-u a Acronis True Image s Acronis Universal Restore – ovládače sa dajú vnútiť v priebehu obnovovania image na cieľový počítač.
Celý proces prevádzam virtualizovane v prostredí VMware, napriek tomu nie je problém použiť následne takýto image na reálne PC.
Pozerám od začiatku a len tak narýchlo, ale píše sa tam, že v prípade iného radiča systém nepôjde. A prečo? Veď bootovanie systému riadi BIOS spustením kódu v MBR. Ostatné je už na systéme, ktorý prevzal kontrolu nad bootovaním. Systém nabehne keď aj s PIO módom pre disky. Potom by malo stačiť už len odinštalovať radiče a systém si správny nainštaluje sám. Alebo točím o niečom úplne inom?
BTW: V ankete mi chýba možnosť:
- článok ma zaujíma, ale ho nevyužijem
opomněl jsi, jakým způsobem se zavádí Windows. Vtip je v tom, že (zjednodušeně) ntloader natáhne jen kernel s kernel drivery. A pokud mezi kerneldrivery není ovladač IDE řadiče (typicky Promise, HighPoint, SiliconImage), nemá kernel odkud pokračovat v bootování a skončí to v BSOD.
Zjednodušeně se to velmi podobá situaci na linuxu (pokud znáš linux), kdy bootuješ pomocí jádra a initrd s drivery(ramdisku) a až následně se chrootuješ do reálného systému. Když LILO nebo Grub nenajde ramdisk, taky se z kernelu stane panic
Dobre, ale ako je možné reštartovať systém ak odinštalujem ovladače radiča v správcovi zariadení? Už to párkrát odporučil JaFi pri problémoch s DMA tu v poradni.
info o ovladacoch mass-storage zariadeni sa nachádza v tzv. Critical Device Database. Ked pridas novy disk nainstaluje sa ovladac pre radic podla tejto databazy. Rovnako ked ovladac odinstalujes nainstaluje sa po restarte ovladac z tejto databazy. Pri vymene radica sa moze stat, ze driver ktory sa nachadza v databaze, nie je vhodny -> BSOD. Odinstalovanim ovladaca neodstranis info o ovladaci z databazy. Databaza bezne obsahuje len udaje o ovladaci pre aktualne pouzivany radic, preto ten parameter BuildMassStorageSection = Yes.
presne tak, ntloader este vyuziva sluzby biosu pre pristup k disku, ale v okamihu ked by mal zodpovednost prevzat ovladac, tak system ide do BSOD
Vynikající článek. Sice znám, ale nepoužívám. Na druhou stranu je celý postup krásně "setřepán" do jednoho srozumitelného článku.
Tak tohle si zaslouží pochvalu! Díky za skvělej článek.
Pavel