From: Eric Biggers Date: Tue, 27 Dec 2016 23:24:55 +0000 (-0600) Subject: Document xattr support X-Git-Tag: v1.11.0~27 X-Git-Url: https://wimlib.net/git/?p=wimlib;a=commitdiff_plain;h=b4baff96f42a5cc67e614aa67f6dbd82ae4e22f4 Document xattr support --- diff --git a/NEWS b/NEWS index f7f5d7b3..13cd69f5 100644 --- a/NEWS +++ b/NEWS @@ -1,15 +1,17 @@ Version 1.11.0-BETA1: - Updated 'mkwinpeimg' to work correctly on images that have a "windows" - (lower case) directory rather than a "Windows" (upper case) directory. + On all platforms, sparse files are now extracted as sparse. + + Sparse files captured from UNIX-style filesystems are now marked as + sparse in the resulting WIM image. - Sparse files are now extracted as sparse. + Added support for storing Linux-style extended attributes in WIM images. + When the --unix-data option is used on Linux, wimlib-imagex now captures + and applies extended attributes, in addition to the already-supported + standard UNIX file permissions (owner/group/mode) and special files. On Windows, improved the way in which files deduplicated with Windows' Data Deduplication feature are captured. - Fixed configuring with --enable-ssse3-sha1 from release tarball - (the file nasm_lt.sh was missing). - The development files needed to link with wimlib using Visual Studio are now included in the Windows release archives. @@ -18,6 +20,12 @@ Version 1.11.0-BETA1: The example programs can now be compiled in C++ mode, and they also now work on Windows. + Updated 'mkwinpeimg' to work correctly on images that have a "windows" + (lower case) directory rather than a "Windows" (upper case) directory. + + Fixed configuring with --enable-ssse3-sha1 from release tarball + (the file nasm_lt.sh was missing). + Version 1.10.0: The LZX compression ratio has been slightly improved. The default mode, LZX level 50, is now almost as good as the old LZX level 100, while diff --git a/README b/README index 22481ce0..0bf95403 100644 --- a/README +++ b/README @@ -258,9 +258,9 @@ If you are looking for an archive format that provides features similar to WIM but was designed primarily for UNIX, you may want to consider SquashFS (http://squashfs.sourceforge.net/). However, you may find that wimlib works surprisingly well on UNIX. It will store hard links and symbolic links, and it -has optional support for storing UNIX owners, groups, modes, and special files -such as device nodes and FIFOs. Actually, I use it to back up my own files on -Linux! +supports storing standard UNIX file permissions (owners, groups, and modes); +special files such as device nodes and FIFOs; and extended attributes. +Actually, I use it to back up my own files on Linux! HISTORY diff --git a/doc/man1/wimlib-imagex-apply.1 b/doc/man1/wimlib-imagex-apply.1 index 4e8bc8d8..90096807 100644 --- a/doc/man1/wimlib-imagex-apply.1 +++ b/doc/man1/wimlib-imagex-apply.1 @@ -297,11 +297,10 @@ Reparse point fixups are never done in the NTFS volume extraction mode on UNIX-like systems. .TP \fB--unix-data\fR -(UNIX-like systems only) Restore UNIX owners, groups, modes, and device IDs -(major and minor numbers) that were captured by \fBwimlib-imagex capture\fR with -the \fB--unix-data\fR option. Since wimlib v1.7.0, you can backup and restore -not only the standard UNIX file permission information, but also character -device nodes, block device nodes, named pipes (FIFOs), and UNIX domain sockets. +(UNIX-like systems only) Restore UNIX-specific metadata and special files that +were captured by \fBwimlib-imagex capture\fR with the \fB--unix-data\fR option. +This includes: standard UNIX file permissions (owner, group, and mode); device +nodes, named pipes, and sockets; and extended attributes (Linux-only). .TP \fB--no-acls\fR Do not restore security descriptors on extracted files and directories. diff --git a/doc/man1/wimlib-imagex-capture.1 b/doc/man1/wimlib-imagex-capture.1 index e112fca9..72608dc0 100644 --- a/doc/man1/wimlib-imagex-capture.1 +++ b/doc/man1/wimlib-imagex-capture.1 @@ -64,12 +64,13 @@ Symbolic links (translated losslessly to Windows reparse points) Last modification times (mtime) and last access times (atime) with 100 nanosecond granularity .IP \[bu] -With \fB--unix-data\fR: UNIX owners, groups, and modes +With \fB--unix-data\fR: standard UNIX file permissions (owner, group, and mode) .IP \[bu] -With \fB--unix-data\fR: device nodes, FIFOs, and UNIX domain sockets +With \fB--unix-data\fR: device nodes, named pipes, and sockets +.IP \[bu] +With \fB--unix-data\fR: extended attributes (Linux only) .PP -There is no support for storing extended attributes (e.g. SELinux security -labels and POSIX ACLs), last status change times (ctimes), or hard link +There is no support for storing last status change times (ctimes), or hard link information for symbolic link files (each symbolic link will be stored as an independent file). In addition, filenames and symbolic link targets on UNIX filesystems which are not valid UTF-8 with the addition of surrogate codepoints @@ -386,18 +387,14 @@ saved in the WIM image as Windows/System32/WimBootCompress.ini, overriding any that may be present on the filesystem. .TP \fB--unix-data\fR -(UNIX-like systems only) Store the UNIX owner, group, mode, and device ID (major -and minor number) of each captured file. Since wimlib v1.7.0, you can backup -and restore not only the standard UNIX file permission information, but also -character device nodes, block device nodes, named pipes (FIFOs), and UNIX domain -sockets. +(UNIX-like systems only) Store UNIX-specific metadata and special files. This +includes: standard UNIX file permissions (owner, group, and mode); device nodes, +named pipes, and sockets; and extended attributes (Linux only). This +information can later be restored by \fBwimlib-imagex apply\fR with the +\fB--unix-data\fR option. .IP -wimlib stores UNIX data by adding a special tagged metadata item to each -directory entry of each file that contains this information. This extra -information is ignored by the Microsoft implementation. Note: UNIX data stored -by wimlib before v1.7.0 used a different format that is no longer supported. If -you have old WIM files with UNIX data, apply them with v1.6.2 and recapture them -with v1.7.0 or later. +UNIX-specific information is ignored by Microsoft's WIM software and by the +Windows version of wimlib. .TP \fB--no-acls\fR Do not capture files' security descriptors. diff --git a/doc/man1/wimlib-imagex-mount.1 b/doc/man1/wimlib-imagex-mount.1 index b5b6c630..aa01ecc7 100644 --- a/doc/man1/wimlib-imagex-mount.1 +++ b/doc/man1/wimlib-imagex-mount.1 @@ -25,11 +25,10 @@ The WIM image can be unmounted using the \fBwimlib-imagex unmount\fR command. Changes made to a WIM mounted read-write will be discarded unless the \fB--commit\fR flag is provided to \fBwimlib-imagex unmount\fR. .SH DATA AND METADATA SUPPORT -This section documents which WIM features are exposed via the mount support and -which are not. -.PP -The following features are \fIsupported\fR (read/write unless otherwise -specified): +WIM images can contain a variety of types of files and file metadata, some of +which is Windows-specific. Currently, the mount feature can translate some, but +not all, Windows concepts to Linux equivalents. Briefly, the following features +are \fIsupported\fR (read/write): .IP \[bu] 4 Hard links .IP \[bu] @@ -40,29 +39,30 @@ directory. UNIX symbolic links created in a read-write mounted WIM image will automatically be translated into native Windows symbolic links. .IP \[bu] Named data streams (mostly). See the \fB--streams-interface\fR option. -.IP \[bu] -Standard UNIX permission bits and UNIX special files are supported if the -\fB--unix-data\fR option is used. .PP -The following features are \fIunsupported\fR: +In addition, standard UNIX file permissions (owner, group, and mode) and special +files are supported if the \fB--unix-data\fR option is used. +.PP +However, the following features are \fIunsupported\fR and not exposed in mounted +images: .IP \[bu] 4 -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. +Windows security descriptors. New files are not given security descriptors. .IP \[bu] -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. +DOS names (8.3 names) (short names). New files are not given DOS names. .IP \[bu] -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. +Windows file attributes. New files are assigned default attributes based on the +UNIX file mode bits. .IP \[bu] -Object IDs. These are not exposed in the mounted filesystem, although existing -values will be preserved on commit. New files are not given object IDs. +Object IDs. New files are not given object IDs. .IP \[bu] EFS-encrypted files. The files themselves will be visible in mounted WIM images but their data will not be available. +.IP \[bu] +Extended attributes. Although wimlib now supports creating a WIM image +containing Linux-style extended attributes, these are not yet exposed in mounted +WIM images. (This may be implemented in the future, though it would conflict +with the use of extended attributes to expose Windows concepts like named data +streams.) .SH SPLIT WIMS You may use \fBwimlib-imagex mount\fR to mount an image from a split WIM read-only. However, you may not mount an image from a split WIM read-write. diff --git a/include/wimlib.h b/include/wimlib.h index 226c6877..c7ad3e04 100644 --- a/include/wimlib.h +++ b/include/wimlib.h @@ -1711,8 +1711,9 @@ typedef int (*wimlib_iterate_lookup_table_callback_t)(const struct wimlib_resour /** UNIX-like systems only: Store the UNIX owner, group, mode, and device ID * (major and minor number) of each file. In addition, capture special files - * such as device nodes and FIFOs. See the documentation for the - * --unix-data option to wimcapture for more information. */ + * such as device nodes and FIFOs. Since wimlib v1.11.0, on Linux also capture + * extended attributes. See the documentation for the --unix-data option + * to wimcapture for more information. */ #define WIMLIB_ADD_FLAG_UNIX_DATA 0x00000010 /** Do not capture security descriptors. Only has an effect in NTFS-3G capture @@ -1904,9 +1905,8 @@ typedef int (*wimlib_iterate_lookup_table_callback_t)(const struct wimlib_resour * wimlib_extract_paths() when passed multiple paths. */ #define WIMLIB_EXTRACT_FLAG_NTFS 0x00000001 -/** UNIX-like systems only: Extract special UNIX data captured with - * ::WIMLIB_ADD_FLAG_UNIX_DATA. This flag cannot be combined with - * ::WIMLIB_EXTRACT_FLAG_NTFS. */ +/** UNIX-like systems only: Extract UNIX-specific metadata captured with + * ::WIMLIB_ADD_FLAG_UNIX_DATA. */ #define WIMLIB_EXTRACT_FLAG_UNIX_DATA 0x00000020 /** Do not extract security descriptors. This flag cannot be combined with @@ -2066,8 +2066,7 @@ typedef int (*wimlib_iterate_lookup_table_callback_t)(const struct wimlib_resour * name, a colon, then the name of the data stream. */ #define WIMLIB_MOUNT_FLAG_STREAM_INTERFACE_WINDOWS 0x00000010 -/** Use UNIX metadata if available in the WIM image. See - * ::WIMLIB_ADD_FLAG_UNIX_DATA. */ +/** Support UNIX owners, groups, modes, and special files. */ #define WIMLIB_MOUNT_FLAG_UNIX_DATA 0x00000020 /** Allow other users to see the mounted filesystem. This passes the @c