How to Mount ISO File on Linux

By 

Updated on

9 min read

Linux Mount ISO File

An ISO file is an archive file that typically contains the complete image of a CD or DVD. For example, most operating systems such as Windows, Linux, and macOS are distributed as ISO images.

ISO files can be extracted using popular archive programs, mounted on a loop device, and written to a USB flash drive or blank CD disc.

When you mount an ISO, Linux exposes its contents as a read-only filesystem. The files are not extracted or modified in place.

In this tutorial, we will explain how to mount ISO files on Linux from the command line, as a regular user without root privileges, and from the desktop.

Quick Reference

For a printable quick reference, see the mount cheatsheet .

TaskCommand
Create a mount pointsudo mkdir -p /media/iso
Mount an ISO filesudo mount -o loop,ro /path/to/image.iso /media/iso
Mount without rootudisksctl loop-setup -r -f /path/to/image.iso
List ISO contentsls /media/iso
Unmount the ISOsudo umount /media/iso
Detach a loop devicesudo losetup -d /dev/loop0
Extract without mounting7z x /path/to/image.iso -oiso-contents

How to Mount ISO Files using the Command Line

The mount command allows you to attach (mount) ISO files at a particular mount point in the directory tree.

The instructions in this section work on any Linux distribution.

  1. Start by creating the mount point, it can be any location you want:

    Terminal
    sudo mkdir -p /media/iso
  2. Mount the ISO file to the mount point by typing the following mount command:

    Terminal
    sudo mount -o loop,ro /path/to/image.iso /media/iso

    The -o loop,ro options tell the command to map a loop device to the specified ISO file and mount it read-only at the chosen mount point.

    Replace /path/to/image.iso with the path to your ISO file.

  3. To view the ISO image content, use the ls command:

    Terminal
    ls /media/iso

    You can also open a file manager to view the ISO contents.

  4. Unmount the ISO file by using the umount command followed by the directory where the image has been mounted:

    Terminal
    sudo umount /media/iso

    If the file system is in use, the umount command will fail to detach the file system.

Mounting an ISO Without Root Privileges

The mount command needs root access, which is inconvenient when you only want to look inside an image. On desktop systems that run udisks2, and that includes Ubuntu, Fedora, and most Plasma spins, the udisksctl tool lets your own user account attach the image.

Start by mapping the ISO file to a loop device. The -r option makes the loop device read-only, and -f points at the file:

Terminal
udisksctl loop-setup -r -f /path/to/image.iso
output
Mapped file /path/to/image.iso as /dev/loop0.

Note the device name in the output, because the following commands refer to it. Many desktop environments mount the image at this point on their own and open a file manager window. If nothing happens, mount it yourself:

Terminal
udisksctl mount -b /dev/loop0
output
Mounted /dev/loop0 at /run/media/linuxize/Ubuntu 24.04.3 LTS amd64

Notice that udisks picks the mount point for you. It uses the volume label of the image under /run/media/ and your user name, instead of the /media/iso directory we created earlier.

When you are done, unmount the image and release the loop device:

Terminal
udisksctl unmount -b /dev/loop0
udisksctl loop-delete -b /dev/loop0

Skipping loop-delete leaves the loop device attached to the file, so the image stays busy until you log out.

Mounting ISO Files on the Desktop

Graphical file managers can do the same job without any typing, though what they offer depends on the desktop environment.

GNOME

If you are running a Linux distribution that uses GNOME as the desktop environment, you can mount an ISO file using the GNOME Disk Image Mounter application. This is the default on Ubuntu, Fedora Workstation, Debian with GNOME, and Pop!_OS.

Locate the ISO file that you want to mount, and right-click on it. In the context menu, click on the “Open With Disk Image Mounter” option. On recent GNOME releases the entry sits under the “Open With” submenu.

Disk Image Mounter

Once the image is mounted, a device icon should appear on the desktop. Double-click on it and the GNOME file manager will open up.

To unmount the ISO file right click on the device icon and select “Unmount”.

KDE Plasma

Plasma does not ship an ISO mounter in the Dolphin context menu by default. The quickest path is the udisksctl method above, which needs no extra packages on a standard Plasma install. If you prefer a right-click entry, install the kde-service-menu-fuseiso service menu from Dolphin under Settings, Configure Dolphin, Context Menu, Download New Services.

Mounting an ISO Automatically at Boot

Mounts created with the mount command disappear on reboot. To bring an image back automatically, add an entry to the /etc/fstab file:

/etc/fstabtxt
/path/to/image.iso  /media/iso  iso9660  loop,ro  0  0

The fields are the image path, the mount point, the filesystem type, the mount options, and the dump and fsck flags, which stay at 0 for a read-only image.

Test the entry before you reboot, because a bad line in /etc/fstab can leave the system waiting at boot:

Terminal
sudo findmnt --verify
sudo mount -a

The first command checks the file for syntax problems and missing mount points, and the second applies every entry that is not marked noauto. If both run without complaint, the entry is safe.

Mounting Other Disk Image Formats

Raw disk images such as .img files often contain a full partition table rather than a single filesystem, so mounting the file directly fails. Use losetup with the -P option, which scans the image and creates a device node for each partition it finds:

Terminal
sudo losetup -P -f --show /path/to/disk.img
output
/dev/loop0

The -f option picks the first free loop device and --show prints the name it chose. Now list the partitions the kernel found:

Terminal
lsblk /dev/loop0
output
NAME      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop0       7:0    0  3.7G  0 loop
├─loop0p1 259:0    0  512M  0 part
└─loop0p2 259:1    0  3.2G  0 part

Each partition appears as a separate device with a p suffix. Mount the one you need in the usual way:

Terminal
sudo mount -o ro /dev/loop0p1 /media/iso

Tearing this down takes two steps, because the loop device outlives the mount:

Terminal
sudo umount /media/iso
sudo losetup -d /dev/loop0

If you already know the byte offset of the filesystem inside the image, you can skip losetup and pass it to mount directly:

Terminal
sudo mount -o loop,ro,offset=1048576 /path/to/disk.img /media/iso

Extracting an ISO Without Mounting It

Mounting needs either root access or udisks2. If you only want the files out of the image, an archive tool reads ISO 9660 directly and needs neither.

The 7z command extracts the whole image into a directory of your choice:

Terminal
7z x /path/to/image.iso -oiso-contents

The -o option takes the output directory with no space after it, which is a quirk of the tool rather than a typo. On Ubuntu 24.04 and newer, and on Debian 13, install the command with sudo apt install 7zip. Ubuntu 22.04 and older releases ship it as p7zip-full.

The bsdtar command from libarchive does the same job and is packaged as libarchive-tools on Ubuntu and Debian:

Terminal
bsdtar -xf /path/to/image.iso -C iso-contents

For images that carry Rock Ridge or Joliet extensions, xorriso preserves the original permissions and symbolic links, which the other two tools flatten:

Terminal
xorriso -osirrox on -indev /path/to/image.iso -extract / iso-contents

Pick extraction over mounting when you need to edit the files, because a mounted ISO is always read-only. See the tar command guide for the same workflow on compressed archives.

Troubleshooting

mount: could not find any free loop device
Since Linux 3.1 the kernel allocates loop devices on demand through /dev/loop-control, so this error usually means the existing devices are genuinely all in use rather than that the pool is too small. Run sudo losetup -a to list every active mapping, then release the one you no longer need with sudo losetup -d /dev/loopN. On older kernels where loop is a module and not built in, raising the limit with sudo modprobe loop max_loop=16 also works, but only if the module is not already loaded.

umount: target is busy
A process is still accessing the mounted ISO. Close any open files or terminal sessions inside the mount point, then retry. Use lsof +D /media/iso to identify which process is holding it open.

mount: wrong fs type, bad option, bad superblock
The image is not ISO 9660, or the file is damaged. Check it with file /path/to/image.iso, which reports ISO 9660 CD-ROM filesystem data for a plain image and adds (DOS/MBR boot sector) for a hybrid installer image. Windows installer images and Blu-ray images are frequently UDF instead, so mount those with an explicit type: sudo mount -o loop,ro -t udf /path/to/image.iso /media/iso. If file reports plain data, the download is corrupt and you need to fetch it again.

FAQ

What does mounting an ISO mean?
Mounting makes the contents of an ISO file accessible as if it were a physical disc inserted into a drive. The ISO is attached to a loop device, which the system treats like a block device, and its filesystem is made available at the mount point you specify.

Can I write to a mounted ISO?
No. ISO 9660 is a read-only filesystem. You can read and copy files from a mounted ISO, but you cannot modify its contents in place. Extract the image to a directory instead if you need to change anything.

What is the -o loop option?
It tells mount to attach the ISO file to a loop device, a virtual block device that maps to a regular file. Without it, mount would treat the path as a physical device rather than a file.

Can I run or install an operating system from a mounted ISO?
No. Mounting only exposes the files inside the image. To boot from it, write the image to a USB drive with the dd command or a graphical bootable USB tool , or attach the ISO as a virtual optical drive in a virtual machine.

Conclusion

In Linux, you can mount ISO files with the mount command using the -o loop option, attach them as a regular user with udisksctl, or skip mounting and extract the contents with an archive tool. To mount other filesystem types such as network shares or external drives, the same mount command applies with different options.

Linuxize Weekly Newsletter

A quick weekly roundup of new tutorials, news, and tips.

About the authors

Dejan Panovski

Dejan Panovski

Dejan Panovski is the founder of Linuxize, an RHCSA-certified Linux system administrator and DevOps engineer based in Skopje, Macedonia. Author of 800+ Linux tutorials with 20+ years of experience turning complex Linux tasks into clear, reliable guides.

View author page