[wimlib] / doc / man1 / wimlib-imagex-apply.1
1 .TH WIMLIB-IMAGEX "1" "January 2016" "wimlib 1.9.0" "User Commands"
3 wimlib-imagex-apply \- Extract one image, or all images, from a WIM archive
5 \fBwimlib-imagex apply\fR \fIWIMFILE\fR [\fIIMAGE\fR] \fITARGET\fR [\fIOPTION\fR...]
7 \fBwimlib-imagex apply\fR extracts an image, or all images, from the Windows
8 Imaging (WIM) file \fIWIMFILE\fR.  This command is also available as simply
9 \fBwimapply\fR if the appropriate hard link or batch file has been installed.
10 .PP
11 This command is designed to extract, or "apply", one or more full WIM images.
12 If you instead want to extract only certain files or directories contained in a
13 WIM image, consider using \fBwimlib-imagex extract\fR or
14 \fBwimlib-imagex mount\fR instead.  (\fBwimlib-imagex mount\fR is not
15 supported on Windows.)
16 .PP
17 \fIIMAGE\fR specifies the WIM image in \fIWIMFILE\fR to extract.  It may be a
18 1-based index of an image in \fIWIMFILE\fR, the name of an image in
19 \fIWIMFILE\fR, or the keyword "all" to indicate that all images in \fIWIMFILE\fR
20 are to be extracted.  Use the \fBwimlib-imagex info\fR (1) command to show
21 what images a WIM file contains.  \fIIMAGE\fR may be omitted if \fIWIMFILE\fR
22 contains only one image.
23 .PP
24 \fITARGET\fR specifies where to extract the WIM image to.  If \fITARGET\fR
25 specifies a directory, the WIM image is extracted to that directory (see
27 Similarly, if \fITARGET\fR specifies a non-existent file, a directory is created
28 in that location and the WIM image is extracted to that directory.
29 .PP
30 If \fIIMAGE\fR is specified as "all", then all the images in \fIWIMFILE\fR are
31 actually extracted into subdirectories of \fITARGET\fR, each of which is given
32 the name of the corresponding image, falling back to the image index in the case
33 of an image with no name or a name not valid as a filename.
34 .PP
35 Alternatively, on UNIX-like systems only, if \fITARGET\fR specifies a regular
36 file or block device, it is interpreted as an NTFS volume to which the WIM image
37 is to be extracted (see \fBNTFS VOLUME EXTRACTION (UNIX)\fR).  Only a single
38 image can be extracted in this mode, and only extracting to the root of the NTFS
39 volume (not a subdirectory thereof) is supported.
40 .PP
41 \fIWIMFILE\fR may be "-" to read the WIM from standard input rather than from a
42 file, but see \fBPIPABLE WIMS\fR for more information.
43 .PP
44 \fBwimlib-imagex apply\fR supports applying images from stand-alone WIMs as
45 well as split WIMs.  See \fBSPLIT WIMS\fR.
47 This section documents how \fBwimlib-imagex apply\fR (and also
48 \fBwimlib-imagex extract\fR) extract a WIM image (or a possibly a subset
49 thereof, in the case of \fBwimlib-imagex extract\fR) to a directory on
50 UNIX-like systems.  See \fBDIRECTORY EXTRACTION (WINDOWS)\fR for the
51 corresponding documentation for Windows.
52 .PP
53 As mentioned, a WIM image can be applied to a directory on a UNIX-like system by
54 providing a \fITARGET\fR directory.  However, it is important to keep in mind
55 that the WIM format was designed for Windows, and as a result WIM files can
56 contain data or metadata that cannot be represented on UNIX-like systems.  The
57 main information that \fBwimlib-imagex\fR will \fInot\fR be able to extract
58 on UNIX-like systems is the following:
59 .IP \[bu] 4
60 Windows security descriptors (which include the file owner, group, and ACLs).
61 .IP \[bu]
62 Named data streams.
63 .IP \[bu]
64 Reparse points other than symbolic links and junction points.
65 .IP \[bu]
66 Certain file attributes such as compression, encryption, and sparseness.
67 .IP \[bu]
68 Short (DOS) names for files.
69 .IP \[bu]
70 File creation timestamps.
71 .PP
72 Notes: Unsupported data and metadata is simply not extracted, but
73 \fBwimlib-imagex\fR will attempt to warn you when the contents of the WIM
74 image can't be exactly represented when extracted.  Last access and last
75 modification timestamps are specified to 100 nanosecond granularity in the WIM
76 file, but will only be extracted to the highest precision supported by the
77 underlying operating system, C library, and filesystem.  Compressed files will
78 be extracted as uncompressed, while encrypted files will not be extracted at
79 all.
81 This section documents how \fBwimlib-imagex apply\fR extracts a WIM image
82 directly to an NTFS volume image on UNIX-like systems.
83 .PP
84 As mentioned, \fBwimlib-imagex\fR running on a UNIX-like system can apply a
85 WIM image directly to an NTFS volume by specifying \fITARGET\fR as a regular file
86 or block device containing an NTFS filesystem.  The NTFS filesystem need not be
87 empty, although it's expected that it be empty for the intended use cases.  A
88 new NTFS filesystem can be created using the \fBmkntfs\fR(8) command provided
89 with \fBntfs-3g\fR.
90 .PP
91 In this NTFS volume extraction mode, the WIM image is extracted to the root of
92 the NTFS volume in a way preserves almost all information contained in the WIM
93 image.  It therefore does not suffer from the limitations described in
94 \fBDIRECTORY EXTRACTION (UNIX)\fR.  This support relies on libntfs-3g to write
95 to the NTFS volume and handle NTFS-specific and Windows-specific data.
96 .PP
97 Please note that this NTFS volume extraction mode is \fInot\fR entered if
98 \fITARGET\fR is a directory, even if an NTFS filesystem is mounted on
99 \fITARGET\fR.  You must specify the NTFS volume itself (and it must be
100 unmounted, and you must have permission to write to it).
101 .PP
102 This NTFS volume extraction mode attempts to extract as much information as
103 possible, including:
104 .IP \[bu] 4
105 All data streams of all files except encrypted files, including the unnamed data
106 stream as well as all named data streams.
107 .IP \[bu]
108 Reparse points, including symbolic links, junction points, and other reparse
109 points.
110 .IP \[bu]
111 File and directory creation, access, and modification timestamps, using the
112 native NTFS resolution of 100 nanoseconds.
113 .IP \[bu]
114 Windows security descriptors, including all components (owner, group, DACL, and
115 SACL).
116 .IP \[bu]
117 DOS/Windows file attribute flags.
118 .IP \[bu]
119 All names of all files, including names in the Win32 namespace, DOS namespace,
120 Win32+DOS namespace, and POSIX namespace.  This includes hard links.
121 .IP \[bu]
122 Object IDs.
123 .PP
124 However, there are also several known limitations of the NTFS volume extraction
125 mode:
126 .IP \[bu] 4
127 Encrypted files will not be extracted.
128 .IP \[bu]
129 Sparse file attributes will not be extracted.
130 .PP
131 Regardless, since almost all information from the WIM image is restored in this
132 mode, it is possible (and fully supported) to restore an image of an actual
133 Windows installation using \fBwimlib-imagex\fR on UNIX-like systems as an
134 alternative to using \fBwimlib-imagex\fR on Windows.  In the examples at the end
135 of this manual page, there is an example of applying an image from the
136 "install.wim" file contained in the installation media for Windows (Vista or
137 later) in the "sources" directory.
138 .PP
139 Note that to actually boot Windows (Vista or later) from an applied
140 "install.wim" image, you also need to mark the partition as "bootable" and set
141 up various boot files, such as \\BOOTMGR and \\BOOT\\BCD.  The latter task is
142 most easily accomplished by running the "bcdboot.exe" program from a live
143 Windows system (such as Windows PE), but there are other options as well.
145 On Windows, \fBwimlib-imagex apply\fR and \fBwimlib-imagex extract\fR
146 natively support Windows-specific and NTFS-specific data.  For best results, the
147 target directory should be located on an NTFS volume and \fBwimlib-imagex\fR
148 should be run with Administrator privileges; however, non-NTFS filesystems and
149 running without Administrator privileges are also supported.
150 .PP
151 On Windows, \fBwimlib-imagex apply\fR and \fBwimlib-imagex extract\fR
152 try to extract as much data and metadata as possible, including:
153 .IP \[bu] 4
154 All data streams of all files.  This includes the default file contents, as well
155 as named data streams if supported by the target volume.
156 .IP \[bu]
157 Reparse points, including symbolic links, junction points, and other reparse
158 points, if supported by the target volume.  (Note: see \fB--rpfix\fR and
159 \fB--norpfix\fR for documentation on exactly how absolute symbolic links and
160 junctions are extracted.)  However, as per the default security settings of
161 Windows, it is impossible to create a symbolic link or junction point without
162 Administrator privileges; therefore, you must run \fBwimlib-imagex\fR as the
163 Administrator if you wish to fully restore an image containing symbolic links
164 and/or junction points.  (Otherwise, merely a warning will be issued when a
165 symbolic link or junction point cannot be extracted due to insufficient
166 privileges.)
167 .IP \[bu]
168 File and directory creation, access, and modification timestamps, to the highest
169 resolution supported by the target volume.
170 .IP \[bu]
171 Security descriptors, if supported by the filesystem and \fB--no-acls\fR is not
172 specified.  Furthermore, unless \fB--strict-acls\fR is specified, the security
173 descriptors for individual files or directories may be omitted or only partially
174 set if the user does not have permission to set them, which can be a problem if
175 \fBwimlib-imagex\fR is run as a non-Administrator.
176 .IP \[bu]
177 File attributes, including hidden, compressed, encrypted, etc, when supported by
178 the filesystem.
179 .IP \[bu]
180 DOS names (8.3) names of files; however, the failure to set them is not
181 considered an error condition.
182 .IP \[bu]
183 Hard links, if supported by the target filesystem.
184 .IP \[bu]
185 Object IDs, if supported by the target filesystem.
186 .PP
187 Additional notes about extracting files on Windows:
188 .IP \[bu] 4
189 \fBwimlib-imagex\fR will issue a warning when it is unable to extract the
190 exact metadata and data of the WIM image, for example due to features mentioned
191 above not being supported by the target filesystem.
192 .IP \[bu]
193 Sparse file attributes will not be extracted.
194 .IP \[bu]
195 Since encrypted files (with FILE_ATTRIBUTE_ENCRYPTED) are not stored in
196 plaintext in the WIM image, \fBwimlib-imagex\fR cannot restore encrypted
197 files to filesystems not supporting encryption.  Therefore, on such filesystems,
198 encrypted files will not be extracted.  Furthermore, even if encrypted
199 files are restored to a filesystem that supports encryption, they will only be
200 decryptable if the decryption key is available.
201 .IP \[bu]
202 Files with names that cannot be represented on Windows will not
203 be extracted by default; see \fB--include-invalid-names\fR.
204 .IP \[bu]
205 Files with full paths over 260 characters (the so-called MAX_PATH) will be
206 extracted, but beware that such files will be inaccessible to most Windows
207 software and may not be able to be deleted easily.
208 .IP \[bu]
209 On Windows, unless the \fB--no-acls\fR option is specified, wimlib will attempt
210 to restore files' security descriptors exactly as they are provided in the WIM
211 image.  Beware that typical Windows installations contain files whose security
212 descriptors do not allow the Administrator to delete them.  Therefore, such
213 files will not be able to be deleted, or in some cases even read, after
214 extracting, unless processed with a specialized program that knows to acquire
215 the SE_RESTORE_NAME and/or SE_BACKUP_NAME privileges which allow overriding
216 access control lists.  This is not a bug in wimlib, which works as designed to
217 correctly restore the data that was archived, but rather a problem with the
218 access rights Windows uses on certain files.  But if you just want the file data
219 and don't care about security descriptors, use \fB--no-acls\fR to skip restoring
220 all security descriptors.
221 .IP \[bu]
222 A similar caveat to the above applies to file attributes such as Readonly,
223 Hidden, and System.  By design, on Windows wimlib will restore such file
224 attributes; therefore, extracted files may have those attributes.  If this is
225 not what you want, use the \fB--no-attributes\fR option.
227 You may use \fBwimlib-imagex apply\fR to apply images from a split WIM.  The
228 \fIWIMFILE\fR argument must specify the first part of the split WIM, while the
229 additional parts of the split WIM must be specified in one or more
230 \fB--ref\fR="\fIGLOB\fR" options.  Since globbing is built into the \fB--ref\fR
231 option, typically only one \fB--ref\fR option is necessary.  For example, the
232 names for the split WIM parts usually go something like:
233 .RS
234 .PP
235 .nf
236 mywim.swm
237 mywim2.swm
238 mywim3.swm
239 mywim4.swm
240 mywim5.swm
241 .RE
242 .fi
243 .PP
244 To apply the first image of this split WIM to the directory "dir", run:
245 .PP
246 .RS
247 wimlib-imagex apply mywim.swm 1 dir --ref="mywim*.swm"
248 .RE
249 .PP
250 As a special case, if you are applying an image from standard input from a split
251 WIM that is also pipable (as described in \fBPIPABLE WIMS\fR), the \fB--ref\fR
252 option is unneeded; instead you must ensure that all the split WIM parts are
253 concatenated together on standard input.  They can be provided in any order,
254 with the exception of the first part, which must be first.
256 Since wimlib v1.5.0, \fBwimlib-imagex apply\fR supports applying a WIM from a
257 nonseekable file, such as a pipe, provided that the WIM was captured with
258 \fB--pipable\fR (see \fBwimlib-imagex capture\fR(1)).  To use standard input as
259 the WIM, specify "-" as \fIWIMFILE\fR.  A useful use of this ability is to apply
260 an image from a WIM while streaming it from a server.  For example, to apply the
261 first image from a WIM file available on a HTTP server to an NTFS volume on
262 /dev/sda1, run something like:
263 .PP
264 .RS
265 wget -O - http://myserver/mywim.wim | wimapply - 1 /dev/sda1
266 .RE
267 .PP
268 (The above also used the \fBwimapply\fR abbreviation for \fBwimlib-imagex
269 apply\fR.) Note: WIM files are \fInot\fR pipable by default; you have to
270 explicitly capture them with \fB--pipable\fR, and they are \fInot\fR compatible
271 with Microsoft's software.  See \fBwimlib-imagex capture\fR(1) for more
272 information.
273 .PP
274 It is possible to apply an image from a pipable WIM split into multiple parts;
275 see \fBSPLIT WIMS\fR.
277 .TP 6
278 \fB--check\fR
279 When reading \fIWIMFILE\fR, verify its integrity if the integrity table is
280 present.
281 .TP
282 \fB--ref\fR="\fIGLOB\fR"
283 File glob of additional WIMs or split WIM parts to reference resources from.
284 See \fBSPLIT_WIMS\fR.  This option can be specified multiple times.  Note:
285 \fIGLOB\fR is listed in quotes because it is interpreted by
286 \fBwimlib-imagex\fR and may need to be quoted to protect against shell
287 expansion.
288 .TP
289 \fB--rpfix\fR, \fB--norpfix\fR
290 Set whether to fix targets of absolute symbolic links (reparse points in Windows
291 terminology) or not.  When enabled (\fB--rpfix\fR), extracted absolute symbolic
292 links that are marked in the WIM image as being fixed are assumed to have
293 absolute targets relative to the image root, and therefore \fBwimlib-imagex
294 apply\fR prepends the absolute path to the extraction target directory to their
295 targets.  The intention is that you can apply an image containing absolute
296 symbolic links and still have them be valid after it has been applied to any
297 location.
298 .IP ""
299 The default behavior is \fB--rpfix\fR if any images in \fIWIMFILE\fR have been
300 captured with reparse-point fixups done.  Otherwise, it is \fB--norpfix\fR.
301 .IP ""
302 Reparse point fixups are never done in the NTFS volume extraction mode on
303 UNIX-like systems.
304 .TP
305 \fB--unix-data\fR
306 (UNIX-like systems only)  Restore UNIX owners, groups, modes, and device IDs
307 (major and minor numbers) that were captured by \fBwimlib-imagex capture\fR with
308 the \fB--unix-data\fR option.  Since wimlib v1.7.0, you can backup and restore
309 not only the standard UNIX file permission information, but also character
310 device nodes, block device nodes, named pipes (FIFOs), and UNIX domain sockets.
311 .TP
312 \fB--no-acls\fR
313 Do not restore security descriptors on extracted files and directories.
314 .TP
315 \fB--strict-acls\fR
316 Fail immediately if the full security descriptor of any file or directory cannot
317 be set exactly as specified in the WIM file.  If this option is not specified,
318 when \fBwimlib-imagex\fR on Windows does not have permission to set a
319 security descriptor on an extracted file, it falls back to setting it only
320 partially (e.g. with SACL omitted), and in the worst case omits it entirely.
321 However, this should only be a problem when running \fBwimlib-imagex\fR
322 without Administrator rights.  Also, on UNIX-like systems, this flag can also be
323 combined with \fB--unix-data\fR to cause \fBwimlib-imagex\fR to fail
324 immediately if the UNIX owner, group, or mode on an extracted file cannot be set
325 for any reason.
326 .TP
327 \fB--no-attributes\fR
328 Do not restore Windows file attributes such as readonly, hidden, etc.
329 .TP
330 \fB--include-invalid-names\fR
331 Extract files and directories with invalid names by replacing characters and
332 appending a suffix rather than ignoring them.  Exactly what is considered an
333 "invalid" name is platform-dependent.
334 .IP ""
335 On POSIX-compliant systems, filenames are case-sensitive and may contain any
336 byte except '\\0' and \'/', so on a POSIX-compliant system this option will only
337 have an effect in the unlikely case that the WIM image for some reason has a
338 filename containing one of these characters.
339 .IP ""
340 On Windows, filenames are case-insensitive, cannot include the characters '/',
341 \'\\0', '\\', ':', '*', '?', '"', '<', '>', or '|', and cannot end with a space
342 or period.  Ordinarily, files in WIM images should meet these conditions as
343 well. However, it is not guaranteed, and in particular a WIM image captured with
344 \fBwimlib-imagex\fR on a POSIX-compliant system could contain such files.  By
345 default, invalid names will be ignored, and if there are multiple names
346 differing only in case, one will be chosen to extract arbitrarily; however, with
347 \fB--include-invalid-names\fR, all names will be sanitized and extracted in some
348 form.
349 .TP
350 \fB--wimboot\fR
351 Windows only: Instead of extracting the files themselves, extract "pointer
352 files" back to the WIM archive(s).  This can result in significant space savings.
353 However, it comes at several potential costs, such as not being able to delete
354 the WIM archive(s) and possibly having slower access to files.  See Microsoft's
355 documentation for "WIMBoot" for more information.
356 .IP ""
357 If it exists, the [PrepopulateList] section of the file
358 \\Windows\\System32\\WimBootCompress.ini in the WIM image will be read.  Files
359 matching any of these patterns will be extracted normally, not as WIMBoot
360 "pointer files".  This is helpful for certain files that Windows needs to read
361 early in the boot process.
362 .IP ""
363 This option only works when the program is run as an Administrator and the
364 target volume is NTFS or another filesystem that supports reparse points.
365 .IP ""
366 In addition, this option works best when running on Windows 8.1 Update 1 or
367 later, since that is the first version of Windows that contains the Windows
368 Overlay File System Filter Driver ("WOF").  If the WOF driver is detected,
369 wimlib will create the WIMBoot "pointer files" using documented ioctls provided
370 by WOF.
371 .IP ""
372 Otherwise, if the WOF driver is not detected, wimlib will create the reparse
373 points and edit the file "\\System Volume Information\\WimOverlay.dat" on the
374 target volume manually.  This is potentially subject to problems, since although
375 the code works in certain tested cases, neither of these data formats is
376 actually documented by Microsoft.  Before overwriting this file, wimlib will
377 save the previous version in "\\System Volume
378 Information\\WimOverlay.wimlib_backup", which you potentially could restore if
379 you needed to.
380 .IP ""
381 You actually can still do a \fB--wimboot\fR extraction even if the WIM image is
382 not marked as "WIMBoot-compatible".  This option causes the extracted files to
383 be set as "externally backed" by the WIM file.  Microsoft's driver which
384 implements this "external backing" functionality seemingly does not care whether
385 the image(s) in the WIM are really marked as WIMBoot-compatible.  Therefore, the
386 "WIMBoot-compatible" tag (<WIMBOOT> in the XML data) seems to be a marker for
387 intent only.  In addition, the Microsoft driver can externally back files from
388 WIM files that use XPRESS chunks of size 8192, 16384, and 32768, or LZX chunks
389 of size 32768, in addition to the default XPRESS chunks of size 4096 that are
390 created when \fBwimlib-imagex capture\fR is run with the \fB--wimboot\fR
391 option.
392 .TP
393 \fB--compact\fR=\fIFORMAT\fR
394 Windows-only: compress the extracted files using System Compression, when
395 possible.  This only works on either Windows 10 or later, or on an older Windows
396 to which Microsoft's wofadk.sys driver has been added.  Several different
397 compression formats may be used with System Compression, and one must be
398 specified as \fIFORMAT\fR.  The choices are: xpress4k, xpress8k, xpress16k, and
399 lzx.
400 .IP ""
401 Exclusions are handled in the same way as with the \fB--wimboot\fR option.
402 That is: if it exists, the [PrepopulateList] section of the file
403 \\Windows\\System32\\WimBootCompress.ini in the WIM image will be read, and
404 files matching any of the patterns in this section will not be compressed.
405 In addition, wimlib has a hardcoded list of files for which it knows, for
406 compatibility with the Windows bootloader, to override the requested compression
407 format.
409 \fIData integrity\fR:  WIM files include SHA1 message digests for file data.
410 \fBwimlib-imagex apply\fR calculates the SHA1 message digest of every file
411 it extracts and issues an error if it is not equal to the SHA1 message digest
412 provided in the WIM.  (This default behavior seems equivalent to the
413 \fB/verify\fR option of ImageX.)  Note that this is separate from the integrity
414 table of the WIM, which provides SHA1 message digests over raw chunks of the
415 entire WIM file and is checked separately if the \fB--check\fR option is
416 specified.
417 .PP
418 \fIESD files\fR: wimlib v1.6.0 and later can extract files from version 3584
419 WIMs, which usually contain LZMS-compressed solid resources and may carry the
420 \fI.esd\fR file extension rather than \fI.wim\fR.  However, \fI.esd\fR files
421 downloaded directly by the Windows 8 web downloader have encrypted segments, and
422 wimlib cannot extract such files until they are first decrypted.
423 .PP
424 \fIDirectory traversal attacks\fR:  wimlib validates filenames before extracting
425 them and is not vulnerable to directory traversal attacks.  This is in contrast
426 to Microsoft WIMGAPI/ImageX/DISM which can overwrite arbitrary files on the
427 target drive when extracting a malicious WIM file containing files named
428 \fI..\fR or containing path separators.
430 Extract the first image from the Windows PE image on the Windows (Vista or
431 later) installation media to the directory "boot":
432 .RS
433 .PP
434 wimlib-imagex apply /mnt/windows/sources/boot.wim 1 boot
435 .RE
436 .PP
437 Same as above, but using the \fBwimapply\fR abbreviation:
438 .RS
439 .PP
440 wimapply /media/windows/sources/boot.wim 1 boot
441 .RE
442 .PP
443 On Windows, apply an image of an entire volume, for example from "install.wim"
444 which can be found on the Windows (Vista or later) installation media:
445 .RS
446 .PP
447 wimlib-imagex apply install.wim 1 E:\\
448 .RE
449 .PP
450 Same as above, but running on a UNIX-like system where the corresponding
451 partition is /dev/sda2:
452 .RS
453 .PP
454 wimlib-imagex apply install.wim 1 /dev/sda2
455 .RE
456 .PP
457 Note that before running either of the above commands, an NTFS filesystem may
458 need to be created on the partition, for example with format.exe on Windows or
459 \fBmkntfs\fR(8) (part of NTFS-3g) on UNIX-like systems.  For example, you might
460 run:
461 .RS
462 .PP
463 mkntfs /dev/sda2 && wimapply install.wim 1 /dev/sda2
464 .RE
465 .PP
466 (Of course don't do that if you don't want to destroy all existing data on the
467 partition!)
468 .PP
469 An example of applying a pipable WIM from a pipe can be found in \fBPIPABLE
470 WIMS\fR, and an example of applying a split WIM can be found in \fBSPLIT
471 WIMS\fR.
473 .BR wimlib-imagex (1)
474 .BR wimlib-imagex-capture (1)
475 .BR wimlib-imagex-extract (1)
476 .BR wimlib-imagex-info (1)