ideviceimagemounter
Mount developer disk images on iOS devices
TLDR
Mount a disk image on the connected device
List currently mounted disk images
SYNOPSIS
ideviceimagemounter [OPTIONS] <IMAGE_FILE_PATH>
PARAMETERS
-u, --udid <UDID>
Specifies the Unique Device Identifier (UDID) of the iOS device to connect to. If omitted, the command attempts to connect to the first available device.
-i, --image <IMAGE>
Specifies the path to the disk image file (.dmg) to be mounted or unmounted on the device. While IMAGE_FILE_PATH is typically provided as a positional argument, this option explicitly designates the image file, offering an alternative way to specify it.
-x, --xml
Outputs the response from the device in XML format, which can be useful for programmatic parsing of the mounting status.
-t, --type <TYPE>
Sets the image type. The default type is 'Developer', which is used for DeveloperDiskImage.dmg files. Other types might exist depending on the image's specific purpose (e.g., 'Diagnostics').
-h, --help
Displays the command's usage information and available options.
-v, --version
Prints the version information of the ideviceimagemounter utility.
DESCRIPTION
ideviceimagemounter is a command-line utility from the libimobiledevice project, enabling users to mount disk images, typically DeveloperDiskImage.dmg files, onto an iOS device. This functionality is crucial for various development and debugging tasks, such as accessing device logs, debugging applications, or performing file system operations that require specific mount points or elevated privileges. It communicates with the iOS device via the usbmuxd daemon and requires the device to be connected via USB and trusted (paired) with the computer. It provides an open-source alternative or supplement to Apple's proprietary tools for managing disk images on iOS devices.
CAVEATS
- The iOS device must be connected via USB and unlocked.
- The computer must be "trusted" by the iOS device (a pairing record must exist), usually established by accepting a trust dialog when connecting for the first time.
- The usbmuxd service must be running for communication with the device.
- Developer disk images are specific to iOS versions. Using an image compiled for a different iOS version may lead to errors or failure to mount.
- Mounting often places the disk image into the device's RAM, consuming memory.
DEVELOPER DISK IMAGES
A DeveloperDiskImage.dmg file is a sparse disk image provided by Apple within Xcode. It contains tools and frameworks necessary for debugging applications on an iOS device. These images are specific to iOS versions and are usually located within Xcode's application bundle (e.g., /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/<iOS_VERSION>/DeveloperDiskImage.dmg). ideviceimagemounter allows these images to be mounted on a physical device, enabling debugging sessions and access to developer-specific functionalities.
MOUNTING PROCESS
When ideviceimagemounter successfully mounts an image, the content of the image is made accessible on the iOS device, typically in a dedicated path like /Developer. This allows debugging tools (e.g., lldb) to function correctly over the device's debugging service. The process often involves transferring the image to the device's RAM, meaning it does not permanently reside on the device's flash storage. Unmounting typically occurs automatically upon device reboot or by re-running the command with the same image path, which can trigger an unmount operation.
HISTORY
ideviceimagemounter is an integral part of the libimobiledevice project, an open-source initiative that began around 2007-2008. The project aims to provide a cross-platform protocol library to communicate with iOS devices, serving as a free alternative to Apple's proprietary tools. The need for ideviceimagemounter arose from the necessity to mount developer disk images, which are essential for debugging applications and performing advanced development tasks on iOS devices outside of Apple's Xcode environment. Its development underscores the community's effort to enable broader access and control over iOS devices for developers and power users.
SEE ALSO
ideviceinfo(1), idevicesyslog(1), ideviceinstaller(1), usbmuxd(8), iproxy(1)