Mount an ISO image on a Solaris filesystem with lofiadm

Contributor Icon Contributed by Rex Date Icon November 5, 2003  
Tag Icon Tagged: Solaris system administration

Many software packages can be downloaded in the form of an ISO image. Rather than burning the image to a CD-ROM to access its contents, it is easy to mount the image directly into the filesystem using the lofiadm and mount commands.


Given an ISO image in /export/temp/software.iso, a loopback file device (/dev/lofi/1) is created with the following command:

lofiadm -a /export/temp/software.iso /dev/lofi/1

The lofi device creates a block device version of a file. This block device can be mounted to /mnt with the following command:

mount -F hsfs -o ro /dev/lofi/1 /mnt

These commands can be combined into a single command:

mount -F hsfs -o ro `lofiadm -a /export/temp/software.iso` /mnt

Previous recipe | Next recipe |
 

Viewing 3 Comments

    • ^
    • v
    Way cool example. This really helped me.
    • ^
    • v
    ---------------- mount_iso ---------------------

    #!/bin/sh
    #
    # Mount an ISO image using a loopback filesystem.
    #

    if [ -z "$1" -o -z "$2" ]; then
    echo "$0 <full_path_to_iso> <mount_point>"
    exit 0
    fi

    # Add the loopback block device.
    # This will return the device path under /dev/lofi/.
    printf "Creating loopback device to $1 ... "
    LOFS_DEVICE=`lofiadm -a "$1"`
    if [ 0 -ne $? ]; then
    exit 1
    else
    echo "${LOFS_DEVICE}"
    fi

    # Now, mount the device to the mount point specified.
    printf "Mounting $2 on ${LOFS_DEVICE} ... "
    mount -F hsfs -o ro "${LOFS_DEVICE}" "$2"
    if [ 0 -ne $? ]; then
    lofiadm -d ${LOFS_DEVICE}
    exit 1
    else
    echo "mounted"
    fi

    -------------------- umount_iso ---------------------------

    #!/bin/sh
    #
    # Unmount an ISO image mounted over the loopback file system.
    #

    if [ -z "$1" ]; then
    echo "$0 <mount_point>"
    exit 0
    fi

    # Find the loopback device in the list of mount points.
    LOFS_DEVICE=`mount | grep "$1" | awk '{print $3}'`
    if [ -z "${LOFS_DEVICE}" ]; then
    echo "Unable to find loopback device for mount point $1"
    exit 1
    fi

    # Unmount the mount point.
    printf "Unmounting $1 on ${LOFS_DEVICE} ... "
    umount $1
    if [ 0 -ne $? ]; then
    exit 1
    else
    echo "unmounted"
    fi

    # Delete the loopback block device.
    printf "Deleting loopback device ${LOFS_DEVICE} ... "
    lofiadm -d "${LOFS_DEVICE}"
    if [ 0 -ne $? ]; then
    exit 1;
    else
    echo "deleted"
    fi

    --------------------------------------

    enjoy!!! w00h00!!!
    • ^
    • v
    Is it possible to mount DVD.iso ?

    When I run lofiadm -a /cdrom/cdroot/bo651.iso /cdrom/fakedirectory

    I get:

    lofiadm: size of /cdrom/cdroot/bo651.iso is not a multiple of 512 :?:
 
close Reblog this comment
blog comments powered by Disqus