Поделиться через


Материалы о рабочей средеРуководство квалифицированного пользователя по WIM и ImageX

Уэс Миллер (Wes Miller)

Этот выпуск рубрики основан на предварительной версии пакета автоматической установки Windows (Windows Automated Installation Kit – WAIK) и Windows Server 2008. Любая информация, содержащаяся в нем, может быть изменена.

В нескольких из числа предыдущих выпусков я рассказывал о ImageX и формате Windows Imaging (WIM). На конференции Tech•Ed несколько месяцев назад мне довелось услышать некоторые комментарии и вопросы специалистов по ИТ, начинающих использовать службы развертывания Windows (WDS), ImageX и пакет автоматической установки Windows (WAIK), и я осознал

необходимость более подробного их освещения. Так что нынешней выпуск моей рубрики я решил посвятить ImageX, формату WIM и тому, как их можно использовать с наибольшей пользой. Вместе ImageX и WIM позволяют легко развертывать не только Windows Vista® и Windows Server® 2008, но также Windows® XP, Windows Server 2003, и Windows 2000.

Изменения в WAIK

Предстоящий выпуск Windows Server 2008 может заставить задуматься о том, что он означает для WAIK. Корпорация Майкрософт планирует выпустить обновленную версию WAIK в тех же временных рамках, что и Windows Server 2008. Формат WIM не претерпел существенных изменений (средство ImageX и формат остались прежними); служба WDS для Windows Server 2003 также не изменилась. Вопреки слухам, многоадресные запросы не будут доступны для служб развертывания Windows Server 2003 – только серверы служб развертывания, работающие под Windows Server 2008, получат новую возможность многоадресности для WDS.

Windows PE 2.0 и программа установки Windows будут пересмотрены в целях поддержки следующих возможностей:

  • Развертывание Windows Server 2008 и Windows Vista.
  • Многоадресное развертывание через WDS с сервера развертывания под управлением Windows Server 2008.
  • Развертывание версий x64 наравне с версиями x86 систем Windows Vista и Windows Server 2008 с версии x86 Windows PE.

В первую очередь это значит, что Windows PE 2.0 сможет развертывать Windows Server 2008 так же легко, как и Windows Vista, – те же средства и процедуры работают одинаково хорошо для обеих. Во-вторых, появится возможность многоадресного развертывания через WDS после перевода серверов развертывания на Windows Server 2008. Наконец, это значит, что можно будет использовать диск x86 Windows PE 2.0 для развертывания с него образа как x86, так и x64 версий Windows.

Я упомянул последний момент на конференции Tech•Ed, когда рассказывал о версии x64 Windows. Увы, в блогах и техническом сообществе Windows возникла некоторая путаница по этому вопросу. Это не значит, что Майкрософт будет распространять x64 Windows и x86 Windows на каждом диске DVD с Windows Vista или Windows Server 2008. Это также не значит, что образы Windows x64 и Windows x86 следует совмещать в единый файл WIM (хотя это возможно). Это не дает никакого выигрыша в объеме за счет хранения одного экземпляра, хотя и позволяет передавать WIM как один файл.

Это значит, что корпоративные клиенты и производители оборудования, годами разрабатывавшие процессы развертывания на основе x86 (а также собственные сценарии и средства), теперь смогут развертывать как x86, так и x64 версии Windows из WIM, используя 32-разрядную программу установки – запрос, выдвигавшийся корпоративными клиентами, начиная с первого появления x64 версий Windows в 2005 году.

Повседневный ImageX

Использование /mount, /mountrw и /delete

Вот несколько важных советов по использованию ключей /mount, /mountrw и /delete в программе ImageX:

  • Подключите том с помощью /mountrw, если собираетесь его править.
  • Файл WIM следует подключать к пустому каталогу, чтобы не возникло путаницы с хранящимися там файлами, а ImageX не выдавал бы ненужных предупреждений.
  • Не забывайте применить /unmount /commit к образу в режиме чтения и записи, если хотите сохранить сделанные изменения. Слишком часто я забывал зафиксировать свои изменения (и, естественно, терял их).
  • Удаление файлов с помощью /mountrw и удаление образов тома с помощью /delete не освобождает пространства – на самом деле, может даже занять его еще больше. Подробности приведены в этой рубрике в разделе, посвященном /export.
  • Одновременно для чтения и записи может быть подключен только один WIM-файл. Двое пользователей не могут править один и тот же WIM-файл одновременно, также нельзя править два образа тома одновременно.
  • Даже в режиме «только чтение» (/mount) следует ограничивать число одновременно установленных образов тома, поскольку драйвер зависит от размера невыгружаемого пула памяти Windows, доступного для каждого установленного образа. Это приводит к ограничению, которое может варьироваться в зависимости от системы (или ее архитектуры). Я не рекомендовал бы использовать более пяти образов одновременно.
  • Проведение значительных правок с помощью /mountrw почти не занимает времени собственно при внесении изменений, но может привести к уходу значительного объема времени на /commit, поскольку ему необходимо сжать и сохранить все новые данные файлов.
  • Используйте /delete и /mountrw осторожно – после фиксации изменений их невозможно отменить.
  • Запуск /delete невозможен, если в WIM-файле имеется только один образ тома (вместо этого удалите весь WIM-файл или добавьте новый образ тома).
  • Чтобы быстро получить дерево каталогов содержимого образа тома, используйте вместо /mount следующую команду:
ImageX /dir <path_to_wim_file> <image index>
  • При одновременной правке двух WIM-файлов старайтесь не применять /unmount к ним одновременно; спланируйте последовательность событий mount/unmount так, чтобы они не блокировали одно другое.

ImageX был специально разработан для отражения способов, которыми разработчики оборудования и корпоративные клиенты, по их словам, используют подобные средства. На рис. 1 приведен пример соответствующей процедуры.

Рис. 1 Использование ImageX

Рис. 1** Использование ImageX **

Стоит особо отметить, что Этап 5 крайне важен – истина заключается в том, что образ постоянно меняется. Таким образом, запись и изменение образа должны быть максимально быстрыми и простыми.

С этой целью можно добавить еще один образ (при помощи ключа /append) к уже созданному. Первоначально группа разработчиков полагала, что пользователи будут добавлять дополнительный SKU (версию Windows) к предыдущему образу, но чем больше я работал с корпоративными клиентами на ранних этапах разработки Windows Vista, тем больше слышал о ее использовании для быстрого развертывания X, а затем быстрой повторной записи X1, где делалось одно из изменений на этапе 2. Это делало возможным быструю повторную запись образа, поскольку изменения вносились лишь в ограниченное число файлов.

Когда разработчики поняли это, они осознали, что сохранение исходного образа имеет смысл не во всех ситуациях. Дальше в рубрике я расскажу о ключе /export, добавленном специально для этой ситуации, а также о том, что следует дальше.

Изменение постоянно

На раннем этапе группа разработчиков решила, что файлы WIM должны быть редактируемыми. Поскольку еще раньше они решили, что посекторный формат образов не будет работать (объяснения приведены в выпуске рубрики за декабрь 2006 г. на technetmagazine.com/issues/2006/12/DesktopFiles), им нужно было предоставить решение, которое легко подключало бы файлы непосредственно как часть файловой системы Windows и вносило бы изменения в подключенные образы томов в WIM-файле. Это означало некоторое увеличение числа того, что я называю «движущимися частями». Подключение образа на основе секторов реализуется сравнительно просто, но подключение закрытого архивного формата вроде WIM требовала очень специального набора средств.

К формату должен был существовать доступ из командной строки – что исключало использование обычных расширений оболочки Windows, используемых для обработки файлов ZIP и CAB встроенными средствами. Увы, эти обработчики дают проводнику Windows лишь абстрактный доступ к объекту.

Как следствие этого, решение WIM включает в себя драйвер (wimfltr.sys) и программу ImageX, служащую методом действительной загрузки драйвера и предоставляющую интерфейс для подключения файлов WIM. Драйвер предназначен для добавления абстракции в файловую систему Windows, как показано на рис. 2. Запуск подобной команды означает указание программе ImageX загрузить драйвер wimfltr.sys и заставить драйвер наложить первый образ тома (номер 1 в командах, используемых здесь) на точку подключения в пустом каталоге, как показано ниже:

Рис. 2 Установка образа тома WIM

Рис. 2** Установка образа тома WIM **(Щелкните изображение, чтобы увеличить его)

ImageX /mount iso\sources\boot.wim 1 mount 
ImageX /mountrw iso\sources\boot.wim 1 mount 

Это поведение по умолчанию в WAIK. Таким образом, при исследовании или выводе содержимого каталога для каталога подключения корень образа диска 1 появится в boot.wim. Само собой, использование /mountrw или /mount будет определять, предназначен ли каталог только для чтения или для чтения и записи (подробности приведены на боковой панели "Использование /mount, /mountrw и /delete").

Возможность /mountrw была изначально разработана для легкого добавления драйверов или иных копируемых в составе каталогов файлов и содержимого, установки файлов ответа либо правки автономного реестра установленного WIM-файла для изменения его по мере надобности (см. рис. 3). Она не предназначалась для добавления или удаления целых приложений (поскольку установщик Windows не может устанавливать приложения при работе в автономном режиме).

Рис. 3 Правка установленного WIM-файла

Рис. 3** Правка установленного WIM-файла **(Щелкните изображение, чтобы увеличить его)

Очень важно понять, что при внесении изменений в установленный WIM-файл сам он не изменяется напрямую (по крайней мере, изменяется не сразу); вместо этого изменяется кэш WIM-файла, который на самом деле является слиянием наложения и сделанных пользователем изменений. Как я отметил на боковой полосе, мне ранее случалось наступать на эти грабли. Не забывайте использовать ключи /unmount и /commit по окончании работы, поскольку лишь в этом случае внесенные изменения будут зафиксированы в WIM-файле. В противном случае они будут целиком утеряны.

Когда изменения сохраняются путем их фиксации, вы указываете драйверу изменить сам WIM-файл. Драйвер добавляет дополнительные данные файлов. (Заметьте, что если было сделано много изменений, /commit может занять значительный объем времени, поскольку данные реально добавляются в WIM только в этот момент.)

Также, в отличие от посекторного формата образов, могут измениться один или несколько файлов в образе тома. Как результат, они больше не будут единственными экземплярами (если этот же файл уже не был однажды сохранен), и исходные данные файлов окажутся утеряны. WIM, в отличие от томов NTFS или FAT, не помечает файл как удаленный – он больше не ссылается на него, но не стирает его. Как следствие, при частых правках с помощью /mountrw или добавки многочисленных образов через /append, а также использования /delete для удаления образа тома WIM-файл забывает ссылки на файловые данные, но не сбрасывает эти данные окончательно.

Поэтому группа разработчиков и создала ключ /export, также известный как своего рода «дефрагментатор WIM».

Экспортирование

Важные замечания насчет /export

Когда /export используется для создания нового WIM-файла, можно указать нужный тип сжатия данных вместо использования текущего типа по умолчанию. При изменении текущего типа сжатия экспортирование может занять значительное время.

При использовании в роли /append (путем добавления образа тома к существующему файлу WIM) /export не позволяет изменять атрибут /compression WIM-файла.

При экспорте полностью нового образа тома Windows PE 2.0 можно указать ключ /boot.

Ключ /export был создан в качестве ответа на ранее упоминавшиеся ситуации и на ряд других, более экзотических ситуаций, обнаруженных разработчиками. По сути, /export позволяет взять существующий образ тома (или два, или три) и экспортировать его. Это означает быстрое взятие WIM-файла X и X1 из примера выше и либо создание нового WIM только с X, либо только с X1, или с X1 и Y1, путем экспорта из еще одного файла WIM.

Вообразите ситуацию, в которой пользователь вносит изменения в X и добавляет изменения через /append как X1. Затем он хочет удалить X, поскольку уже заменил его новым образом на этот квартал. Для этого можно использовать ключ /delete, и в таком случае ImageX забудет об образе X. Но чтобы освободить пространство, устранив всю информацию, относящуюся к X, надо запустить следующую команду:

ImageX /export source.wim 2 destination.wim "New image for Q4CY07"

В результате второй образ тома экспортируется как новый файл WIM с новым именем, что полностью устраняет всю более раннюю информацию из образа тома 1. Возможен также экспорт из составных образов WIM, если заново собрать их как один WIM-файл (об этом будет сказано ниже). Составные образы нельзя править с помощью /mountrw – одна из причин, по которой их стоит собирать заново. Важно отметить, что в ImageX нет команды /import, поскольку с помощью /export можно как создавать новые WIM-файлы, так и дополнять существующие. Дополнительные сведения приведены на боковой панели «Важные замечания насчет /export».

Это также очень важно при использовании peimg /prep: хотя эта команда подготавливает образ Windows PE к использованию, она не вычищает ничего в WIM-файле. В идеале, пользователю следует подготовить образ и экспортировать его в новый файл boot.wim в качестве части процесса выпуска Windows PE. Отметьте, что процесс загрузки ищет WIM-файл только в \sources\boot.wim, так что удостоверьтесь, что он правильно назван и помечен как загрузочный образ тома.

Я уже упоминал, что пользователь, вероятно, пожелает оптимизировать свои образы, запуская /export для них, когда собирается избавиться от старых образов томов или слить вместе несколько из них. Это также разумно в случае, если были сделаны многочисленные правки через /mountrw или /delete. В ином случае, WIM-файл будет продолжать расти со временем (загадочным образом, который нельзя обнаружить). При регулярном использовании /mountrw или /delete подумайте о добавлении /export в рабочий процесс, чтобы гарантировать оптимизацию образов.

Составные образы

Другой проблемой, всплывшей на раннем этапе, была вероятная необходимость для WIM-файлов размещаться на нескольких блестящих носителях. Мы предвидели, что Windows будет поставляться более чем на одном компакт-диске (и, потенциально, диске DVD, как и случилось) и, как следствие, встроили поддержку составных образов в WIM и ImageX.

Как я уже упоминал, составные образы, созданные при помощи /split, по сути предназначены только для чтения – для нового составного образа нельзя использовать /capture, его нельзя устанавливать при помощи ImageX и его нельзя добавить к чему-то посредством /append. Как результат, я рекомендовал бы делить WIM-файлы только после завершения стандартного рабочего процесса и достижения готовности к выпуску, то есть выполнять все правки на нормальном файле WIM и думать над разделением как частью процесса выпуска для сценария развертывания.

Когда дело доходит до применения образа, составные образы могут быть проблемными. Я бы рекомендовал использовать ImageX вместо обычной установки при работе с составными образами. Я бы также рекомендовал либо применять образы через сеть (для оптимизации производительности без создания образа диска, с которого идет применение), либо копировать их прямо на жесткий диск и затем применять (отметив, что это привяжет к диску, поскольку диск ведет чтение и запись на себя во время применения).

В поисках способа проверки

При использовании ImageX перемещается много данных – много очень важных данных. В этом коду на Tech•Ed я часто слышал вопрос, «Как я могу гарантировать верность своих образов?» Ну, не то чтобы эта задача была совсем легкой, но и очень сложной ее назвать нельзя.

В первую очередь следует понять, что WIM, как и большинство архивных форматов, подвержен порче данных. Чаще всего повреждения и сбои возникают при передаче WIM-файла по сети. Уже в начале разработки Windows Vista мы видели конкретные проблемы с конкретными сетевыми картами – если они теряли пакеты, WIM-файл оказывался поврежденным, и не всегда это было легко определить. Эта ситуация была отражением той, что случилась годы назад, когда файл driver.cab вырос в размере – начали происходить подобные же случайные повреждения. Как правило, при получении сообщений о поврежденных образах или сбое установки стоит проверить, какие типы сетевых адаптеров используются на системах, выдающих сообщения. Это имеет место как при использовании ImageX самого по себе, так и при работе с WDS.

Как можно увидеть, цел образ или нет? Во-первых, можно использовать ключ /check. Он позволяет избавиться от лишних проверок целостности WIM-файл и проверить до применения, что данный WIM не был поврежден. Не забудьте запустить /check также и во время применения, что подтвердит целостность образа (хотя и займет больше времени).

Вдобавок, если возникли проблемы, или просто для гарантии, можно пропустить файлы через служебную программу контрольного суммирования перед записью образа и после применения. Можно провести проверку и после записи, подключив образ и проведя пересчет контрольной суммы – неплохой способ удостовериться, что образ был создан верно.

Желательно удостоверяться, что образы записываются верно, с самого начала. Ключ /check и сам формат созданы как контрольные точки, а не как средства восстановления для починки неверно записанных образов.

Загрузка и флаги

Я уже упоминал, что для записи образа тома WIM в Windows PE и его загрузки можно использовать ключ /boot. Можно представить это просто как загрузочный сектор на конкретном образе тома. В одном WIM-файле может существовать один образ тома, и верно это лишь для Windows PE 2.0. Обратите внимание, что загрузка с WIM в Windows PE 1.x просто невозможна.

В образах тома Windows можно заметить ссылки на флаги. Флаги используются только программой установки Windows. Флаг 2 на образе тома значит, что этот образ тома содержит Windows PE и программу установки. Флаг 9 означает, что он содержит только Windows PE. Любой другой флаг (или отсутствие флага) означает, что образ не будет и не может быть использован программой установки. Следует заметить, что флаги можно установить на образ после его создания, используя ImageX для внесения изменений. Я рекомендую использовать WAIK (и, как вариант, пакет Business Desktop Deployment Solution Accelerator) для создания загрузочного образа Windows PE в формате WIM, так как при этом флаги будут правильно установлены с самого начала.

Примечание для пользователей HTA

Недавно мне пришлось слышать несколько сообщений о проблемах с запуском файлов HTA на Windows PE 2.0. Увы, похоже, существуют проблемы с HTA-файлами, содержащими любые существенные сценарии. На рис. 4 взгляните на снимок экрана с созданным мною примером файла и заметьте возвращенную ошибку сценария (без информации). Об этой проблеме сообщили несколько клиентов, и я столкнулся с ней сам.

Рис. 4 Ошибка со сценариями HTA

Рис. 4** Ошибка со сценариями HTA **(Щелкните изображение, чтобы увеличить его)

К счастью, ее легко решить. При подготовке образа добавьте не только поддержку HTA, но и поддержку XML. То, чего не достает компоненту HTA, похоже, включено в модуль надстройки XML, что решает проблему.

Я хотел бы поблагодарить Брюса Грина (Bruce Green), разработчика ImageX, а также Минсяо Жу (Minxiao Zhou) и Раджа Ганджикунта (Raja Ganjikunta) из группы тестирования развертывания Windows за их помощь в создании этого выпуска.

Уэс Миллер (Wes Miller) — руководитель по разработке в компании Pluck (www.pluck.com), г. Остин, штат Техас. Ранее он работал в компании Winternals Software в том же городе, а также в должности руководителя программы и руководителя по продукту Windows в корпорации Майкрософт. Связаться с Уэсом можно по адресу technet@getwired.com.

© 2008 Корпорация Майкрософт и компания CMP Media, LLC. Все права защищены; полное или частичное воспроизведение без разрешения запрещено.