[SOLVED] Multi-image mounting and old stable presets problem

George King

Active Member
Hi,

I just launched my scripts to process fully working Windows 7 project. As it's time consuming long process that end in single install.esd with 144 editions after about 30 hours of processing I noticed for me weird thing.

I have untouched and stable preset (created maybe around 08-2021) which is used to clean up images after sysprep. Install.wim contains 36 different single language editions.
Now I'm in my process in "Image cleanup phase" but really funny is NTLite now trying to mount all images (all 18 x86 now) at once? Why the hell? On C:\ I have like 50GB free space. Where will be these images mounted? And of course this is really slow process? Probably caused by not enough free space? After this cleanup is launched another one on x64. And then on all of them is launched NTLite processing. Does this mean I need to manualy change this settings somewhere App, preset? What happends when I'm going to process 144 images? It will try again mount all of them? I don't like this new forced option.

I'm not expecting breaking old stable presets with newer NTLite version..

P.S. nuhi Please review image sorting when you have image with more than 100 images, your code is probably only max to 99. Now 100 image is sorted after 1. Sort index should be created like Right("000" + image number, 3), currenly it works like Right("00" + image number, 2)

NOTE: This removal process was around 3hours on 18 editions with recompressing all 36 in install.wim, now after 1 hour it processing second image cleanup..
 

Attachments

  • Rebuild_Client_E.xml
    4.2 KB
  • Rebuild_Client_x64.xml
    20 KB
  • Rebuild_Client_x86.xml
    20 KB
Last edited:
Can anybody tell me how to disable this feature? I don't see that in Tools settings.

And I can confirm this feature is stupid and will mount and mount images until 0b free space on C:\ Then NTLite crash without any log as there is no space to write it.
 
I'm always do this process from command line, now I have tried it manually and same thing happends too.

I think there is no option to disable paralel mounting, nothing in Settings.xml / Tool settings.

I need to disable it as it's really useless for huge images.
This is start base - fully updated 04-2022 and SysPreped all Windows 7 editions in single language, then cleanup presets from first post are applied. Then are merged Full and lite install.wim so it became 72 images. Then another session with drivers integration is lauched and final image is 144v1... It's unacceptable to mount all images at once.

1651654701215.png
 
Last edited:
Thanks for the feedback, parallel mounting saves time on very commonly unused CPU cores, but indeed your special stress test scenario wasn't taken into account.
It mounts at one time as many threads (-1) as you have. But at the end it is too much to go at once for this case.
Will send you a test version with an off switch in settings.xml for now, later it should stop at the mentioned number with mounting at once - plus option to choose how many in the UI.

Writing down sorting issue for later.
 
Last edited:
I have added that switch, but now it prompts warning about components removal. Without that switch this prompt doesn't exist

Code:
"%ProgramFiles%\NTLite\ntlite.exe" /ParallelEditions:0 /LoadImage:"%~dp0_output\sources\install.wim" /ImageIndex:34 /LoadPreset:"%~dp0Presets\Rebuild_Client_x64.xml" /ExitAfter:1
 
Hi nuhi,

I just updated to v2023.11.9477 and seems like you removed NTLite parameter /ParallelEditions:0

Is there any reason for that? I don't see any option in setting in that case.
 
Hi nuhi,

I just updated to v2023.11.9477 and seems like you removed NTLite parameter /ParallelEditions:0

Is there any reason for that? I don't see any option in setting in that case.
All the known issues were fixed with parallel mode, and to disable it if needed, select "Standard" update extraction in the Updates page toolbar.

Let me know why would you disable the parallel integration in the multi-edition case? So that it can be improved, as it saves time.
If it's for large images as above, then I would just need to make it go few by few, how many editions at once would you say is recommended?
Can it be number of CPU cores?
 
So it's now fine to process for example Windows 7 WIM which have 36 images inside?
In past NTLite eats all my free space.. So now it's safe?

Otherwise mounting and integrating updates to latest Windows 10 base will be pain, 22 images mounted at once will require a lot of free space.
 
So it takes care not to take more than CPU threads of mounts and integrations at the same time.
But it is true that it will keep loaded more than that, so space is the only limitation.

Three solutions as things are:

- change temporary folder (Menu - Settings) to the location with enough space
Today storage is cheap, it is a waste to wait 10 times longer when it can all be done at the same time

- if you don't have the space: disable parallelism in the toolbar as explained, new version should behave like /ParallelEditions:0 with the "Standard" extract option.

- or split the image into what can be handled space-wise, then merge (export) one into another (append option on export destination selection)
 
Sorry I'm not going to buy 4TB SSD for this game right now. 130 Images mounted at once is bullshit and it really sucks.

Just add some kind of remaining space calculation?

For example you have this limit implemented and you don't allow mounting image when you have less than 10GB space. Even when my image require 3GB to mount only, NTLite won't do that.

This must be improved. I understand paralel mechanism benefits, but exactly now it's bugged and I still need to use "old" method.

When I have for example 100GB free on my drive where is located TEMP directory you need to know how many images can be paralel processed at once. This mean for example max 3-4 images, Depends on image size, which is available in WIM info.
 
Last edited:
Do you really have 144 editions on that image? :)
I could automatically disable the parallelism if more than 20 detected?

It's too complex to calculate the needed space, depends on the specific version and update.
But it could maybe go something like number of editions * 3GB or so.

I see you have maybe 36 editions, 100GB should be enough.
Let me know if it ends up needing that much.

Please try first with parallel and keep your eye on free space, otherwise see my previous reply how to handle it (splitting or disabling the feature in the UI).
 
I will perform some tests soon.

Yes, for Windows 7 project I have 144 images in single WIM / ESD (depends on settings, can be more or less).
There are 36 different Windows 7 versions. Thin PC and Embbeded are not part of this list from various reasons. Just "standard" Editions in x86 and x64.

Then each image get X variants
1. Integrated, Syspreped and Captured image on my own
2. Integrated image with drivers
3. Image with CleanUpdate Backup and Drivers cleanup
4. Image with Basic removal preset
5. Image with Stable removal preset
6. Image with Extreme removal preset

Code:
Display Name:           1. Windows 7 Starter
Display Name:           2. Windows 7 Starter E
Display Name:           3. Windows 7 Starter N
Display Name:           4. Windows 7 Starter
Display Name:           5. Windows 7 Starter E
Display Name:           6. Windows 7 Starter N
Display Name:           7. Windows 7 Home Basic
Display Name:           8. Windows 7 Home Basic E
Display Name:           9. Windows 7 Home Basic N
Display Name:           10. Windows 7 Home Basic
Display Name:           11. Windows 7 Home Basic E
Display Name:           12. Windows 7 Home Basic N
Display Name:           13. Windows 7 Home Premium
Display Name:           14. Windows 7 Home Premium E
Display Name:           15. Windows 7 Home Premium N
Display Name:           16. Windows 7 Home Premium
Display Name:           17. Windows 7 Home Premium E
Display Name:           18. Windows 7 Home Premium N
Display Name:           19. Windows 7 Professional
Display Name:           20. Windows 7 Professional E
Display Name:           21. Windows 7 Professional N
Display Name:           22. Windows 7 Professional
Display Name:           23. Windows 7 Professional E
Display Name:           24. Windows 7 Professional N
Display Name:           25. Windows 7 Enterprise
Display Name:           26. Windows 7 Enterprise E
Display Name:           27. Windows 7 Enterprise N
Display Name:           28. Windows 7 Enterprise
Display Name:           29. Windows 7 Enterprise E
Display Name:           30. Windows 7 Enterprise N
Display Name:           31. Windows 7 Ultimate
Display Name:           32. Windows 7 Ultimate E
Display Name:           33. Windows 7 Ultimate N
Display Name:           34. Windows 7 Ultimate
Display Name:           35. Windows 7 Ultimate E
Display Name:           36. Windows 7 Ultimate N

Btw, yes it seems complex but I think it's not hard as it looks.

1) We know expanded image size before mounting
2) We know how much space require extracted updates files
3) We know how much space require drivers for integration

So for each image get it's size and then loop through idexes and lets callulate requirements like 1 + 2 + 3 = required space * (some magic number like 1,1 to have 10% more for sure no never eats all empty space).

Then we know how much free space is on drive that is used for mounting. So for example when you have 100GB free and would you like to process 10 images then you can mount maybe 3-4 at once.

When I build only WIM with 36 images for each then I will still get same issue. Windows 10 have 44 images in WIM. According to my mechanism to process 36 WIM and then export them into one huge one must be changed.

I can call NTLite with specific preset for each index. But then it's really waste of time as NTLite will always export / optimize image at the end of process. Maybe when new option which disable exporting / optimization can help me. So I can loop my presets for specific index and then export it when I do all my teps manually.

Maybe single switch that will suppress image optimization will be best way. UseCase: I'm advanced user and I want handle exporting on my own after NTLite's magic. :)
 
Back
Top