JFX has compiled a WimBootCompress.ini file for use with his WinNTSetup project that includes a list of files in the [PrepopulateList] section that will result in a Windows 10 installation that boots using compression formats other than xpress4k - I have tested this with xpress16k and lzx compression formats.
I suppose that DISM doesn't run into this problem because it probably only uses XPRESS4K.
With "WIMBoot" I also did not run into this problem, since the Windows 8.1 early boot code apparently did in fact support compression formats other than XPRESS4K. But maybe they have disabled all formats except XPRESS4K for "compact mode".
I'm not sure why Microsoft keeps using XPRESS4K; it's not actually a very good choice of compression format in my opinion.
Nevertheless, perhaps, if a list of files that need to be read before wof.sys is loaded could be hard-coded in wimlib, then it could support "compacting" with formats other than XPRESS4K. It would just use XPRESS4K for the hard-coded files or leave them uncompressed.
The following is a combination of JFX's WimBootCompress.ini with the WimBootCompress.ini file included in Windows 10 -
Code: Select all
; This is the inbox configuration file used for deploying or capture a
; WIMBoot system. Please do not remove this file because WIMCaptureImage
; and WIMApplyImage will fail if WIM_FLAG_WIM_BOOT flag is specified.
[CompressionExclusionList]
ntoskrnl.exe
[PrepopulateList]
*winload.*
*winresume.*
\Windows\AppPatch\drvmain.sdb
\Windows\Fonts\vgaoem.fon
\Windows\Fonts\vgasys.fon
\Windows\INF\errata.inf
\Windows\System32\config\*
\Windows\System32\ntkrnlpa.exe
\Windows\System32\ntoskrnl.exe
\Windows\System32\bootvid.dll
\Windows\System32\ci.dll
\Windows\System32\hal*.dll
\Windows\System32\mcupdate_AuthenticAMD.dll
\Windows\System32\mcupdate_GenuineIntel.dll
\Windows\System32\pshed.dll
\Windows\System32\apisetschema.dll
\Windows\System32\api-ms-win*.dll
\Windows\System32\ext-ms-win*.dll
\Windows\System32\KernelBase.dll
\Windows\System32\drivers\*.sys
\Windows\System32\*.nls
\Windows\System32\kbd*.dll
\Windows\System32\kd*.dll
\Windows\System32\clfs.sys
\Windows\System32\CodeIntegrity\driver.stl
[ExclusionList]
\$bootdrive$
\$dwnlvldrive$
\$lsdrive$
\$installdrive$
\$Recycle.Bin\*
\bootsect.bak
\hiberfil.sys
\pagefile.sys
\ProgramData\Microsoft\Windows\SQM
\System Volume Information
\Users\*\AppData\Local\GDIPFONTCACHEV1.DAT
\Users\*\NTUSER.DAT*.TM.blf
\Users\*\NTUSER.DAT*.regtrans-ms
\Users\*\NTUSER.DAT*.log*
\Windows\AppCompat\Programs\Amcache.hve*.TM.blf
\Windows\AppCompat\Programs\Amcache.hve*.regtrans-ms
\Windows\AppCompat\Programs\Amcache.hve*.log*
\Windows\CSC
\Windows\Debug\*
\Windows\Logs\*
\Windows\Panther\*.etl
\Windows\Panther\*.log
\Windows\Panther\FastCleanup
\Windows\Panther\img
\Windows\Panther\Licenses
\Windows\Panther\MigLog*.xml
\Windows\Panther\Resources
\Windows\Panther\Rollback
\Windows\Panther\Setup*
\Windows\Panther\UnattendGC
\Windows\Panther\upgradematrix
\Windows\Prefetch\*
\Windows\ServiceProfiles\LocalService\NTUSER.DAT*.TM.blf
\Windows\ServiceProfiles\LocalService\NTUSER.DAT*.regtrans-ms
\Windows\ServiceProfiles\LocalService\NTUSER.DAT*.log*
\Windows\ServiceProfiles\NetworkService\NTUSER.DAT*.TM.blf
\Windows\ServiceProfiles\NetworkService\NTUSER.DAT*.regtrans-ms
\Windows\ServiceProfiles\NetworkService\NTUSER.DAT*.log*
\Windows\System32\config\RegBack\*
\Windows\System32\config\*.TM.blf
\Windows\System32\config\*.regtrans-ms
\Windows\System32\config\*.log*
\Windows\System32\SMI\Store\Machine\SCHEMA.DAT*.TM.blf
\Windows\System32\SMI\Store\Machine\SCHEMA.DAT*.regtrans-ms
\Windows\System32\SMI\Store\Machine\SCHEMA.DAT*.log*
\Windows\System32\sysprep\Panther
\Windows\System32\winevt\Logs\*
\Windows\System32\winevt\TraceFormat\*
\Windows\Temp\*
\Windows\TSSysprep.log
\Windows\winsxs\poqexec.log
\Windows\winsxs\ManifestCache\*
\Windows\servicing\Sessions\*_*.xml
\Windows\servicing\Sessions\Sessions.back.xml
[CompressionFolderList]
\Windows\System32\WinEvt\Logs
\Windows\Installer
My tests were carried out using install.wim from a Windows 10 Enterprise LTSB source.
Using the unmodified install.wim Windows reported the following used space when right-clicking on the systemdrive and selecting Properties (in the running operating system - after the installation had completed and Windows 10 had booted) -
* 5.14 GB (--compact format=xpress4k)
Using the settings listed in this post in the WimBootCompress.ini file, used space -
* 4.99 GB (--compact format=xpress16k)
* 4.75 GB (--compact format=lzx)
For comparison purposes, the same Windows 10 source applied without the --compact switch -
* 6.45 GB
Regards,
Misty