How to Mount ISO File on Linux

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 .
| Task | Command |
|---|---|
| Create a mount point | sudo mkdir -p /media/iso |
| Mount an ISO file | sudo mount -o loop,ro /path/to/image.iso /media/iso |
| Mount without root | udisksctl loop-setup -r -f /path/to/image.iso |
| List ISO contents | ls /media/iso |
| Unmount the ISO | sudo umount /media/iso |
| Detach a loop device | sudo losetup -d /dev/loop0 |
| Extract without mounting | 7z 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.
Start by creating the mount point, it can be any location you want:
Terminalsudo mkdir -p /media/isoMount the ISO file to the mount point by typing the following
mountcommand:Terminalsudo mount -o loop,ro /path/to/image.iso /media/isoThe
-o loop,rooptions 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.isowith the path to your ISO file.To view the ISO image content, use the
lscommand:Terminalls /media/isoYou can also open a file manager to view the ISO contents.
Unmount the ISO file by using the
umountcommand followed by the directory where the image has been mounted:Terminalsudo umount /media/isoIf the file system is in use, the
umountcommand 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:
udisksctl loop-setup -r -f /path/to/image.isoMapped 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:
udisksctl mount -b /dev/loop0Mounted /dev/loop0 at /run/media/linuxize/Ubuntu 24.04.3 LTS amd64Notice 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:
udisksctl unmount -b /dev/loop0
udisksctl loop-delete -b /dev/loop0Skipping 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.

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:
/path/to/image.iso /media/iso iso9660 loop,ro 0 0The 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:
sudo findmnt --verify
sudo mount -aThe 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:
sudo losetup -P -f --show /path/to/disk.img/dev/loop0The -f option picks the first free loop device and --show prints the name it chose. Now list the partitions the kernel found:
lsblk /dev/loop0NAME 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 partEach partition appears as a separate device with a p suffix. Mount the one you need in the usual way:
sudo mount -o ro /dev/loop0p1 /media/isoTearing this down takes two steps, because the loop device outlives the mount:
sudo umount /media/iso
sudo losetup -d /dev/loop0If you already know the byte offset of the filesystem inside the image, you can skip losetup and pass it to mount directly:
sudo mount -o loop,ro,offset=1048576 /path/to/disk.img /media/isoExtracting 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:
7z x /path/to/image.iso -oiso-contentsThe -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:
bsdtar -xf /path/to/image.iso -C iso-contentsFor images that carry Rock Ridge or Joliet extensions, xorriso preserves the original permissions and symbolic links, which the other two tools flatten:
xorriso -osirrox on -indev /path/to/image.iso -extract / iso-contentsPick 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.
Tags
Linuxize Weekly Newsletter
A quick weekly roundup of new tutorials, news, and tips.
About the authors

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