Для внесения небольших изменений в существующий образ WIM можно значительно уменьшить сетевой трафик, используя предыдущий файл WIM в качестве базового WIM-файла и файл, содержащий только «изменения», в качестве основного WIM-файла.
Wimlib - это библиотека с открытым исходным кодом для игры с WIM-файлами, и в ней есть замечательная функция, позволяющая создавать эти WIM-файлы «только для изменений». Вы просто делаете:
.\wimlib-imagex.exe capture <folder_to_capture> <output.wim> --delta-from=<base.wim>
В результате получился крошечный файл output.wim, содержащий только метаданные и файлы, отличные от base.wim. Затем вы можете применить изображение даже с помощью инструментов Microsoft:
Expand-WindowsImage -ImagePath <output.wim> -Index 1 -ApplyPath `
<output_folder> -SplitImageFilePattern <base.wim>
Два вопроса:
Предлагают ли сторонние инструменты Microsoft imagex / DIS какие-либо способы получить ту же функциональность (просто чтобы я мог избежать добавления другой зависимости, если это возможно)? Они предлагают разделить существующий wim на части, но я не вижу ничего, что помогло бы создать wim типа «дельта» из папки / wim и базового wim.
Если нет, то есть ли какие-либо проблемы, о которых мне следует знать при использовании wimlib? Мой вариант использования - захват и применение изображений с помощью Microsoft Deployment Toolkit. Я вижу, что wimlib еще не поддерживает расширенные атрибуты NTFS, но, насколько я могу судить, MDT не захватывает их.
Согласно документации в Microsoft Docs, нет доступных вариантов дельта-захвата: https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/deployment-image-servicing-and-management--dism--command-line-options
Dism /Capture-Image /ImageFile:<path_to_image_file> /CaptureDir:<source_directory> /Name:<image_name> [/Description:<image_description>]
[/ConfigFile:<configuration_file.ini>] {[/Compress:{max|fast|none}] [/Bootable] | [/WIMBoot]} [/CheckIntegrity] [/Verify] [/NoRpFix] [/EA]
Parameter Description
/ConfigFile Specifies the location of a configuration file that lists exclusions for image capture and compress commands. For more information, see DISM Configuration List and WimScript.ini Files.
/Compress Specifies the type of compression used for the initial capture operation. The maximum option provides the best compression, but takes more time to capture the image. The fast option provides faster image compression, but the resulting files are larger than those compressed by using the maximum option. This is also the default compression type that is used if you do not specify the argument. The none option does not compress the captured image at all.
/Bootable Marks a volume image as being a bootable image. This argument is available only for WinPE images. Only one volume image can be marked as bootable in a .wim file.
/CheckIntegrity Detects and tracks .wim file corruption when used with capture, unmount, export, and commit operations. /CheckIntegrity stops the operation if DISM detects that the .wim file is corrupted when used with apply and mount operations.
/Verify Checks for errors and file duplication.
/NoRpFix Disables the reparse point tag fix. A reparse point is a file that contains a link to another file on the file system. If /NoRpFix is not specified, reparse points that resolve to paths outside of the value specified by /ImageFile will not be captured.
/WIMBoot Use /WIMBoot to append the image with Windows image file boot (WIMBoot) configuration. This only applies to Windows 8.1 images that have been captured or exported as a WIMBoot file. This feature isn't supported in Windows 10.
/EA New in Windows 10, version 1607. Captures extended attributes. The switch must be explicitly specified to capture extended attributes. DISM will capture extended attribute bits if they are set in the components to be captured in the WIM image. If the bits are not set, DISM won't set them. Only the inbox components of CAB packages and drivers will have these extended attribute bits, not the AppX package components or Win32 application components. Extended attributes with prefix “$Kernel.” in name will be skipped because only user mode extended attributes are captured. If you use DISM in Windows 10, version 1607 to capture extended attributes and use an earlier version of DISM to apply the image, the operation will succeed but the extended attributes will not be set to the applied image.
По моему опыту, проблем с совместимостью нет.
Иногда я использую WIMLib, когда использую Windows PE SE.
Когда я создаю загрузочную среду live CD для Windows, это не вызывает никаких проблем.
BCD может правильно загружать образы.
Теперь они используют только стандартные параметры WIM, я не пробовал делать какие-либо дополнительные действия с файлами WIM.