Full Disk Images: Windows Based
Extracting Windows ISO Root Filesystem
Traditional extraction utilities like bzdtar
don't work properly with Windows-based ISOs. These utilities typically only extract a readme from the boot segment, missing the main filesystem data contained in the install.wim
file. This guide demonstrates how to properly extract the complete Windows root filesystem using specific utilities.
Prerequisites
- wimlib - A library for working with Windows Imaging (WIM) files
- macOS: Install via Homebrew: https://formulae.brew.sh/formula/wimlib
- Other platforms: https://wimlib.net/downloads/index.html
- A Windows ISO file (e.g.,
Win10_22H2_English_x64v1.iso
)
Step 1: Mount the ISO
Mount the Windows ISO to access its contents:
hdiutil attach Win10_22H2_English_x64v1.iso
Expected output Example:
/dev/disk7 /Volumes/CCCOMA_X64FRE_EN-US_DV9
Navigate to the mounted volume and locate the sources directory:
cd /Volumes/CCCOMA_X64FRE_EN-US_DV9/sources
Step 2: Verify install.wim File
Confirm that the install.wim
file exists in the sources directory:
cd sources
ls | grep install
This file contains the compressed Windows filesystem data that we need to extract.
Step 3: Analyze Available Images
Before extraction, examine the available Windows editions in the WIM file. A single Windows ISO typically contains multiple editions (Home, Pro, Enterprise, etc.) stored as separate images within the install.wim file. Each image has a unique index number that you'll need to specify during extraction. This step helps you identify which edition you want to extract and understand the size requirements for each option.
wimlib-imagex info install.wim
Sample output:
Available Images:
-----------------
Index: 1
Name: Windows 10 Home
Description: Windows 10 Home
Directory Count: 27984
File Count: 101011
Total Bytes: 15139674619
Architecture: x86_64
Major Version: 10
Minor Version: 0
Build: 19041
Index: 2
Name: Windows 10 Home N
Description: Windows 10 Home N
Directory Count: 26994
File Count: 95743
Total Bytes: 14368233902
Architecture: x86_64
Index: 3
Name: Windows 10 Home Single Language
Description: Windows 10 Home Single Language
Directory Count: 27984
File Count: 101012
Total Bytes: 15142346396
Architecture: x86_64
Step 4: Extract the Filesystem
Extract the desired Windows edition using the corresponding index number. In this example, we'll extract Index 1 (Windows 10 Home):
You will be in the actual directory of the mounted ISO image, so ensure that your destination directory directly refers to a directory outside of the ISO image. This will extract the filesystem to there.
wimlib-imagex extract install.wim 1 --dest-dir=/Users/Documents/extracted-iso-folder/
Command breakdown:
install.wim
- Source WIM file1
- Index number of the Windows edition to extract--dest-dir=
- Destination directory for the extracted filesystem
Step 5: Generate the SBOM
Run this command back where you actually extracted the filesystem to.
manifest-cli sbom ./extracted-iso-folder -n manifestcliWindowsISO -f windowsisosbom.json
To upload directly to Manifest Platform:
manifest-cli sbom ./extracted-iso-folder -n manifestcliWindowsISO -f windowsisosbom.json --publish -k $your_api_token_key
--publish
- Uploads the SBOM to your Manifest account automatically-k $your_api_token_key
- Provides your API credentials for the upload
Troubleshooting
- Ensure sufficient disk space for extraction (typically 15-20 GB)
- Verify wimlib is properly installed and accessible
- Check that the ISO is properly mounted before attempting extraction
Updated 2 days ago