usvi / easy_multi_pxe

5 stars 0 forks source link

Investigate if ADK / WAIK template can be dropped #4

Closed usvi closed 1 month ago

usvi commented 1 year ago

I heard last year that it might be possible to drop ADK / WAIK template and boot without them with some magic. Need to be investigated.

Considerations:

usvi commented 1 year ago

Pinging @NiKiZe . You told something about dropping ADK / WAIK earlier but I never got the chance to ask further :( If you have time, drop back in IRC.

NiKiZe commented 1 year ago

You can do part of this with the logic in https://github.com/NiKiZe/wimboot-install/blob/main/win10.ipxe

That repo is still WIP, it also runs it own deployment process. But current logic in this repo could be greatly reduced.

Drop all boot.sdi Try to drop BCD as well.

In terms of drivers above linked script adds the needed nic drivers, once windows setup launches it can load drivers over SMB from settings in unattended file. These drivers should only be the ones required for disk access.

NiKiZe commented 1 year ago

Some more info see https://github.com/NiKiZe/wimboot-install/tree/main/win10

Use win10 PE for all windows, you only need to match x32/x64. Download official ISO. Extract boot.wim Cleanup as described in link above, and you have a quite small PE wim file without the work of WAIK and friends.

And drivers added as described in post above, nothing is really added to the wim, other than at runtime.

usvi commented 1 year ago

Thanks, I'll dig in.

Edit: Holy shit, that is so ingenious. Mad props.

usvi commented 1 year ago

For my own records, a version of previous script:

https://github.com/usvi/easy_multi_pxe/blob/49e14826f83ecf8c695bcc0b93b6a770669df63b/scripts/emp_provision_wimdir.sh

usvi commented 1 year ago

Base boot.wim boots up. Need to experiment with winpe and startnet

usvi commented 1 year ago

@NiKiZe, I have a couple of questions. But only if you have time to answer.

startnet.php:

Why have this: cleandisk.cmd ECHO (ECHO select disk 0 ^&^& ECHO clean) ^| diskpart

Why install .Net 3.5 at all?

win10.ipxe:

E1D68

TODO 0d4f only installing drivers in winpe, not when getting into windows.

What kind of case is this? Does this mean that the final target .iso was in every case missing the drivers? So, putting the drivers to our template is only a band-aid to get the actual .iso / setup.exe running the first time? (This would result in installed Windows, but without network access.) I kind of never paid attention to this.

Thank you for your work again. I'm getting forward. Just fighting to get proper progress percentages for rest of wim operations.

usvi commented 1 year ago

Marking for posterity, use 39% as a rough convertion coeff for wim compression. So, wiminfo reports Total and Hardlink bytes. Final wim image size will be about (Total Bytes - Hardlink Bytes) * 0,39

NiKiZe commented 1 year ago

Cleandisk is a helper script to clean the disk that I prefer to use over unattend, ignore it. Same with NET3.5 I prefer to have it installed, some software don't work without it, and it takes longer to install from inside windows. I do use some of that logic to add cumulative update packs.

Windows have drivers for most devices in the installed environment, but do miss them in PE, however if any drivers was added to the PE environment, you might want to make them available for the full install as well. Not sure how to read your question. If you lack drivers after installation then you need to copy them in PE step, but I would only do this for network, and let everything else be done thru win update. Iso is never modified.

usvi commented 1 year ago

Windows have drivers for most devices in the installed environment, but do miss them in PE, however if any drivers was added to the PE environment, you might want to make them available for the full install as well. Not sure how to read your question. If you lack drivers after installation then you need to copy them in PE step, but I would only do this for network, and let everything else be done thru win update. Iso is never modified.

Thank you! I think I finally get it.

Here you instruct the installation to not boot automatically: @"s:\sources en\sources\setup.exe" /noreboot /unattend:"s:\extboot en\autounattend.xml"

Here you check what local drive we actually installed to: @for %%a in (C D E F G H I J K L M N O P Q R S T U V W Y Z) do @if exist %%a:\$WINDOWS.~BT\ set DRIVE=%%a

Here you will actually add the same driver to installed drive with dism: echo "Dism /Image:%DRIVE%:\ /Add-Driver /Driver:$drvload\r\n";

And you finally reboot here: exit

This is pure genius man!

usvi commented 1 year ago

Marking for posterity, use 39% as a rough convertion coeff for wim compression. So, wiminfo reports Total and Hardlink bytes. Final wim image size will be about (Total Bytes - Hardlink Bytes) * 0,39

Actually make that 40%.

usvi commented 1 month ago

Boot template has been working for long time. Could retest though. But assuming fixed for now. Especially as startnet.php works.