Slipstream virtio drivers into Windows Server 2012 install ISO


Windows administration is not my strong suit but occasionally I find myself having to coax MS products into action. I was surprised when I couldn’t find any specific guidance for slipstreaming virtio since…you know…openstack. Anyway, the following process was undertaken on a Win 2012 server (64-bit) with the resulting image also being Win 2012. Since this version of Windows appears to be little more than Windows 8 without the magnificently atrocious Metro interface, it should work on there as well…that is if you can keep random crap from popping up and stealing focus while you’re trying to work. Good luck on that.


You’ll need:

– Windows 2012 Server install ISO
– The latest signed virtio drivers for windows from RedHat. As of the time of writing, these are contained within virtio-win-0.1-59.iso
ImgBurn or any other tool capable of manipulting ISO images. That we’re in the year CE 2013 and this functionality is not included out of the box on every version of windows is nothing short of criminal. You’re free to open the iso’s in linux and grab what you need as well.
– That’s pretty much it. Everything else, amazingly, is included with a standard windows installation.


  1. I’ve found relative paths to be a bit of a foreign concept in windows-land (%WINDIR% being the-difficult-to-type exception)  so, for ease of explanation, I’ve created the following:

    Go ahead and put the windows and virtio iso images in c:\iso.
  2. Using ImgBurn or the tool of your choice, extract the contents of the windows install iso to c:\iso\ms-iso.
  3. Extract the contents of the virtio iso into c:\iso\virtio-iso. Alternatively, you could just mount the iso and reference the appropriate path when you reach step  #5. I’m just trying to keep this walk-through simple and tidy.
  4. Next, we’ll use dism to mount the wim image. From an elevated command prompt:
  5. dism /mount-image /imagefile:c:\iso\ms-iso\sources\install.wim /index:1 /mountdir:c:\iso\ms-mount
  6. Time to insert the drivers. Note that due to linux’s own historical baggage, the driver directory is named AMD64. In spite of the name, the drivers are perfectly compatible with all 64-bit x86-derivative platforms.
  7. dism /image:c:\iso\ms-mount /add-driver /driver:c:\iso\virtio-iso\WIN8\AMD64 /recurse

    I find myself recursing quite a bit when interacting with dos’ archaic shell but, alas, we’re almost through. Don’t even get me started on the wildly verbose and pseudo-random command syntax of powershell. 

  8. If all went well, 5 of 5 drivers will have successfully ‘installed’. Now we seal the deal:
  9. dism /unmount-wim /mountdir:c:\iso\ms-mount /commit
  10. Now we have to run through the same process but this time we’re updating boot.wimso that we can see the virtual drive during the install process.
  11. dism /mount-image /imagefile:c:\iso\ms-iso\sources\boot.wim /index:1 /mountdir:c:\iso\ms-mount
    dism /image:c:\iso\ms-mount /add-driver /driver:c:\iso\virtio-iso\WIN8\AMD64 /recurse
    dism /unmount-wim /mountdir:c:\iso\ms-mount /commit
  12. Now all that’s left is to glue the iso back together. In ImgBurn this accomplished by:
    1. Mode -> Build
    2. In the ‘Source’ section, click the ‘Browse for a folder’ icon. Select c:\iso\ms-iso.
    3. In the ‘Destination’ section, click the ‘Browse for a file’ icon. Give your iso a name and put it where you’d like.
    4. Under the Options tab on the right, set ‘File System’  to ‘UDF’ and ensure that ‘Recurse Subdirectories’ is checked.
    5. Under the Labels tab, set an appropriate label (eg., ‘win2012-virtio’) in the UDF field.
    6. Under the Advanced -> Bootable Disc tab:
      1.  Check the ‘Make Image Bootable’ checkbox
      2. Emulation Type: None (Custom)
      3. Boot Image: c:\iso\ms-iso\boot\
      4. Platform ID: 80×86
      5. Developer ID: Microsoft Corporation
      6. Load Segment: 07C0
      7. Sectors to Load: 8 (for Vista and earlier, this would be 4)
      8. Patch Information Table: Unchecked
    7. Finally, click the ‘Build Image’ button on the bottom left.

All done. I’ve noticed that ImgBurn seems to be under regular development so the UI may present additional features beyond those listed here. If so, use your best judgement or google (preferred).

Leave a Reply

6 Comments on "Slipstream virtio drivers into Windows Server 2012 install ISO"

Notify of
Sort by:   newest | oldest | most voted
Mark Howells

Great article (great blog too).

I needed to achieve the same thing for Windows 7. I’m working on a WIN7 machine and noticed the dism mount syntax is different – using /mount-Wim instead of /mount-image
dism /mount-Wim /wimfile:c:\iso\ms-iso\sources\install.wim /index:1 /mountdir:c:\iso\ms-mount
dism /mount-Wim /wimfile:c:\iso\ms-iso\sources\boot.wim /index:1 /mountdir:c:\iso\ms-mount
And substituting WIN7 for WIN8 of course…

Mark Howells

Hmmm, I still can’t see either the instance’s HD nor an attached virt drive…

Is there something special I need to do additionally to see Openstack drives?

Mark Howells

Answering my own query (for completion).
The wim files have indexes, use
dism /get-wiminfo /wimfile:c:\iso\ms-iso\sources\install.wim
dism /get-wiminfo /wimfile:c:\iso\ms-iso\sources\boot.wim
and supply /index:n to the mount commands…

James Green

For Windows 8 there are two additional points:

1. boot.wim has TWO entries – a Preexecution Environment (PE) and a Setup. I mounted, installed the drivers, and committed to both.
2. The additional of the drivers will error saying that the INF files are not properly signed. Repeat with /forceunsigned

The resulting ISO does work.


someone can share an iso of windows server 2012 already contain VirtIO drivers ??

thank you to notify me about that. my Email:


[…] a rather lenghty howto for Windows 2012 (taken from, redacted some ranty comments by the author), it should be easily adaptable for Windows […]