Capture and apply Windows Full Flash Update (FFU) images

Deploy Windows faster on the factory floor by using the Full Flash Update (FFU) image format. FFU images allow you to apply an image of a physical drive, including Windows, recovery, and system partition information all at once directly to a different drive.

Unlike the file-based WIM format, FFU is a sector-based file container that stores one or more partitions. Sector-based imaging means that FFUs take less time to deploy, but have larger files sizes than WIMs. See WIM vs. VHD vs. FFU: comparing image file formats for information about the differences between image formats.

Starting with Windows 10, version 1903, you can optimize your FFUs into new portable FFUs where:

  • The drive that an FFU is applied to can be smaller than the drive it is captured from.
  • You can choose a partition to dynamically expand or shrink based on the size of the new drive.
  • You no longer have to manage the recovery partition separately for differently-sized drives.

Note

Applying an optimized FFU requires Windows 10, version 1903; WinPE version 1903; or later.

Limitations

  • If you don't optimize your FFU, the drive that an FFU is applied to has to be the same or larger than the drive it is captured from
  • FFU captures of encrypted disks are not supported
  • Captures of disks that have Volume Shadow Copy Service (VSS) enabled are not supported
  • Splitting compressed FFUs is not supported
  • Capturing an FFU captures and entire disk, with no mechanism to exclude specific files
  • You can't capture an FFU of a hard drive that uses MBR-based hard partitions

What you need to work with FFUs in Windows

To capture, deploy, and mount FFU images with DISM, you'll need to work in a Windows 10, version 1709 or later; or WinPE for Windows 10, version 1709 or later environment. To deploy portable FFUs, you'll need WinPE for Windows 10, version 1903 or later.

To capture and deploy FFUs using the instructions below, you'll also need:

  • A Windows PC that has been generalized with Sysprep. We'll refer to this as the reference PC. For a walkthrough on how to create an image that's ready for deployment, see the OEM Windows deployment lab.
  • A PC to deploy the FFU image to. We'll refer to this as the destination PC. The hard drive on this PC will be overwritten, so make sure you're using a PC that doesn't have any information you want to keep.
  • The latest version of the ADK, from Download the Windows ADK
  • Storage
    • USB storage, formatted as NTFS with enough space to save the FFU. 16 GB is enough space to store an FFU of a basic Windows image. You can use the same USB drive for WinPE and storage if you follow the instructions for creating a multipartiton USB drive. For best performance, you want to maximize I/O between where your FFU is stored and the destination PC. For best performance use a USB 3.0 drive to store the image, and an internal SSD for the destination device.

      or

    • Network storage where you can keep your FFU image. For optimal performance, use a 1 Gb or faster network.

Capture an FFU

  1. Boot the reference PC using WinPE bootable media.

  2. Identify the drive to which you'll be capturing the image from. You can use diskpart, or add Windows PowerShell support to WinPE and use Get-Disk for scriptability and more complex setups such as a server with multiple disks.

    diskpart 
    list disk
    exit
    

    The output will list your drives. Make a note of the disk number in the Disk ### column. This is the value that you'll use when capturing your image.

    DISKPART> list disk
    
    Disk ###  Status         Size     Free     Dyn  Gpt
    --------  -------------  -------  -------  ---  ---
    Disk 0    Online          238 GB      0 B        *
    Disk 1    Online           28 GB      0 B
    
    DISKPART>
    
  3. Use DISM to capture an image of all the partitions on the physical drive. For disk X:, the string used with /capturedrive will look like this: \\.\PhysicalDriveX, where X is the disk number that diskpart provides. For example, to capture Disk 0, you'd use /CaptureDrive:\\.\PhysicalDrive0.

    For more information about PhysicalDrive X, see CreateFile function.

    To see command line options for capturing FFUs, run dism /capture-ffu /? or see DISM Image Management Command-Line Options. Note that you shouldn't have to specify a PlatformID when capturing a desktop image.

    The following command captures an FFU image of PhysicalDrive0 called WinOEM.ffu. The /name and /description arguments allow you to set information about your image. This information is displayed when you use dism /get-imageinfo. /name is required, /description is optional.

    DISM.exe /capture-ffu /imagefile=e:\WinOEM.ffu /capturedrive=\\.\PhysicalDrive0 /name:disk0 /description:"Windows 10 FFU"
    

    This command also gives a name and description to the FFU image. Name is a required parameter.

Optimize an FFU

The /Optimize-FFU DISM option allows you to choose a partition that will automatically expand or shrink after the FFU is applied to a disk:

  1. Copy the FFU file to a technician PC running Windows 10, version 1903 or later. You can't run /optimize-ffu on the same disk as the captured FFU.

    Note

    You can only run the /Optimize-FFU command on Windows 10, version 1903, or later.

  2. Optimize the FFU.

    Dism /Optimize-FFU /ImageFile:flash.ffu
    

    Note

    By default, when you deploy Windows to a differently-sized drive the Windows partition will expand or shrink so that it can be as large as it can be. If you're using a data partition, you can choose to have this partition expand or shrink instead by using the /PartitionNumber option, for example:

    Dism /Optimize-FFU /ImageFile:flash.ffu /PartitionNumber:2
    

    To learn more, see DISM Image Management Command-Line Options: Optimize FFU

  3. If you plan to apply this FFU to drives that are smaller than the original drive, check your FFU to see what the new minimum drive size needs to be:

    Dism /Get-ImageInfo /ImageFile:flash.ffu
    

Deploy Windows from WinPE using an FFU

  1. Boot your destination PC to WinPE.

    Note

    If you're applying an optimized FFU, you have to use WinPE, version 1903, or later.

  2. Connect a storage drive or map the network location that has your FFU file and note the drive letter, for example, N.

  3. Identify the drive to which you'll be applying the image:

    diskpart 
    list disk
    exit
    

    Note the drive number in the Disk ### column.

  4. Apply the image to the cleaned drive. Here, we're applying n:\WinOEM.ffu to Disk 0.

    DISM /apply-ffu /ImageFile=N:\WinOEM.ffu /ApplyDrive:\\.\PhysicalDrive0
    

    To see the commands available with /apply-ffu, run dism /apply-ffu /? or see DISM Image Management Command-Line Options.

Capturing and applying FFUs on differently-sized drives

If you've optimized the FFU, DISM automatically resizes the Windows partition (or selected partition) to expand or shrink to fill the available space.

If you don't optimize the FFU, or if you're deploying Windows 10, version 1809 or earlier, you'll only be able to apply the FFU to drives that are the same size or larger than the original. You'll also need to do some extra work to manage the recovery partition and partition sizes before and during deployment to make the best of use of space:

  1. On the reference PC, install Windows with no recovery partition, and set up the Windows partition as the final partition on the drive. To set this up, use Windows Setup or a deployment script.

    Reference PC: Capture the FFU image.

  2. Capture the FFU.

  3. On the destination PC, deploy the FFU. For larger drives, there will be unused space at the end.

    Reference PC: Apply the FFU image.

  4. Using Diskpart, expand the Windows partition to fill the empty space.

    Reference PC: Expand the Windows partition to fill the empty space.

    Then, shrink the Windows partition to make room for the recovery partition.

    Reference PC: Shrink the Windows partition to make room for the recovery partition

    Configure your recovery partition.

    Example, using Sample scripts: create recovery partition.

    ApplyRecovery.bat
    

Mount an FFU for servicing

You can use DISM to mount FFU images for servicing. Like with other image formats, you can mount and modify an FFU before committing changes and unmounting. Mounting an FFU for servicing uses the same /mount-image command that you use for mounting other image types. When mounting an FFU, you'll always use /index:1 when mounting.

Unlike WIM images, FFU images get mounted as virtual hard disks. Files appear in the specified mount folder, but since FFUs can contain more than one partition but only have one index, DISM maps only the Windows partition from the mounted FFU to the mount folder.

To mount an FFU

  1. Open a Command Prompt as administrator.

  2. Mount the image using dism /mount-image. This example mounts D:\WinOEM.ffu to C:\ffumount:

    dism /mount-image /imagefile:"D:\WinOEM.ffu" /mountdir:"C:\ffumount" /index:1
    

    To see available command line options for /mount-image run dism /mount-image /? or see DISM image management command line options.

  3. Service your image. For example, to enable the legacy components feature:

    dism /image:"C:\ffumount" /enable-feature:legacycomponents
    

    To see available options, run dism /image:<path to mounted image> /? or

  4. Unmount your FFU image and commit or discard changes. If you use /commit, your changes will be saved to your FFU file.

    To unmount your FFU and commit changes, you'd use /unmount-image with the /commit option:

    dism /unmount-image /mountdir:"C:\ffumount" /commit
    

    If you decide to not keep the changes you've made to the FFU, you can use /unmount-image with the /discard option:

    dism /unmount-image /mountdir:"C:\ffumount" /discard
    

WIM vs. VHD vs. FFU: comparing image file formats

Planning a Multicast Strategy in Configuration Manager

Capture and Apply Windows, System, and Recovery Partitions

DISM Image Management Command-Line Options

CreateFile function