Updating Nano Server


[Edit 3/6/2017]: Information in this post has been added to our official Nano Server documentation on TechNet which is more current: https://docs.microsoft.com/windows-server/get-started/update-nano-server

Now that the Cumulative Update for Windows Server 2016 was released on September 26, 2016 (KB3192366), some people have been asking what's the best way to install this and future cumulative updates on Nano Server? We wanted to provide some additional details on the various options available for installing these updates.

In the case of the Cumulative Update for Windows Server 2016: September 26, 2016 (KB3192366), you need to install the latest Servicing Stack Update for Windows 10 Version 1607: August 23, 2016 as a prerequisite (KB3176939). For most of the options below, you'll need the .msu files containing the .cab update packages. Visit the Microsoft Update Catalog to download each of these update packages:

After downloading the .msu files from the Microsoft Update Catalog, save them to a network share or local directory such as C:\ServicingPackages. You can rename the .msu files based on their KB number as we've done below to make them easier to identify. Then use the EXPAND utility to extract the .cab files from the .msu files into separate directories and copy the .cabs into a single folder.

mkdir C:\ServicingPackages_expanded
mkdir C:\ServicingPackages_expanded\KB3176936
mkdir C:\ServicingPackages_expanded\KB3192366
Expand C:\ServicingPackages\KB3176936.msu -F:* C:\ServicingPackages_expanded\KB3176936
Expand C:\ServicingPackages\KB3192366.msu -F:* C:\ServicingPackages_expanded\KB3192366
mkdir C:\ServicingPackages_cabs
copy C:\ServicingPackages_expanded\KB3176936\Windows10.0-KB3176936-x64.cab C:\ServicingPackages_cabs
copy C:\ServicingPackages_expanded\KB3192366\Windows10.0-KB3192366-x64.cab C:\ServicingPackages_cabs

Now you can use the extracted .cab files to apply the updates to a Nano Server image in a few different ways, depending on your needs. The following options are presented in no particular order of preference - use the option that makes the most sense for your environment.

Note: When using the DISM tools to service Nano Server, you need to use a version of DISM that is equal to or newer than the version of Nano Server you're servicing. You can achieve this by running DISM from a matching version of Windows, installing a matching version of the Windows Asssessment and Deployment Kit (ADK), or running DISM on Nano Server itself.

 

Option 1: Integrate a cumulative update into a new image

If you are building a new Nano Server image, you can integrate the latest cumulative update directly into the image so that it's fully patched on first boot.

New-NanoServerImage -ServicingPackagePath 'C:\ServicingPackages_cabs\Windows10.0-KB3176936-x64.cab', 'C:\ServicingPackages_cabs\Windows10.0-KB3192366-x64.cab' -<other parameters>

 

Option 2: Integrate a cumulative update into an existing image

If you have an existing Nano Server image that you use as a baseline for creating specific instances of Nano Server, you can integrate the latest cumulative update directly into your existing baseline image so that machines created using the image are fully patched on first boot.

Edit-NanoServerImage -ServicingPackagePath 'C:\ServicingPackages_cabs\Windows10.0-KB3176936-x64.cab', 'C:\ServicingPackages_cabs\Windows10.0-KB3192366-x64.cab' -TargetPath .\NanoServer.wim

 

Option 3: Apply the cumulative update to an existing offline VHD or VHDX

If you have an existing virtual hard disk (VHD or VHDX), you can use the DISM tools to apply the update to the virtual hard disk. You need to make sure the disk is not in use either by shutting down any VMs using the disk or unmounting the virtual hard disk file.

  • Using PowerShell
Mount-WindowsImage -ImagePath .\NanoServer.vhdx -Path .\MountDir -Index 1
Add-WindowsPackage -Path .\MountDir -PackagePath  C:\ServicingPackages_cabs
Dismount-WindowsImage -Path .\MountDir -Save
  • Using dism.exe
dism.exe /Mount-Image /ImageFile:C:\NanoServer.vhdx /Index:1 /MountDir:C:\MountDir
dism.exe /Image:C:\MountDir /Add-Package /PackagePath:C:\ServicingPackages_cabs
dism.exe /Unmount-Image /MountDir:C:\MountDir /Commit

 

Option 4: Apply the cumulative update to a running Nano Server

If you have a running Nano Server VM or physical host and you've downloaded the .cab file for the update, you can use the DISM tools to apply the update while the operating system is online. You will need to copy the .cab file locally on the Nano Server or to an accessible network location. If you're applying a servicing stack update, make sure to restart the server after applying the servicing stack update before applying additional updates.

Note: If you've created the Nano Server VHD or VHDX image using the New-NanoServerImage cmdlet and didn't specify a MaxSize for the virtual hard disk file, the default size of 4GB is too small to apply the cumulative update. Prior to installing the update, use Hyper-V Manager, Disk Management, PowerShell, or other tool to expand the size of the virtual hard disk and system volume to at least 10GB, or use the ScratchDir parameter on the DISM tools to set the scratch directory to a volume with at least 10GB of free space.

$s = New-PSSession -ComputerName (Read-Host "Enter Nano Server IP address") -Credential (Get-Credential)
Copy-Item -ToSession $s -Path C:\ServicingPackages_cabs -Destination C:\ServicingPackages_cabs -Recurse
Enter-PSSession $s
  • Using PowerShell
# Apply the servicing stack update first and then restart
Add-WindowsPackage -Online -PackagePath C:\ServicingPackages_cabs\Windows10.0-KB3176936-x64.cab
Restart-Computer; exit
# After restarting, apply the cumulative update and then restart
Enter-PSSession -ComputerName (Read-Host "Enter Nano Server IP address") -Credential (Get-Credential)
Add-WindowsPackage -Online -PackagePath C:\ServicingPackages_cabs\Windows10.0-KB3192366-x64.cab
Restart-Computer; exit
  • Using dism.exe
# Apply the servicing stack update first and then restart
dism.exe /Online /Add-Package /PackagePath:C:\ServicingPackages_cabs\Windows10.0-KB3176936-x64.cab
# After the operation completes successfully and you are prompted to restart,
# it's safe to press Ctrl+C to cancel the pipeline and return to the prompt
Restart-Computer; exit
# After restarting, apply the cumulative update and then restart
Enter-PSSession -ComputerName (Read-Host "Enter Nano Server IP address") -Credential (Get-Credential)
dism.exe /Online /Add-Package /PackagePath:C:\ServicingPackages_cabs\Windows10.0-KB3192366-x64.cab
Restart-Computer; exit

 

Option 5: Download and install the cumulative update to a running Nano Server

If you have a running Nano Server VM or physical host, you can use the Windows Update WMI provider to download and install the update while the operating system is online. With this method, you don't need to download the .msu file separately from the Microsoft Update Catalog. The WMI provider will detect, download, and install all available updates at once. After installing an update from Windows Update, you can find the log files at %ProgramData%\SoftwareDistribution\Logs\WindowsUpdate.

Enter-PSSession -ComputerName (Read-Host "Enter Nano Server IP address") -Credential (Get-Credential)
  • Scan for available updates
$ci = New-CimInstance -Namespace root/Microsoft/Windows/WindowsUpdate -ClassName MSFT_WUOperationsSession  
$result = $ci | Invoke-CimMethod -MethodName ScanForUpdates -Arguments @{SearchCriteria="IsInstalled=0";OnlineScan=$true}
$result.Updates
  • Install all available updates
$ci = New-CimInstance -Namespace root/Microsoft/Windows/WindowsUpdate -ClassName MSFT_WUOperationsSession
Invoke-CimMethod -InputObject $ci -MethodName ApplyApplicableUpdates
Restart-Computer; exit
  • Get a list of installed updates
$ci = New-CimInstance -Namespace root/Microsoft/Windows/WindowsUpdate -ClassName MSFT_WUOperationsSession
$result = $ci | Invoke-CimMethod -MethodName ScanForUpdates -Arguments @{SearchCriteria="IsInstalled=1";OnlineScan=$true}
$result.Updates

 

Feedback Welcome

We are continuing to investigate ways to improve and streamline the update experience for Nano Server. In the meantime, we hope this information will help you keep your Nano Servers up to date and running smoothly. And we welcome you to provide any feedback at our UserVoice site at https://windowsserver.uservoice.com/forums/295068-nano-server or discuss any issues you encounter on our TechNet forum at https://social.technet.microsoft.com/Forums/windowsserver/en-US/home?forum=NanoServer.

Thanks!


Comments (10)

  1. turbomcp says:

    GREAT STUFF
    thanks

  2. Greg Wood says:

    While I can script the WU agent manually via registry keys (since there is no group policy support) – the fact that Nano is CBB will probably deter many people from using it because we don’t want to have to replace the OS every 6-8 months. I have no problems patching it, but our target environment for Nano is a branch with no redundancy, so replacing an OS with a feature upgrade is not going to happen remotely if it’s not 100% automated and failsafe. We’d stick with Server Core unless there is an LTSB Nano.

    For those shops using SCCM for updates, they’re out of luck it would seem and would have to custom engineer this stuff.

  3. Pronichkin says:

    Option 6: use Windows Server Update Services (WSUS). For this, first make the required settings in local registry to target your local WSUS server instead of Windows Update. Then follow the instructions provided in “Option 5” section.

    Option 7: use System Center Virtual Machine Manager (VMM). Here you don’t have to do anything specific in regards to Nano server. I.e. if you already use VMM for update management, it will “just work” for your Nano server machines–the same way it works for other servers. If you want to learn more about this feature–read here: https://technet.microsoft.com/en-us/system-center-docs/vmm/manage/managing-fabric-updates-in-vmm (Note: the URL might change shortly after System Center 2016 GA)

  4. Cloud-Ras says:

    What about the abillity to use WSUS to update Nano? 🙂

  5. Bill W says:

    Is it possible to use Cluster-Aware Updating?

  6. Falco says:

    what is the best way to keep Nano updated in Azure or EC2 environment AND keep the disk footprint small?

  7. Jacob Blanco says:

    I found a type mistake creating cabs from msu files. Line 4 and 5 path must be C:\ServicingPackages_expanded\ instead C:\ServicingPackages\.
    1. mkdir C:\ServicingPackages_expanded
    2. mkdir C:\ServicingPackages_expanded\KB3176936
    3. mkdir C:\ServicingPackages_expanded\KB3192366
    4. Expand C:\ServicingPackages\KB3176936.msu -F:* C:\ServicingPackages_expanded\KB3176936
    5. Expand C:\ServicingPackages\KB3192366.msu -F:* C:\ServicingPackages_expanded\KB3192366
    6. mkdir C:\ServicingPackages_cabs
    7. copy C:\ServicingPackages_expanded\KB3176936\Windows10.0-KB3176936-x64.cab C:\ServicingPackages_cabs
    8. copy C:\ServicingPackages_expanded\KB3192366\Windows10.0-KB3192366-x64.cab C:\ServicingPackages_cabs

    Right now, we have more updated cabs to install replace those cabs you can change also these package are KB3199986 and KB3206632. You could modify this blog updating these things.
    Thanks for Nano Server !!! Really Rocks.

  8. Darmath says:

    This article is only partially helpful. A large improvement would be to actually address expected output of running PowerShell commands amongst other things.

  9. Brachus says:

    Following the link at the top gives you this: “We are sorry. The page you requested cannot be found.”

    1. Thanks for the heads up. Windows Server documentation recently moved to docs.microsoft.com. I’ve updated the link at the top.

Skip to main content