-
Notifications
You must be signed in to change notification settings - Fork 64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Usage of DISM fails inside container due to missing device driver #494
Comments
@JensNordenbro Hi, I'll try to repro this Issue. In the meantime, can you explain what you're trying to do? If you're trying to mount a volume with files you'll have to do that when you start up the container, not while in it. |
Quick note: I'll be slow to respond this week because of Build but I'll repro it as soon as I can. |
Hi @ntrappe-msft ! I have also tried to mount the wim file outside the container (see text) and volume mount it but using this mount inside the container leads to crashes when doing further dism operations on that volume. Inside the container, try to do something like "DISM.exe /image:"c:\mount" /Add-Driver /ForceUnsigned /DriverName:"C:\Drivers\1.inf" /DriverName:"C:\Drivers\2.inf" /DriverName:"C:\Drivers\3.inf"" or similar from https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/what-is-dism?view=windows-11 WE can survive not being able to mount a file as folder inside the container as long as the following DISM commands would work, inside the container. I do think it is a bit strange that this is not possible at least inside a Hyper-V backed container where the WM could host all drivers / services need for DISM. |
Any chance to try this out @ntrappe-msft ? |
@JensNordenbro Hi, sorry for the delay. My backlog is too long right now so I'm going to triage this to another engineer. |
Spoke to the other engineers today. What you're trying to do is currently not supported. You're probably encountering issues due to two things: (A) the container can only see a few drivers on the host, It is possible to enable this scenario but we'd need more information about your use case. Could you explain what you're trying to do with Thanks! |
Hi, my team would like to see this issue resolved also :) On our build runners (Windows in docker containers) we hit the same issue that we can't mount the Windows images (dism /mount-image /imagefile:...) and we're currently blocked by this: |
We are doing customized Windows 10 Iot Enterprise images. We want a reliable build environment, always reproducable, using containers. I do not understand why hyper-v containers would not be able to pick this up quite easilly. In The VM you could add more drivers (command line option perhaps) and suddenly we could mount the wim inside the machine. This is all software so having to amount from the host seems wrong although tolerable. |
I to have ran into this issue - got excited about the idea to try containerisation to maintain our Windows 10 IoT Enterprise Images. Had hoped I could bypass the "run as admin" on dev machine requirement to mount and work with the WIM files. |
@JensNordenbro While mounting .wim files is not currently supported in containers, DISM can be used to apply and capture images within a container. Is that a viable workaround? For example, first apply the image to extract the files:
Next, make changes to the applied directory. Finally, capture the changes to the image:
See this page for more information: Capture and apply Windows, system, and recovery partitions |
@johnstep , we will try! |
We are still investigating. Partial success on work around but we have problems with the image produced |
Thanks for the update. What kind of problems do you have with the images? Can you compare them? |
We are off for the weekend but apparently the image just did not boot. The finding happened this thursday. Will keep you posted. |
Hello @johnstep, I am @JensNordenbro colleague. I am working with the dism stuff. We have tested winpe.wim with /Apply-image and /mount-wim commands and we installed updates and drivers on both environments. Here is the file’s structure difference between the two environments. The differences occurred when we patch updates. |
@chaitanya2ivvala can you please share the steps you used in both working and not-working flows? Here's what I expect: Your old flow: Your new flow: |
@ankamat-msft Here are the working and non working flows. Packages in "%PACKAGE_DIR%" ssu-19041.1704-arm64_dac34c98382f951bd654fe3affe0b3e7100b3745.msu Working solution dism /Image:"%MOUNT_DIR%" /Add-Package /PackagePath="%PACKAGE_DIR%" dism /unmount-wim /mountdir:"%MOUNT_DIR%" /commit Non working solution dism /Image:"%MOUNT_DIR%" /Add-Package /PackagePath="%PACKAGE_DIR%" dism /Capture-Image /ImageFile:" winpe1.wim" /CaptureDir:"%MOUNT_DIR%" /Name:"winpe1" |
@johnstep , @ankamat-msft - any idea about this problem? |
Apologies for the delay. @chaitanya2ivvala can you please share DISM logs from working and not-working cases? |
Just to clarify another thing - I attempted to reproduce this issue locally, but I could not. Essentially what I have observed is that the captured WIM file and committed WIM file have the packages installed. |
this was worked for me maybe the windows adk or wdk had changed our registry image path of dism wimmount. try this.
you can checkout detail in link bellow |
Hi, I run comparison between Mount and Apply method. Her is the result. |
@6ILY Did you manage to run dims /mount-image inside Docker with the solution you had? |
@ankamat-msft , please see above! |
@danielforsbergbeijer - regarding your corruption observation - if you're thinking of the image name and description - those are parameters to image capture. You can pass them at capture time to retain the correct image information. Check this out for more details: https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/dism-image-management-command-line-options-s14?view=windows-11#capture-image Per your CommandsLog.txt, if you change your capture command you will get the desired image info result:
|
@ankamat-msft - The corruption is not about the name and description. It is that it doesn't run and behave the same way. |
@ankamat-msft , your comment and fix resolves only in @danielforsbergbeijer comment above. |
@danielforsbergbeijer The difference in WIM size you are seeing is expected because a mounted/unmounted WIM still has "old" files even though they are dead weight. If you want to optimize the WIM size after mount/unmount, you can use /Export-Image after unmount. The size of the exported image ought to be pretty close to the size of the apply/capture image. The difference in content that you're seeing only seems to apply to some binary-data or log files, whose contents need not be identical but they ought to be functionally equivalent. Please confirm your observation after running /Export-Image and that should reconcile everything you're observing. |
we are still testing but it seems promising. I will comment or close when tests are done! |
Works. This @johnstep I think should be documented. |
Describe the bug
Running 'dism /mount-wim /wimfile:"winpe.wim" /mountdir:"c:\MOUNT_DIR" /index:1' inside a container such as mcr.microsoft.com/windows/server:ltsc2022 does not work regardless of isolation mode:
To Reproduce
Expected behavior
It should just work. DISM seems to need WimMount driver and the driver is present inside the Docker image:
However I cannot find it to be installed using 'sc query type=driver'.
Configuration:
Additional context
We tried to mount the folder outside container and Docker volume mount it into the container however it does not work for us.
(It is ok if it only works in hyper-V mode as far as I am concerted. I can run in any mode. )
(Maybe there is some argument that can be used to share the HOST driver?)
The text was updated successfully, but these errors were encountered: