Skip to main content
ISO 9660 is the standard file system format for CD-ROM, DVD, and Blu-ray disc images, widely used for software distribution and data archival.

Format Overview

ISO provides:
  • Optical disc images - CD, DVD, Blu-ray format support
  • Universal compatibility - Readable on all operating systems
  • No compression - Stores data as-is
  • Bootable images - El Torito boot specification
  • Large capacity - Up to 8 TB (Blu-ray)
  • File system standard - ISO 9660, Joliet, UDF, Rock Ridge
ISO images are exact copies of optical disc contents, preserving all data including boot information and file system structures.

Format Structure

From source/CPP/7zip/Archive/Iso/IsoHeader.h:10-26, ISO uses a volume descriptor system:

Volume Descriptor Types

namespace NVolDescType {
  const Byte kBootRecord = 0;         // Boot record
  const Byte kPrimaryVol = 1;         // Primary volume descriptor
  const Byte kSupplementaryVol = 2;   // Supplementary volume (Joliet)
  const Byte kVolParttition = 3;      // Volume partition descriptor
  const Byte kTerminator = 255;       // Terminator
}

const Byte kVersion = 1;

ISO Structure

+-------------------------------+
| System Area (32 KB)           |
+-------------------------------+
| Volume Descriptors            |
| - Primary Volume Descriptor   |
| - Supplementary (Joliet)      |
| - Boot Record (El Torito)     |
| - Terminator                  |
+-------------------------------+
| Path Tables                   |
+-------------------------------+
| Directories and Files         |
+-------------------------------+

Start Position

From IsoHeader.h:30:
const UInt32 kStartPos = 0x8000;  // 32768 bytes (sector 16)
Volume descriptors start at sector 16 (32 KB offset).

File Flags

From IsoHeader.h:22-26:
namespace NFileFlags {
  const Byte kDirectory = 1 << 1;        // Entry is directory
  const Byte kNonFinalExtent = 1 << 7;   // Multi-extent file
}

Boot Support (El Torito)

El Torito specification enables bootable CD/DVD/BD images (IsoHeader.h:32-60):

Boot Entry Types

namespace NBootEntryId {
  const Byte kValidationEntry = 1;
  const Byte kInitialEntryNotBootable = 0;
  const Byte kInitialEntryBootable = 0x88;
  const Byte kMoreHeaders = 0x90;
  const Byte kFinalHeader = 0x91;
  const Byte kExtensionIndicator = 0x44;
}

Boot Platform Types

namespace NBootPlatformId {
  const Byte kX86 = 0;       // PC (x86, x64)
  const Byte kPowerPC = 1;   // PowerPC
  const Byte kMac = 2;       // Macintosh
}

Boot Media Types

namespace NBootMediaType {
  const Byte kNoEmulation = 0;    // No emulation
  const Byte k1d2Floppy = 1;      // 1.2 MB floppy
  const Byte k1d44Floppy = 2;     // 1.44 MB floppy
  const Byte k2d88Floppy = 3;     // 2.88 MB floppy
  const Byte kHardDisk = 4;       // Hard disk emulation
}
Modern bootable ISOs typically use “No Emulation” mode with UEFI support for maximum compatibility.

File System Extensions

ISO 9660 (Standard)

Limitations:
  • Filenames: 8.3 format (DOS-like)
  • Maximum directory depth: 8 levels
  • Character set: Limited ASCII

Joliet Extension

Improvements:
  • Long filenames: Up to 64 Unicode characters
  • Full Unicode support
  • Windows-compatible

Rock Ridge Extension

Unix support:
  • Long filenames
  • POSIX file permissions
  • Symbolic links
  • Device files
  • User/group ownership

UDF (Universal Disk Format)

Modern format:
  • DVD/Blu-ray standard
  • Files larger than 4 GB
  • Packet writing support
  • Better performance

Usage Examples

Create ISO from Directory

7z a -tiso disk.iso files/
Creates standard ISO 9660 image.

Extract ISO Contents

7z x disk.iso
Extracts all files preserving directory structure.

List ISO Contents

7z l disk.iso
Shows file listing with sizes and dates.

Extract Specific Files

7z x disk.iso -i!setup.exe -i!docs\*.txt

Test ISO Integrity

7z t disk.iso
Verifies ISO structure and readability.

View Detailed Information

7z l -slt disk.iso
Shows volume information, file system type, and metadata.

Creating Bootable ISOs

7-Zip can extract bootable ISOs but has limited capabilities for creating bootable images. For creating bootable ISOs, use specialized tools like:
  • mkisofs / genisoimage (Linux)
  • ImgBurn (Windows)
  • oscdimg (Windows ADK)

Extract Boot Image

# Extract boot catalog and image
7z x windows.iso -i!boot\*

ISO Size Limits

MediaCapacityUse Case
CD-ROM650-700 MBSmall distributions
DVD-5 (Single layer)4.7 GBSoftware, movies
DVD-9 (Dual layer)8.5 GBLarge software
BD-R (Single layer)25 GBHD video, games
BD-R DL (Dual layer)50 GB4K video
BD-R XL (Triple layer)100 GBArchival
BD-R XL (Quad layer)128 GBLarge archives

Implementation Details

From source/CPP/7zip/Archive/Iso/IsoIn.h:16-64, the handler uses directory structures:

Directory Structure

struct CDir: public CDirRecord {
  CDir *Parent;
  CObjectVector<CDir> _subItems;
  
  AString GetPath(bool checkSusp, unsigned skipSize) const;
  void GetPathU(UString &s) const;
};

DateTime Structure

struct CDateTime {
  UInt16 Year;
  Byte Month;
  Byte Day;
  Byte Hour;
  Byte Minute;
  Byte Second;
  Byte Hundredths;
  signed char GmtOffset;  // GMT offset in 15-min intervals
};

ISO Implementation Files

source/CPP/7zip/Archive/Iso/
├── IsoHandler.cpp      # Archive handling
├── IsoHandler.h        # Handler interface  
├── IsoIn.cpp          # ISO reading
├── IsoIn.h            # ISO structures
├── IsoHeader.h        # Format constants
├── IsoItem.h          # Item structures
└── IsoRegister.cpp    # Format registration

Common Use Cases

Software Distribution

# Extract installation files
7z x software.iso

Operating System Installation

# Extract Windows/Linux ISO
7z x ubuntu-20.04.iso
7z x windows-10.iso

Disc Backup

# Create ISO from optical disc (use dd or similar)
dd if=/dev/cdrom of=backup.iso bs=2048

# Extract backed up disc
7z x backup.iso

Game Preservation

# Extract game data
7z x game.iso -o"C:\Games\ExtractedGame"

Firmware/Driver Archives

# Extract specific drivers
7z x drivers.iso -i!network\*.inf -i!network\*.sys

Working with Multiple Sessions

Some ISOs contain multiple sessions (multisession CDs/DVDs):
# 7-Zip typically reads the last session
7z l multisession.iso

UDF Support

7-Zip supports UDF format commonly used on DVDs:
# Extract UDF DVD image
7z x movie-dvd.iso
UDF features:
  • Files larger than 4 GB
  • Better performance
  • DVD-Video compatibility

Hybrid ISOs

Some ISOs combine multiple file systems:
  • ISO 9660 + Joliet - Windows/DOS compatibility
  • ISO 9660 + Rock Ridge - Unix/Linux compatibility
  • ISO 9660 + UDF - Universal compatibility
  • El Torito + UEFI - Legacy and UEFI boot support

Comparison with Other Formats

ISO vs WIM

FeatureISOWIM
CompressionNoYes
ModificationDifficultEasy
BootableYes (El Torito)Yes (WinPE)
Use caseOptical mediaWindows deployment
File limit~4 GB (ISO9660)4 GB per image

ISO vs ZIP/7z

FeatureISOZIP/7z
PurposeDisc imageArchive
CompressionNoYes
BootableYesNo (ZIP), SFX only (7z)
MountingYesNo (without tools)
Size limit8 TB16 EB

Best Practices

For Distribution

Use ISO for software requiring optical media format

For Archival

Combine with compression: compress ISO with 7z/XZ

For Installation Media

Preserve bootability - don’t modify boot structures

For Compatibility

Use Joliet extension for Windows long filename support

Advanced Operations

Compress ISO for Storage

ISO images contain no compression:
# Compress ISO with 7z
7z a -t7z -mx=9 disk.iso.7z disk.iso

# Or with XZ
7z a -txz -mx=9 disk.iso.xz disk.iso
Typical compression:
  • Software ISOs: 40-60% size reduction
  • Movie DVDs: 5-15% (already compressed)
  • Data ISOs: 30-70% depending on content

Convert ISO to Other Formats

# Extract ISO and create 7z archive
7z x disk.iso -o"temp\"
7z a -t7z -mx=9 disk.7z temp\*

Verify ISO Hash

# Calculate hash (using CertUtil on Windows)
certutil -hashfile disk.iso SHA256

# Or using 7-Zip to check integrity
7z t disk.iso

Limitations

ISO format limitations:
  • No built-in compression
  • Large file sizes
  • ISO 9660 limited to 4 GB files (use UDF for larger)
  • Difficult to modify once created
  • No encryption support
  • Requires burning software for physical discs

Tools

Extraction Tools

  • 7-Zip - Extract ISO contents
  • WinRAR - Extract and browse ISOs
  • Windows Explorer - Mount ISO (Windows 8+)
  • macOS Disk Utility - Mount and create ISOs

Creation Tools

  • ImgBurn - Create/burn bootable ISOs (Windows)
  • mkisofs/genisoimage - Create ISOs (Linux)
  • Brasero - CD/DVD burning (Linux)
  • oscdimg - Windows ADK ISO creation

Mounting Tools

# Windows 8+ (built-in)
Explorer: Right-click ISO > Mount

# Linux
sudo mount -o loop disk.iso /mnt/iso

# macOS
hdiutil mount disk.iso

See Also

Build docs developers (and LLMs) love