How to Create a Windows Custom ISO With Updates Using NTLite

Updated on September 15, 2017
How to Create a Windows Custom ISO With Updates Using NTLite header image

This tutorial will guide you through the process of creating a Windows ISO that will be compatible with Vultr's systems. Original/untouched Windows ISOs will not work on Vultr since they are missing the necessary drivers for interacting with Vultr's systems.

This tutorial uses a Windows Server 2016 ISO, but the same process applies to other versions.

A Windows computer is required for this tutorial. If you only have a Mac or Linux computer, do not proceed until you acquire a Windows computer. You can also set up a Windows VM using your favorite Mac or Linux VM/sandbox/virtualization software.

Preparation - Downloads

Before we get started, there are a few things you need to download to your computer:

  1. Your desired Windows ISO. You can get an ISO from MSDN, Technet, or by imaging an installation disc you own.
  2. Download and install the free version of NTLite. This tutorial uses v1.3.1.5060 Stable.
  3. Download the latest or stable VirtIO drivers ISO. A person in charge of a mission-critical database system may choose the stable drivers while someone interested in the latest and greatest may choose the latest drivers. Reviewing the changelog may help you decide.
  4. Optional: Find the latest cumulative update KB for your OS build here and then download it from the Microsoft Update Catalog. Integrating a cumulative update will give you the latest security and bug fixes. You can also integrate additional updates if you know they are needed. At the time of writing, KB3186568 and KB4035631 are additional updates that can be integrated with Windows Server 2016. To find out what other updates are needed, you should install your ISO in a local VM, run Windows Update, and note the KBs. Do not download/integrate Delta updates, the Malicious Software Removal Tool, or Windows Defender definition updates.

Preparation - Setting up Files

With everything downloaded:

  1. Double click your Windows ISO to open it and access its contents. Copy the contents to a new folder somewhere on your computer, such as C:\ISO.
  2. Double click the VirtIO drivers ISO to open it and access its contents. Copy the contents to a new folder somewhere on your computer, such as C:\VirtIO.

Creating the ISO

With all of our files set up, we can now proceed:

Open NTLite and select "Add -> Image folder" on the toolbar. Select the folder containing your extracted ISO files.

The first thing we'll do is integrate the VirtIO drivers into the Windows recovery and setup environments. This will ensure that Vultr SSD drives are recognized during Windows setup and recovery.

Load "Microsoft Windows PE (x64)" using the right click option.

Once it finishes, select the "Drivers" category on the left pane. Integrate the drivers using "Add -> Drivers (INF selection)" on the toolbar:

There are 5 drivers you want to integrate. Replace 2k16 with the OS version you are installing and amd64 with the OS platform. NetKVM (network driver) and viostor (storage driver) are REQUIRED. It is still recommended to include the rest to avoid potential issues. This list could change in the future as Vultr changes and upgrades their systems, so recheck this list next time you are preparing a new ISO.

  1. Balloon\\2k16\\amd64\\balloon.inf
  2. NetKVM\\2k16\\amd64\\netkvm.inf
  3. qemufwcfg\\2k16\\amd64\\qemufwcfg.inf
  4. viorng\\2k16\\amd64\\viorng.inf
  5. viostor\\2k16\\amd64\\viostor.inf

Once the drivers are integrated, select "Apply" on the left pane. Under "Options", select "Don't backup log and preset". Leave the other options as-is.

Select "Process" on the toolbar. Once it finishes, select "Source" on the left pane. Load "Microsoft Windows Setup (x64)". Repeat the process.

Once you have integrated the drivers into both operating systems under Boot/Setup, we can now integrate them into the real operating system. Choose the operating system you plan on using and load it. This will take a little more time to load since it is larger.

Integrate the same 5 drivers like before.

From this point, you are free to make any other changes as you see fit. If you have downloaded updates, you can integrate them in the "Updates" section.

When you are satisfied, select "Apply" on the left pane. It is recommended that you remove any editions you do not need to reduce the size of the ISO. Do not remove any boot.wim editions!

ESD vs Standard (WIM): Choosing ESD will result in a smaller ISO that will upload faster to Vultr, but it takes longer to create, and requires considerable computing resources. It is recommended that you try ESD first and if you have problems, go back to using "Standard (WIM)". Vultr supports both formats.

Select "Don't backup log and preset" and then "Create ISO". Specify a file name/location and label. Label is the internal name of the ISO - it can be anything you want, such as "Windows Server 2016".

In the end, your settings should look like this:

Select "Process" on the toolbar. Depending on the image format you have chosen, the updates you have integrated, and your available computing resources, this could take up to an hour to process. Consider double checking your work before processing.

Once NTLite is finished, you can close it, upload the ISO to Vultr, and deploy new instances using it!

PS: Don't forget to delete the extracted ISO folder, extracted VirtIO folder, and any updates from your computer - NTLite does not do this for you. You can also uninstall NTLite once you have confirmed that your ISO works on Vultr.