WIMLIB-IMAGEX(1)

NAME
wimlib-imagex-mount, wimlib-imagex-mountrw, wimlib-imagex-unmount - Mount and unmount an image from a WIM archive

SYNOPSIS
wimlib-imagex mount WIMFILE [IMAGE] DIRECTORY [OPTION...]
wimlib-imagex mountrw WIMFILE [IMAGE] DIRECTORY [OPTION...]
wimlib-imagex unmount DIRECTORY [OPTION...]

DESCRIPTION
On Linux-based systems, the wimlib-imagex mount and wimlib-imagex mountrw commands will mount the image in the Windows Imaging (WIM) file WIMFILE specified by IMAGE on the directory DIRECTORY using FUSE (Filesystem in Userspace). wimlib-imagex mount will mount the image read-only, while wimlib-imagex mountrw will mount the image read-write. These commands are also available as simply wimmount, wimmountrw, and wimunmount if the appropriate hard links are installed.

IMAGE may be a 1-based index of the image in the WIM to mount, or it may be the name of an image in the WIM. Use the wimlib-imagex info (1) command to see the available images in the WIM. IMAGE may be omitted if WIMFILE contains only one image.

The WIM image can be unmounted using the wimlib-imagex unmount command. Changes made to a WIM mounted read-write will be discarded unless the --commit flag is provided to wimlib-imagex unmount.

DATA AND METADATA SUPPORT
This section documents which WIM features are exposed via the mount support and which are not.

The following features are supported (read/write unless otherwise specified):

•   Hard links

•   Symbolic links. Native Windows symbolic links and junctions in a mounted WIM image will automatically be translated into UNIX symbolic links, potentially with their targets fixed to be valid given the actual mountpoint directory. UNIX symbolic links created in a read-write mounted WIM image will automatically be translated into native Windows symbolic links.

•   Named data streams (mostly). See the --streams-interface option.

•   Standard UNIX permission bits and UNIX special files are supported if the --unix-data option is used.

The following features are unsupported:

•   Windows security descriptors. These are not exposed in the mounted filesystem, although existing values will be preserved on commit. New files are not given security descriptors.

•   DOS names (8.3 names) (short names). These are not exposed in the mounted filesystem, although existing values will be preserved on commit. New files are not given DOS names.

•   Windows file attributes. These are not exposed in the mounted filesystem, although existing values will be preserved on commit. New files are assigned default attributes based on the UNIX file mode bits.

•   EFS-encrypted files. The files themselves will be visible in mounted WIM images but their data will not be available.

SPLIT WIMS
You may use wimlib-imagex mount to mount an image from a split WIM read-only. However, you may not mount an image from a split WIM read-write.

The WIMFILE argument must specify the first part of the split WIM, while the additional parts of the split WIM must be specified in one or more --ref="GLOB" options. Since globbing is built into the --ref option, typically only one --ref option is necessary. For example, the names for the split WIM parts usually go something like:

    mywim.swm
    mywim2.swm
    mywim3.swm
    mywim4.swm
    mywim5.swm

To mount the first image of this split WIM to the directory "dir", run:

    wimlib-imagex mount mywim.swm 1 dir --ref="mywim*.swm"

NOTES
Availablity: Mounting WIM images is only supported on Linux-based systems. These commands will not work on other platforms. Furthermore, the library cannot have been configured --without-fuse.

Multiple mounts: You are free to mount many WIM images at the same time, provided that there are not two images mounted read-write from the same file at the same time.

Appends vs. rebuilds: By default, changes to a read-write WIM are made in-place by appending to the WIM. This is nice for big WIM files, since the entire file doesn't have to be rebuilt to make a small change. But, if you are making many changes to a read-write mounted WIM, especially deleting large files, it is suggested to provide the --rebuild option to wimlib-imagex unmount to force the WIM to be rebuilt, or else run wimlib-imagex optimize on the WIM afterwards.

ESD files (solid WIMs): You can mount version 3584 WIMs, which usually contain LZMS-compressed solid resources and may carry the .esd file extension rather than .wim. However, such files are not designed for random access, so reading data from them when mounted may be very slow. In addition, .esd files downloaded directly by the Windows 8 web downloader have encrypted segments, and wimlib cannot mount such files until they are first decrypted.

MOUNT OPTIONS

--check
    When reading the WIM, verify its integrity if it contains an integrity table.

--streams-interface=INTERFACE
    This option is inspired by the ntfs-3g filesystem driver (see ntfs-3g (8)). It controls how alternate data streams, or named data streams, in WIM files are made available.

    If "none", it will be impossible to read or write the named data streams.

    If "xattr" (default), named data streams will be accessible through extended file attributes, unless this support was disabled when compiling wimlib. The named data streams may be accessed through extended attributes named "user.*", where the * is the name of the named data stream. See setfattr (1) and getfattr (1). Note that this is not an ideal interface, since named data streams may be larger than the maximum allowed extended attribute size.

    If "windows", the named data streams will be accessible by specifying the filename, then a colon, then the name of the named data stream; for example, "myfile:mystream".

    Please note that named data streams are a somewhat obscure NTFS feature that aren't actually used much, even though they complicate the WIM file format considerably. Normally, all you care about is the default or "unnamed" data stream.

--debug
    Turn on debugging information printed by the FUSE library, and do not fork into the background.

--ref="GLOB"
    File glob of additional WIMs or split WIM parts to reference resources from. See SPLIT_WIMS. This option can be specified multiple times. Note: GLOB is listed in quotes because it is interpreted by wimlib-imagex and may need to be quoted to protect against shell expansion.

--staging-dir=DIR
    Store temporary staging files in a subdirectory of the directory DIR. Only valid for wimlib-imagex mountrw.

--unix-data
    Honor UNIX-specific metadata that was captured by wimlib-imagex capture with the --unix-data option. By default, wimlib-imagex mount and wimlib-imagex mountrw will ignore both Windows-style security descriptors (which may have been set either from Windows or by wimlib-imagex capture from an NTFS-volume) and UNIX-specific metadata. In this default mode, all files will simply be owned by the user running wimlib-imagex and will have mode 0777. (Note: they will still not be accessible to other users unless you also specify --allow-other.) If you instead provide the --unix-data option, these default permissions will be overridden on a per-file basis with the UNIX-specific data when available, and in the case of wimlib-imagex mountrw it will be possible to change the UNIX permissions using the standard UNIX tools and functions. In addition, with wimlib v1.7.0 and later, you can create device nodes, named pipes, and sockets on the mounted filesystem and have them stored in the WIM image.

--allow-other
    Pass the allow_other option to the FUSE mount. See mount.fuse (8). Note: to do this is a non-root user, user_allow_other needs to be specified in /etc/fuse.conf (with the FUSE implementation on Linux, at least).

UNMOUNT OPTIONS

--commit
    Update the WIM file with the changes that have been made. Has no effect if the mount is read-only.

--force
    In combination with --commit, force the WIM image to be committed even if there are open file descriptors to the WIM image. Any such file descriptors will be immediately closed, and the WIM image will be committed and unmounted.

    --lazy is a deprecated alias for --force. (Unmounts are now "lazy" by default with regards to the kernel-level mountpoint, except in the case with --commit described above.)

--check
    When writing WIMFILE, include an integrity table. Has no effect if the mount is read-only or if --commit was not specified. The default behavior is to include an integrity table if and only if there was one present before.

--rebuild
    Rebuild the entire WIM rather than appending any new data to the end of it. Rebuilding the WIM is slower, but will save a little bit of space that would otherwise be left as a hole in the WIM. Even more space will be saved if the read-write mount resulted in streams being deleted from the WIM. Also see

--new-image
    In combination with --commit for a read-write mounted image, causes the modified image to be committed as a new, unnamed image appended to the WIM archive. The original image will be unmodified.

IMPLEMENTATION DETAILS
Since a WIM is an archive and not a filesystem, wimlib-imagex mountrw creates a temporary staging directory to contain files that are created or modified. This directory is located in the same directory as WIMFILE by default, but the location can be set using the --staging-dir option. When the filesystem is unmounted with --commit, the WIM is modified in-place (or rebuilt completely with --rebuild), merging in the staging files as needed. Then, the temporary staging directory is deleted.

wimlib-imagex unmount runs in a separate process from the process that previously ran wimlib-imagex mount. When unmounting a read-write mounted WIM image with --commit, these two processes communicate using a POSIX message queue so that the unmount process can track the progress of the mount process. See src/mount_image.c in the sources for details.

SEE ALSO
wimlib-imagex(1)