Hirdetés

Windows PE moddolás alapszinten UEFI PXE boothoz

PXE vs UEFI

Szóval van az, hogy UEFI-s gépeket akarsz bootolni PXE-ről, mondjuk hogy könnyebb legyen telepíteni. Windowst is kellene, de a mezei Windows telepítő túl nagy, meg UEFI-n nem is nagyon megy a memdisk jellegű brute force betöltés. iPXE alól Sanboot-tal bootolva viszont a Windows telepítő nem igazán működik (nincs hálózat, nincsenek driverek, így maga a telepítő elindul, de amit feltelepítene, az nincs meg).

Ami működik, az az, hogy iPXE-ből Sanboot-tal bebootolsz egy Windows PE alapú bármit :
sanboot http://szerver.neve/windowspe.iso

Pl. Hiren's, BartPE, és onnan kitallózni a Windows telepítőt, ami így már lefut... nekem ezek olyan hibákkal hasaltak el, hogy túl nagy az ISO, nem lehetett őket UEFI esetben bebootolni (BIOS-on ment rendben).
Kivéve a natúr WinPE, ami kb. 350MB. Ezt valahol a Wayback Machine-n sikerült találni. Valami tök szűz WinPE image, kapsz egy parancssort, de amúgy van háló, net use... felhúzod a telepítőt tartalmazó könyvtárt, és setup.exe .

Na de ez így macera. :D Meg akadhat helyzet, amikor (nem otthon) sok gépet kéne húzni, akkor nem akarsz ennyit gépelni. Ez a WinPE cucc pedig a Windows ADK (Assessment Deployment Kit) műve, és mint ilyet, lehet reszelni. ;] (Nem a semmiből jön a Hiren's/BartPE/Strelec sem...)

Windows ADK

Az első lépés, hogy letöltöd és telepíted a Windows ADK-t. Ez ingyenes.


Így néz ki a szerkesztés :D

Létre kell hozni pár könyvtárat, ahova majd ki lesz másolva a WinPE, meg ahol szerkesztjük.

Tehát először, létre kell hozni egy WinPE-t (Deployment and Imaging Tools Environment -et indítsd el a Start menüből) :
copype amd64 C:\Users\Win11\shared\WPE64_ADK
Ez a WPE64_ADK könyvtárba letesz egy kicsomagolt WinPE-t.

Módosítás

A leendő ISO nagy része egy .wim file-ban van (Windows IMage), amikből amúgy akár bootolni is lehet a wimboot kernellel. Azt a boot.wim-et kell felcsatolni, amiben a WinPE-nk tulajdonképpen van (ezen kívül a .ISO-ban van a bootkód, meg némi nyelvi csomag). Ezt a WPE64_WIMEDIT könyvtárba csatolja ez a parancs :

dism /Mount-image /imagefile:"C:\Users\Win11\shared\WPE64_ADK\media\sources\boot.wim" /index:1 /MountDir:"C:\Users\Win11\shared\WPE64_WIMEDIT"

Itt lehet szerkeszteni a startnet.bat-ot. Ez természetesen nem valami emberi helyen van, hanem a C:\Windows\system32 -ben (jó, %SYSTEMROOT%\system32 -ben ) . Ez a .bat lefut a WinPE indulásakor. Alapból megfuttatja a wpeinit.exe -t, ami elvégzi a környezet beállíátást, és felhúzza a hálót, utána meg jön a parancssor. A saját parancsokat a wpeinit paracs után érdemes beírni a startnet.cmd-be, és akkor azok is lefutnak. Magam részéről ennyit csináltam a startnet.cmd-ben :

wpeinit
timeout /t 10
net use g: \\192.168.1.106\data
g:
go.bat
timeout /t 10

Pont ami kell. Vár egy kicsit (fura, nem mindig működik a timeout parancs, azaz amikor újragyártottam az ISO-t, akkor már nem ette...), hogy tuti legyen cím DHCP-ről, csatolja g:-nek a hálózati meghajtót, és onnan elindítja a go.bat-ot.

Érdemes valami minimálisat tenni bele, mert az ISO-ban módosítani utólag macera, így ha egy fix nevű .bat -ot adunk meg, azt a megosztott könyvtárban már bármikor átírhatjuk, az fog történni, ami belekerült. Ide aztán mehet menü, fix útvonalas setup.exe, akármi.

Természetesen a kicsomagolt .WIM-ben levő cuccot nem lehet szerkeszteni. Azaz lehet, csak rámenteni nem lehet. :W
Tehát valahol máshol létrehozol egy file-t, beleírod, amit kell, és adminként felülírod vele a .WIM-ben levőt. :W :O
(Erre biztos van egyszerűbb/kulturáltabb módszer, de a fene, jelenleg elég volt ennyi is. Vagy hát nagyon remélem, hogy van. Vannak mindenféle pofás WinPE customizer progik, de valahogy egyik sem azt csinálta, amit kellett volna. :( )

Ha Windows 11 telepítést is akarsz a WinPE-ről indítani, akkor szükség lesz még pár opcionális cuccra a PE-be. (Különben a Windows 11 telepítő annyit fog mondani, hogy ez a számítógép nem alkalmas a Windows 11 futtatására, a 10-é meg simán megy.)
Dism.exe /Add-Package /Image:"C:\Users\Win11\shared\WPE64_WIMEDIT" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-WMI.cab"

Dism.exe /Add-Package /Image:"C:\Users\Win11\shared\WPE64_WIMEDIT" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-WMI_en-us.cab"

Dism.exe /Add-Package /Image:"C:\Users\Win11\shared\WPE64_WIMEDIT" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-SecureStartup.cab"

Dism.exe /Add-Package /Image:"C:\Users\Win11\shared\WPE64_WIMEDIT" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-SecureStartup_en-us.cab"

Ha kész a módosítás, akkor lecsatolni a .wim-et :
dism /Unmount-Image /MountDir:"C:\Users\Win11\shared\WPE64_WIMEDIT" /Commit
(Ennek van egy /Discard opciója is, ha nem akarjuk belepakolni a .WIM-be a módosításokat, vagy nem hajlandó lecsatolódni az image. Ez gyakori :( .)

Ha nem akarod, hogy induláskor "Press any key to boot from CD or DVD..." akkor a C:\Program Files\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg\efisys_noprompt.bin -t másold az korábban létrehozott WPE64_ADK könyvtárban a fwfiles alkönyvtárba, az efisys.bin -t töröld, és ezt a noprompt-osat nevezd át efisys.bn-re. (Ha nincs meg az efisys.bin, akkor nem fogja létrehozni a végén a CD-t - és persze nem lesz hibaüzenet, csak "Failed".) A bootfix.bin-t is lehet törölni, de az elvileg csak legacy bootra oldja meg, hogy ne kérjen nyomkodást.

Végül meg kell alkotni a .ISO-t a WPE64_ADK tartalmából :
MakeWinPEMedia /ISO "C:\Users\Win11\shared\WPE64_ADK" "C:\Users\Win11\shared\WPE64_ADK.iso"

Ellenőrizni a .WIM állapotát (ez a lecsatolás után is jól jön, mert nem mindig csatolódik le, és kb. kezdheted elölről a műveletet - legalábbis nekem csomószor el sem indult a legyártott .ISO, ami akár attól is lehetett, hogy a .WIM nem lett lezárva) ezzel a paranccsal lehet :

dism /get-mountedwiminfo
(Ez megmondja, van-e .WIM még becsatolva valahova.)

Ha mindig olyan üzeneteket kapsz, hogy a WIM már csatolva van, akkor a dism /cleanup-wim segíthet, meg törölni az összes könyvtárat, amit létrehoztál.

Ezután a kész .ISO használható PXE-n is, CD-re írva is, ISO-ként is.

Nézzük, mit tud


Bootol (ez az iPXE bootmenüm, tele sanboot-os Windows telepítő tesztbejegyzéssel, meg azzal a netboot-os Debian Stable-el, amit használok is :D )


Startnet.cmd


Van háló, meg hálózati meghajtó is

Magam ritkán telepítek Windowst itthon, de még ehhez is megérte, hogy nem kell semmit csinálni vele; rányom a menüre, jön a hálózati meghajtó, cd a megfelelő könyvtárba, és setup.exe - itthon felesleges lefixálni, hogy mi induljon, mert úgyis mindig helyzettől függ.
Aki sokat telepít, annak is pont ezért lehet hasznos; ha van újabb telepítőverzió, akkor csak kimásolja az ISO tartalmát abba a könyvtárba, ahol a WinPE keresi, és a következő PXE bootos gép már az új telepítőt fogja futtatni.

Felhasznált irodalom (annak a pár napnyi Google-zésnek az eredménye, amíg minden működött :D ) :
https://oofhours.com/2021/01/18/booting-your-own-windows-pe-image/
https://superuser.com/questions/228727/automatically-boot-cd (elvileg ez a jó)
https://serverfault.com/questions/353826/windows-boot-iso-file-without-press-any-key
https://www.elevenforum.com/t/winpe-create-a-custom-windows-install-usb.4804/
https://www.itprotoday.com/compute-engines/q-how-can-i-quickly-find-any-wim-files-are-mounted-using-deployment-image-servicing#close-modal
https://superuser.com/questions/1091544/force-dism-to-unmount-delete-a-mounted-windows-wim
https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/winpeshlini-reference-launching-an-app-when-winpe-starts?view=windows-11
https://stackoverflow.com/questions/9392874/bat-file-open-new-cmd-window-and-execute-a-command-in-there
https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/dism-image-management-command-line-options-s14?view=windows-11
https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/mount-and-modify-a-windows-image-using-dism?view=windows-11
https://rpi4cluster.com/pxe/win/
https://slightlyovercomplicated.com/2016/11/07/windows-pe-startup-sequence-explained/

Tovább a fórumba.