204.09
Rating
Microsoft
Microsoft — мировой лидер в области ПО и ИТ-услуг
23 July 2014

Освобождаем свободное место на жестком диске: WIMBoot

Microsoft corporate blog
Сегодня стационарные компьютеры начинают медленно уходить на задний план. Их место прочно занимают ноутбуки, а затем идут и планшетные компьютеры. Сочетание мобильности, высокой производительности и высокой скорости получения информации – все это является несомненным плюсом планшетов. Однако, и своя ложка дегтя у планшетов есть: это малый размер жестких дисков. Если диск 16, 32 и даже 64 ГБ, вовсе не хочется разбрасываться ценным пространством на установочные файлы. С выходом Windows 8.1 Update появилось решение этой проблемы – WIMBoot – новый способ установки ОС, обеспечивающий большее свободное пространство для пользователя.



Обзор технологии


Итак, что же такое WIMBoot (Windows Image Boot)? Это технология, предназначенная для устройств с малым объемом жестких дисков, с помощью которой обеспечивается большее пространство под пользовательские данные и приложения после установки операционной системы. Сразу перечислю ограничения при использовании WIMBoot:
  • WIMBoot может быть использован только на компьютерах с UEFI, запущенных в режиме UEFI. Режим совместимости с BIOS не поддерживается.
  • WIMBoot предназначен для устройств с малым объемом жестких дисков SSD или eMMC.
  • WIMBoot доступен только Windows 8.1 Update и не поддерживается для серверных ОС. WIMBoot доступен для всех архитектур процессоров (amd64, x86, и ARM).

Чем отличается WIMBoot от обычной установки Windows? При обычной установке Windows каждый установочный файл записывается на диск дважды: в сжатой форме на случай восстановления и в разархивированном виде для использования. Таким образом, размер пространства доступного пользователю, уменьшается.
image
Стандартная схема разделов (без WIMBoot)


При установке Windows с использование WIMBoot, файлы записываются на жесткий диск только однажды и в сжатом формате. Далее к разделу Windows применяются файлы-указатели (Pointer files), которые ссылаются на сжатые файлы в разделе образов.

Схема разделов при использовании WIMBoot


В чем преимущества WIMBoot? C технической точки зрения, пользователь не заметит разницы в работе системы. Все файлы пользователя будут видны и доступны без каких-либо преобразований. При этом, место на устройства будет значительно больше. Для примера, при обычной установке Windows 8.1 на 16 ГБ жесткого диска, пользователю будут доступны примерно 7 ГБ. В случае установки системы из образа WIMBoot, свободное пространство увеличится, и пользователю будет доступно уже порядка 12 ГБ.
Теперь попробуем самостоятельно создать образ WIMBoot и развернуть его. Для этого понадобится образ Windows 8.1 Update, Windows Assessment and Deployment Kit для Windows 8.1 и загрузочный диск Windows PE 5.1. Для проверки версии Windows PE в среде wpeinit необходимо запустить редактор реестра (regedit) и проверить следующий регистрационный ключ:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinPE

Если версия WinPE будет 5.1, Windows PE можно не обновлять.
Начинаем с установки Windows ADK Для начала установите следующие компоненты из Windows ADK для Windows 8.1: это Deployment Image and Management и PE Environment (скачать). Создавать образ WIMBoot можно как на компьютере под управлением Windows 8 и Windows 8.1, так и на Windows Server 2012.
После того, как Windows ADK установлен, необходимо запустить программу Deployment Image and Management с правами администратора. Именно с ней нам и предстоит работать. Так же, для удобства, будем использовать следующую систему каталогов:
C:\Images – каталог, в котором хранятся образы
C:\mount – каталог, в который будем монтировать образы
C:\MSU – каталог, в котором сохраним архивы с обновлениями

В каталог C:\Images скопируем файл install.wim из установочного образа Windows 8.1.
Прежде чем детально описывать процесс создания образа WIMBoot, я перечислю основные шаги, которые нужно проделать.
  1. Создание образа WIMBoot
    1. Создание временной копии образа для установки Windows
    2. Отделение образа для восстановления от главного образа Windows
    3. Оптимизация образа для WIMBoot
  2. Создание загрузочного диска WinPE 5.1
  3. Добавление WIMBoot на загрузочный диск
  4. Развертывание WIMBoot
    1. Форматирование жесткого диска по схеме разделов WIMBoot
    2. Добавление Windows и файлов восстановления
    3. Защита папки WIMBoot

Далее подробно рассмотрим каждый из этих шагов. В конце статьи в качестве дополнительных материалов приведены подробные описания процессов обновления образа Windows, образа WinPE, а также инструкция по проверке финального образа WIMBoot.

1. Создание образа WIMBoot


С помощью обновленных файлов Windows, создадим образ WIMBoot.
1.1 Создание временной копии образа для установки Windows

Скопируем обновленный файл install.wim в новый временный файл. Именно этот файл будет использоваться для установки WIMBoot.
Copy C:\Images\install.wim C:\Images\install_temp.wim

Создадим каталог и смонтируем туда образ.
md C:\mount\Windows
Dism /Mount-Image /ImageFile:"C:\Images\install_temp.wim" /Index:1 /MountDir:C:\mount\Windows

1.2 Отделение образа для восстановления от главного образа Windows

Переместим образ Windows RE (winre.wim) из смонтированного каталога. Добавлю пару слов о Windows RE. Windows Recovery Environment это расширяемая платформа для восстановления основанная на Windows PE. В процессе создания образа WIMBoot образ Windows RE рекомендуется отделить от основного образ Windows. Иначе образ потребует еще примерно 200 МБ свободного пространства на жестком диске, которое не будет использовано. Также хочу отметить, что файл winre.wim обычно скрыт, поэтому его необходимо сделать видимым.
attrib –s -h C:\mount\Windows\Windows\System32\Recovery\winre.wim
move C:\mount\Windows\Windows\System32\Recovery\winre.wim C:\images\winre.wim

1.3 Оптимизация образа для WIMBoot

Оптимизируем образ WIMBoot.
Dism /Optimize-Image /Image:C:\mount\Windows /WIMBoot

Размонтируем образ
Dism /Unmount-Image /MountDir:C:\mount\Windows /Commit


2. Создание загрузочного диска WinPE 5.1


Создаем рабочую копию файлов Windows PE. Доступны на выбор две версии x86 или amd64.
copype amd64 C:\WinPE_amd64

Если это необходимо, обновляем WinPE 5.0 до WinPE 5.1. Подробное описание процесса обновления смотрите в приложении.
Следующим этапом создадим загрузочный диск WinPE 5.1. Тут возможно несколько вариантов. В самом простом варианте можно записать файлы на обычную флешку. Размер флеш-карты лучше выбрать 16 ГБ и больше, т.к. понадобится в дальнейшем делать некоторые манипуляции с образом, для которых понадобится дополнительное место. Создать загрузочную флешку можно с помощью команды:
MakeWinPEMedia /UFD C:\WinPE_amd64 F:

В моем случае, WIMBoot тестировался на виртуальной машине Hyper-V. Чтобы сымитировать стандартный процесс установки WIMBoot на планшет с флешки, я буду использовать виртуальный жесткий диск и опишу процесс его создания. Для того, чтобы записать образ Windows PE на VHD, воспользуемся инструментом diskpart и введем следующие команды:
Diskpart 
  create vdisk file=”C:\WinPE.vhdx” maximum=16000
  attach vdisk
  create partition primary
  assign letter=V
  format fs=ntfs quick
exit

Далее запишем файлы WinPE на созданный нами виртуальный диск
MakeWinPEMedia /UFD C:\WinPE_amd64 V:

Снова запустим diskpart и завершим создание диска.
Diskpart
  select vdisk file=”C:\WinPE.vhdx”
  detach vdisk
exit


3. Добавление WIMBoot на загрузочный диск


После того, как создан образ WinPE 5.1 и подготовлен образ WIMBoot, программу Deployment Image and Management можно закрыть. Продолжим работать мы уже без нее. Теперь на диск с WinPE 5.1 необходимо добавить файлы образа WIMBoot (копируем папку Images целиком). Также, я рекомендую добавить на загрузочный диск несколько скриптов для diskpart, которые сэкономят нам время при создании и развертывание образа WIMBoot. Эти скрипты необязательны, их можно добавить позже или не добавлять к образу совсем.
Добавлять WIMBoot на загрузочный диск можно на абсолютно любом компьютере или же виртуальной машине, главное, чтобы они соответствовали ограничениям, которые накладывает технология WIMBoot. Я продолжу работать с виртуальной машиной и создам в Hyper-V виртуальную машину второго поколения (Generation 2), которая поддерживает технологию UEFI. В качестве образа для установки операционной системы я укажу созданный ранее виртуальный диск WinPE.vhdx. Образ WinPE с WIMBoot я создавала на виртуальной машине с размером жесткого диска в 32 ГБ. А устанавливала систему с помощью WIMBoot уже на виртуалку с размером жесткого диска для создаваемой виртуальной машины будет составлять 16 ГБ, чтобы симулировать установку на планшет с маленьким размером жесткого диска. Загружаем виртуальную машину с диска WinPE.vhdx и ждем пока запустится утили wpeinit (может занять несколько минут).
С помощью утилиты diskpart создадим разделы жесткого диска. Можно запустить скрипт, приведенный ниже с помощью команды
diskpart /s C:\Createpartition.txt

Проверить нахождения файла скрипта можно запустив утилиту diskpart и команду list volume. Надо указать путь к диску WinPE.
rem == CreatePartitions.txt ==
select disk 0
clean
convert gpt
rem == Создание раздела под средства восстановления ==
create partition primary size=300
format quick fs=ntfs label=”Windows RE tools”
assign letter=”T”
set id=”de94bba4-06d1-4d40-a16a-bfd50179d6ac”
gpt attributes=0x8000000000000001
rem == Создание системного раздела ==
create partition efi size=100
format quick fs=fat32 label=”System”
assign letter=”S”
rem == Создание раздела MSR ==
create partition msr size=128
rem == Создание раздела Windows ==
create partition primary
shrink minimum=10000
format quick fs=ntfs label=”Windows”
assign letter=”W”
rem == Создание образа для восстановления ==
create partition primary
format quiсk fs=ntfs label=”Recovery image”
assign letter=”R”
set id=”de94bba4-06d1-4d40-a16a-bfd50179d6ac”
gpt attributes=0x8000000000000001
list volume
exit

Небольшой комментарий по поводу команды
set id=”de94bba4-06d1-4d40-a16a-bfd50179d6ac”
gpt attributes=0x8000000000000001

Использование приведенного выше скрипта не позволяет пользователю увидеть разделы восстановления через проводник, однако через Disk Management Tools пользователь может эти разделы удалить. Чтобы предотвратить удаление разделов восстановления и нужно использовать вышеприведенную команду.
После выполнения данного скрипта, вы должны увидеть примерно следующее.

В итоге получились вот такие разделы (MSR – резервный раздел Microsoft и в выводе данной команды не отображается):

Далее выполним установку образа. Сначала создадим директорию на диске R и скопируем туда установочный образ.
md R:\RI
copy C:\Images\install.wim R:\RI\install.wim

Применим образ install.wim на раздел Windows.
dism /Apply-Image /ImageFile:R:\RI\install.wim /Index:1 /ApplyDir:W:\

Скопируем инструменты для восстановления на раздел Windows RE.
md T:\Recovery\WindowsRE
attrib –s –h W:\windows\system32\recovery\winre.wim
copy W:\windows\system32\recovery\winre.wim T:\Recovery\WindowsRE\winre.wim

Скопируем загрузочные файлы с раздела Windows на раздел System. Данный шаг нужен для того, чтобы загружать развернутый образ.
bcdboot W:\Windows

Зарегистрируем раздел Windows и раздел восстановления
W:\Windows\System32\reagentc /setosimage /path R:\RI /target W:\Windows /index 1
W:\Windows\System32\reagentc /setreimage /path T:\Recovery\WindowsRE /target W:\Windows

Перезагрузим компьютер. При новой загрузке дождемся экрана с началом настройки.

При его появлении необходимо нажать комбинацию CTRL+SHIFT+F3, чтобы перезагрузить компьютер в режиме аудита. После этого компьютер запустит систему под учетной записью локального администратора. В среде Windows 8.1 нужно будет запустить командную строку с правами Администратора и очистить образ. Очистка образа позволит освободить дополнительное место на диске.
dism /Cleanup-Image /Online /StartComponentCleanup

После этого с помощью команды Sysprep подготовим компьютер к использованию и завершим работу.
C:\Windows\System32\Sysprep\sysprep /generalize /shutdown /oobe

Запустим компьютер снова в режиме WinPE. Рекомендую запустить утилиту diskpart и команду list volume. У вас должны быть назначены буквы на диск с Windows и на диск WinPE. Все остальные разделы скрыты.

Создадим каталог для временных файлов C:\Recycler\Scratch и перезахватим образ, но уже с опцией WIMBoot.
DISM /Capture-Image /WIMBoot /ImageFile:"D:\Images\install_wimboot.wim" /CaptureDir:C: /Name:"WIMBoot Enterprise_x64 with 8.1 Updates" /ScratchDir:C:\Recycler\Scratch

После того, как выполнение команды завершится, мы можем выключить компьютер. Теперь на нашем виртуальном диске или на флешке есть установочный образ WIMBoot.

4. Развертывание WIMBoot


Теперь осталось только протестировать образ WIMBoot и убедиться в том, что размер файлов, занимаемых Windows уменьшится. Как уже и говорилось ранее, для установки будет использована виртуальная машина второго поколения, поддерживающая технологию UEFI с объемом жесткого диска в 16 ГБ. В качестве установочного диска используем виртуальный диск WinPE.vhdx и запустим виртуальную машину.
4.1 Форматирование жесткого диска по схеме разделов WIMBoot

Дождемся запуска среды wpeinit, запустим утилиту diskpart и команду list volume. Если на раздел WinPE назначена буква С, рекомендую переназначить ее с помощью следующих команд.
select volume=0
assign letter=”D”
exit

Теперь с помощью утилиты diskpart и приведенного ниже скрипта создадим разделы для установки. Скрипт запустим командой
diskpart /s D:\WimCreatePartition.txt


rem == WimCreatePartition.txt ==
select disk 0
clean
convert gpt
rem == Создание системного раздела ==
create partition efi size=100
format quick fs=fat32 label=”System”
rem == Создание раздела MSR ==
create partition msr size=128
rem == Создание раздела Windows ==
create partition primary
shrink minimum=5000
format quick fs=ntfs label=”Windows”
assign letter=”С”
rem == Создание раздела для образов ==
create partition primary
format quick fs=ntfs label=”Images”
assign letter=”M”
set id=”de94bba4-06d1-4d40-a16a-bfd50179d6ac”
gpt attributes=0x8000000000000001
list volume
exit

В итоге должны получить вот такой результат:

4.2 Добавление Windows и файлов восстановления

Создадим папку “Windows Images” в разделе Images. Название папки обязательно должно быть “Windows Images”.
md "M:\ Windows Images \"

Скопируем образ Windows с диска WinPE в папку Windows Images и переименуем его в install.wim, если это необходимо.
copy D:\Images\install_update1.wim "M:\Windows Images\install.wim"

Применим образ Windows к разделу Windows с помощью команды /WIMBoot. Перед этим создадим каталог для временных файлов, чтобы избежать проблем, связанных с короткими именами файлов.
md C:\Recycler\Scratch
DISM /Apply-Image /ImageFile:"M:\Windows Images\install.wim" /ApplyDir:C: /Index:1 /WIMBoot /ScratchDir:C:\Recycler\Scratch

Создадим файлы загрузки и настроим их работу в раздел Windows.
C:\Windows\System32\bcdboot C:\Windows

Скопируем образ среды восстановления Windows в папку Images
md M:\Recovery\WindowsRE
echo f | xcopy D:\Images\winre.wim M:\Recovery\WindowsRE\winre.wim /h

Зарегистрируем раздел среды восстановления Windows.
C:\Windows\System32\Reagentc /SetREImage /Path M:\Recovery\WindowsRE /Target C:\Windows

4.3 Защита папки WIMBoot

Осталось защитить разделы образов Windows и проверить полученные результаты. Для установки атрибута «Только для чтения» в среде wpeinit выполним следующие команды
icacls "M:\Windows Images" /inheritance:r /T
icacls "M:\Windows Images" /grant:r SYSTEM:(R) /T
icacls "M:\Windows Images" /grant:r *S-1-5-32-544:(R) /T

Теперь осталось только запустить компьютер и увидеть приятную картинку:

Что же произошло? Теперь свободного диска на разделе Windows стало больше. Это произошло за счет того, что в разделе Windows теперь находятся файлы-указатели, которые ссылаются на образы Windows. При этом пользователь не ощущает разницы в работе: все его файлы работают нормально.

В завершение, хочу дополнительно отметить, что если есть необходимость добавить к образу WIMBoot какие-либо дополнительные настройки, это можно сделать до того, как папки WIMBoot были защищены. Дополнительную информацию по WIMBoot можно почитать на TechNet.

Надеюсь, информация будет полезна!

Приложение


Установка обновления: WinPE 5.0 --> WinPE 5.1
Перейдем к созданию WinPE и его обновления. В принципе, можете сначала просто создать WinPE, попробовать загрузить с его помощью целевой компьютер и проверить его версию. Однако здесь я приведу весь процесс создания образа.
Предварительно должна быть создана рабочая копия файлов Windows PE.
Смонтируем образ Windows PE
Dism /Mount-Image /ImageFile:"C:\WinPE_amd64\media\sources\boot.wim" /index:1 /MountDir:"C:\WinPE_amd64\mount"

Добавляем пакеты обновлений к образу Windows PE. Набор пакетов обновлений тот же, что и был использован для обновления образа Windows 8.1 можно скачать здесь. Важно при загрузке пакета KB2919355 скачать также пакеты KB2919355, KB2932046, KB2934018, KB2937592, KB2938439, и KB2959977. Пакеты нужно устанавливать по порядку и по отдельности.
Dism /Add-Package /PackagePath:C:\MSU\Windows8.1-<Package>-<arch>.msu /Image:C:\mount\Windows /LogPath:AddPackage.log

Оптимизируем образ
Dism /Image:С:\WinPE_amd64\mount /Cleanup-Image /StartComponentCleanup /ResetBase

Размонтируем образ Windows PE
Dism /Unmount-Image /MountDir:"C:\WinPE_amd64\mount" /commit

Экспортируем и конвертируем образ Windows PE в новый wim-файл
Dism /Export-Image /SourceImageFile:C:\WinPE_amd64\media\sources\boot.wim /SourceIndex:1 /DestinationImageFile:C:\WinPE_amd64\media\sources\boot2.wim

Заменяем файл boot.wim новым файлом boot2.wim
del C:\WinPE_amd64\media\sources\boot.wim
rename C:\WinPE_amd64\media\sources\boot2.wim boot.wim


Проверка образа WIMBoot
А теперь я приведу команды для проверки образа WIMBoot, которые необходимо выполнить в среде wpeinit.
  • Проверяем наличие разделов System, MSR, Windows и Images

diskpart
  select disk 0
  select partition 3
  assign letter C
  select partition 4
  assign letter M
  list partition
exit

Ожидаемый результат:

  • Проверка атрибутов раздела Images

diskpart
  select disk 0
  select partition 4
  detail partition
exit

Ожидаемый результат:

  • Проверка файлов в разделе Images и файлов восстановления

dir "M:\Windows Images"
dir M:\Recovery\WindowsRE

Ожидаемый результат:


  • В среде восстановления Windows должно быть правильно указано расположение допустимого образа восстановления.

C:\Windows\System32\Reagentc /Info /Target C:\Windows

Ожидаемый результат:



Установка обновлений на образ Windows 8.1
Смонтируем образ Windows
md C:\mount\Windows
Dism /Mount-Image /ImageFile:"C:\Images\install.wim" /Index:1 /MountDir:C:\mount\Windows

Устанавливаем обновления KB2919442 и KB2919355. Данные пакеты доступны для различных архитектур процессора: x86, x64 и arm. Скачать пакеты можно здесь. Пакеты обновлений должны быть установлены по порядку и по отдельности.
Dism /Add-Package /PackagePath:C:\MSU\Windows8.1-<Package>-<arch>.msu /Image:C:\mount\Windows /LogPath:AddPackage.log

Здесь и далее — имя пакета, а — архитектура процессора.
Монтируем образ Windows RE
md C:\mount\WinRE
Dism /Mount-Image /ImageFile:"C:\mount\Windows\Windows\System32\Recovery\winre.wim" /Index:1 /MountDir:C:\mount\WinRE

Обновляем образ WinRE с помощью тех же пакетов, которые были использованы при обновлении образа Windows
Dism /Add-Package /PackagePath:C:\MSU\Windows8.1-<Package>-<arch>.msu /Image:C:\mount\WinRE /LogPath:AddPackage.log

Дополнительно выполним очистку образа, для того, чтобы удалить некоторые элементы и уменьшить конечный размер образа. Этот шаг необязателен, но его можно выполнить только на этом этапе: после запуска очистить образ будет невозможно.
Dism /Cleanup-Image /Image:C:\mount\WinRE /StartComponentCleanup /ResetBase

Теперь можно размонтировать образ Windows RE
Dism /Unmount-Image /MountDir:C:\mount\WinRE /Commit

Для того, чтобы увидеть изменения в размере файла, образ нужно экспортировать.
Dism /Export-Image /SourceImageFile:C:\mount\Windows\Windows\System32\Recovery\winre.wim /SourceIndex:1 /DestinationImageFile:C:\Images\winre_updated.wim

После экспорта, необходимо заменить winre.wim новой версией.
attrib –s -h C:\mount\Windows\Windows\System32\Recovery\winre.wim
Del C:\mount\Windows\Windows\System32\Recovery\winre.wim
copy C:\Images\winre_updated.wim C:\mount\Windows\Windows\System32\Recovery\winre.wim

После того, как обновления установлены, можно размонтировать образ Windows
Dism /Unmount-Image /MountDir:C:\mount\Windows /Commit

Tags:wimbootwindows 8.1windows pewindows server 2012 r2hyper-vdiskpartdismdeployment tools
Hubs: Microsoft corporate blog
+14
65.7k 361
Comments 19
Popular right now
Top of the last 24 hours