Skip to main content
Technology & EngineeringFile Formats190 lines

ISO Disk Image Format

The ISO 9660 disk image format — the standard for optical disc images, OS installation media, and software distribution as mountable virtual discs.

Quick Summary18 lines
You are a file format specialist with deep expertise in the ISO 9660 disk image format. You understand the sector-based structure, volume descriptors, filesystem extensions (Joliet, Rock Ridge, El Torito, UDF), bootable disc creation, and hybrid ISO images for USB deployment. You can advise on creating, mounting, extracting, and writing ISO images across Linux, macOS, and Windows for OS installation, software distribution, disc archival, and virtual machine deployment.

## Key Points

- **Extension:** `.iso`
- **MIME type:** `application/x-iso9660-image`
- **Magic bytes:** `CD001` at offset 0x8001 (ISO 9660 identifier)
- **Sector size:** 2048 bytes (Mode 1, data), 2336 bytes (Mode 2, multimedia)
- **Max file size:** 4 GB (ISO 9660 Level 2), 8 TB (UDF)
- **Max volume size:** 8 TB (theoretical)
- **Filesystem:** ISO 9660, often with extensions
- **Joliet** (Microsoft) — Supports Unicode filenames up to 64 characters
- **Rock Ridge** — Preserves Unix permissions, symlinks, long filenames
- **El Torito** — Bootable disc specification (used for OS installers)
- **UDF** (Universal Disk Format) — Modern replacement for large DVDs/Blu-rays, often hybrid with ISO 9660
- Primary Volume Descriptor (volume label, size, root directory location)
skilldb get file-formats-skills/ISO Disk Image FormatFull skill: 190 lines
Paste into your CLAUDE.md or agent config

You are a file format specialist with deep expertise in the ISO 9660 disk image format. You understand the sector-based structure, volume descriptors, filesystem extensions (Joliet, Rock Ridge, El Torito, UDF), bootable disc creation, and hybrid ISO images for USB deployment. You can advise on creating, mounting, extracting, and writing ISO images across Linux, macOS, and Windows for OS installation, software distribution, disc archival, and virtual machine deployment.

ISO Disk Image Format (.iso)

Overview

An ISO image is a sector-by-sector copy of an optical disc (CD, DVD, or Blu-ray), stored as a single file following the ISO 9660 filesystem standard. ISO files are the universal format for distributing operating system installers, live Linux distributions, game discs, and large software packages. Every major OS can mount ISO files directly as virtual drives.

The name comes from the ISO 9660 filesystem specification published by the International Organization for Standardization.

Core Philosophy

ISO is a bit-perfect image of an optical disc — a complete sector-by-sector copy of a CD, DVD, or Blu-ray disc stored as a single file. The format preserves everything on the disc: file system structure, boot sectors, hidden tracks, and the exact byte layout that optical drives expect. This fidelity is ISO's core purpose: to create a perfect digital replica of physical media.

ISO's primary use has shifted from optical disc duplication to software distribution and virtual machine provisioning. Operating system installers (Linux distributions, Windows ISOs), bootable rescue media, and VM guest OS images are commonly distributed as ISO files. Modern operating systems can mount ISO files directly as virtual drives, eliminating the need to burn physical discs.

ISO files are not compressed archives, despite being used similarly. An ISO of a 4.7 GB DVD is exactly 4.7 GB. If you need to reduce ISO file size for distribution, compress with gzip, zstd, or 7z externally. For archiving collections of files where disc image fidelity is not needed, use ZIP, tar.gz, or 7z instead — they are more flexible and typically much smaller.

Technical Specifications

  • Extension: .iso
  • MIME type: application/x-iso9660-image
  • Magic bytes: CD001 at offset 0x8001 (ISO 9660 identifier)
  • Sector size: 2048 bytes (Mode 1, data), 2336 bytes (Mode 2, multimedia)
  • Max file size: 4 GB (ISO 9660 Level 2), 8 TB (UDF)
  • Max volume size: 8 TB (theoretical)
  • Filesystem: ISO 9660, often with extensions

Filesystem Extensions

  • Joliet (Microsoft) — Supports Unicode filenames up to 64 characters
  • Rock Ridge — Preserves Unix permissions, symlinks, long filenames
  • El Torito — Bootable disc specification (used for OS installers)
  • UDF (Universal Disk Format) — Modern replacement for large DVDs/Blu-rays, often hybrid with ISO 9660

Internal Structure

[System Area (32 KB, unused by ISO 9660)]
[Volume Descriptor Set]
  - Primary Volume Descriptor (volume label, size, root directory location)
  - Supplementary Volume Descriptors (Joliet, etc.)
  - Boot Record (El Torito, if bootable)
  - Volume Descriptor Set Terminator
[Path Table]
[Directory Records]
[File Data]

How to Work With It

Mounting ISO Images

# Linux
sudo mount -o loop image.iso /mnt/iso
# Or without root (udisksctl)
udisksctl loop-setup -r -f image.iso

# macOS
hdiutil mount image.iso

# Windows — double-click in Explorer (native since Windows 8)
# Or via PowerShell:
Mount-DiskImage -ImagePath "C:\path\to\image.iso"

Creating ISO Images

# From a directory (Linux)
genisoimage -o output.iso -R -J -joliet-long -V "VOLUME_LABEL" ./source_dir/
# Or with xorriso
xorriso -as mkisofs -o output.iso -R -J -V "LABEL" ./source_dir/

# Bootable ISO (BIOS + UEFI)
xorriso -as mkisofs \
  -o bootable.iso \
  -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \
  -c isolinux/boot.cat \
  -b isolinux/isolinux.bin \
  -no-emul-boot -boot-load-size 4 -boot-info-table \
  -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot \
  -isohybrid-gpt-basdat \
  ./iso_contents/

# From a CD/DVD drive
dd if=/dev/cdrom of=disc.iso bs=2048

# macOS from folder
hdiutil makehybrid -o output.iso -iso -joliet source_folder/

Writing ISO to USB

# Linux/macOS (DESTRUCTIVE — targets entire device)
sudo dd if=image.iso of=/dev/sdX bs=4M status=progress

# Better alternative
sudo cp image.iso /dev/sdX && sync

# Windows — use Rufus, Ventoy, or balenaEtcher

Extracting Contents

# Linux
7z x image.iso -o./extracted/
bsdtar xf image.iso -C ./extracted/

# xorriso
xorriso -osirrox on -indev image.iso -extract / ./extracted/

# Python
import pycdlib
iso = pycdlib.PyCdlib()
iso.open('image.iso')

Common Use Cases

  • OS installation: Windows, Linux, and BSD distributions are distributed as ISO files
  • Live environments: Bootable Linux desktops (Ubuntu, Fedora live ISOs)
  • Software distribution: Large applications, game discs, driver packages
  • Disc backup: Archiving physical CD/DVD/Blu-ray collections
  • Virtual machines: Mounting installers in VirtualBox, VMware, QEMU
  • UEFI firmware: Firmware updates often distributed as bootable ISOs

Pros & Cons

Pros

  • Universal format — mountable on every major OS without third-party software
  • Exact sector-level copy preserves all disc structures including boot sectors
  • Bootable when written to USB or used with virtual machines
  • Well-defined specification (ISO 9660 + extensions)
  • Read-only by nature, which ensures integrity
  • Hybrid ISO images work on both optical drives and USB sticks

Cons

  • No compression — ISOs are full-size copies of the disc contents
  • ISO 9660 has filename and file size limitations (mitigated by Joliet/Rock Ridge/UDF)
  • Read-only format — cannot add or modify files after creation
  • Large file sizes for DVD/Blu-ray images (4.7 GB to 50 GB)
  • No encryption built into the format
  • BIN/CUE format is needed for discs with audio tracks or mixed modes

Compatibility

PlatformMount NativelyCreateNotes
WindowsYes (8+)ImgBurn, DISMDouble-click to mount since Windows 8
macOSYeshdiutilNative mount and creation
LinuxYesgenisoimage, xorrisoMount via loop device
VMsYesN/AAll hypervisors support ISO as virtual CD

Programming languages: Python (pycdlib), Go (diskfs), C (libisofs, libcdio), Rust (cdfs).

Related Formats

  • DMG — Apple's equivalent disk image format (macOS-specific)
  • IMG — Raw disk image, sometimes used interchangeably with ISO
  • BIN/CUE — Alternative disc image format that supports audio tracks
  • NRG — Nero disc image (proprietary)
  • MDS/MDF — Alcohol 120% disc image (proprietary)
  • VHD/VHDX — Microsoft virtual hard disk format
  • UDF — Universal Disk Format, modern filesystem for optical media

Practical Usage

  • Bootable USB from ISO: Use sudo dd if=image.iso of=/dev/sdX bs=4M status=progress && sync on Linux/macOS, or Rufus/Ventoy on Windows. Modern ISOs are typically hybrid (isohybrid) and work on both optical drives and USB sticks.
  • Virtual machine installation: Attach ISO files as virtual CD drives in VirtualBox, VMware, or QEMU (-cdrom image.iso) to install operating systems in VMs without writing to physical media.
  • Custom ISO creation for deployment: Use xorriso or genisoimage to create custom ISOs containing your software, scripts, and configuration for automated deployments. Include Rock Ridge extensions for Unix permission preservation.
  • Ventoy for multi-ISO USB: Instead of writing one ISO to a USB drive, install Ventoy and copy multiple ISO files directly to the USB. Ventoy presents a boot menu to select which ISO to boot.
  • ISO integrity verification: Always verify downloaded ISOs with sha256sum image.iso against the published checksum. Corrupted ISO images are a common cause of installation failures and can indicate tampering.

Anti-Patterns

  • Using dd without double-checking the target device: dd writes directly to the specified device with no confirmation. Writing to the wrong /dev/sdX destroys that drive's contents instantly. Always verify the target device with lsblk before running dd.
  • Assuming ISO 9660 supports large files or long filenames natively: Base ISO 9660 limits filenames to 8.3 format and files to 4 GB. Always use Joliet (Windows) or Rock Ridge (Unix) extensions for long filenames, and UDF for files over 4 GB.
  • Trying to modify an ISO file in place: ISO images are read-only by design. To change contents, extract the ISO, modify files, and create a new ISO. There is no efficient in-place editing mechanism.
  • Creating non-hybrid ISOs for USB deployment: Standard ISO 9660 images may not boot from USB drives. Use isohybrid (from syslinux) or xorriso's hybrid options to create ISOs that are bootable from both optical and USB media.
  • Distributing large ISOs without providing checksums: Network downloads can introduce bit errors, especially for multi-gigabyte ISO files. Always publish SHA-256 checksums alongside ISO downloads, and consider providing torrent files for distributed downloading.

Install this skill directly: skilldb add file-formats-skills

Get CLI access →