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

Сегодня стационарные компьютеры начинают медленно уходить на задний план. Их место прочно занимают ноутбуки, а затем идут и планшетные компьютеры. Сочетание мобильности, высокой производительности и высокой скорости получения информации – все это является несомненным плюсом планшетов. Однако, и своя ложка дегтя у планшетов есть: это малый размер жестких дисков. Если диск 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 каждый установочный файл записывается на диск дважды: в сжатой форме на случай восстановления и в разархивированном виде для использования. Таким образом, размер пространства доступного пользователю, уменьшается.

Стандартная схема разделов (без 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
    • Создание временной копии образа для установки Windows
    • Отделение образа для восстановления от главного образа Windows
    • Оптимизация образа для WIMBoot
  2. Создание загрузочного диска WinPE 5.1
  3. Добавление WIMBoot на загрузочный диск
  4. Развертывание WIMBoot
    • Форматирование жесткого диска по схеме разделов WIMBoot
    • Добавление Windows и файлов восстановления
    • Защита папки 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\WindowsDism /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.wimmove 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 и введем следующие команды:

Diskpartcreate vdisk file=”C:\WinPE.vhdx” maximum=16000attach vdiskcreate partition primaryassign letter=Vformat fs=ntfs quickexit

Далее запишем файлы WinPE на созданный нами виртуальный диск

MakeWinPEMedia /UFD C:\WinPE_amd64 V:

Снова запустим diskpart и завершим создание диска.

Diskpartselect vdisk file=”C:\WinPE.vhdx”detach vdiskexit

 

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 0cleanconvert gptrem == Создание раздела под средства восстановления ==create partition primary size=300format quick fs=ntfs label=”Windows RE tools”assign letter=”T”set id=”de94bba4-06d1-4d40-a16a-bfd50179d6ac”gpt attributes=0x8000000000000001rem == Создание системного раздела ==create partition efi size=100format quick fs=fat32 label=”System”assign letter=”S”rem == Создание раздела MSR ==create partition msr size=128rem == Создание раздела Windows ==create partition primaryshrink minimum=10000format quick fs=ntfs label=”Windows”assign letter=”W”rem == Создание образа для восстановления ==create partition primaryformat quiсk fs=ntfs label=”Recovery image”assign letter=”R”set id=”de94bba4-06d1-4d40-a16a-bfd50179d6ac”gpt attributes=0x8000000000000001list volumeexit


Небольшой комментарий по поводу команды

set id=”de94bba4-06d1-4d40-a16a-bfd50179d6ac”gpt attributes=0x8000000000000001


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

После выполнения данного скрипта, вы должны увидеть примерно следующее.

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

Далее выполним установку образа. Сначала создадим директорию на диске R и скопируем туда установочный образ.

md R:\RIcopy 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\WindowsREattrib –s –h W:\windows\system32\recovery\winre.wimcopy 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 /targetW:\Windows /index 1W:\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=0assign letter=”D”exit

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

diskpart /s D:\WimCreatePartition.txtrem == WimCreatePartition.txt ==select disk 0cleanconvert gptrem == Создание системного раздела ==create partition efi size=100format quick fs=fat32 label=”System”rem == Создание раздела MSR ==create partition msr size=128rem == Создание раздела Windows ==create partition primaryshrink minimum=5000format quick fs=ntfs label=”Windows”assign letter=”С”rem == Создание раздела для образов ==create partition primaryformat quick fs=ntfs label=”Images”assign letter=”M”set id=”de94bba4-06d1-4d40-a16a-bfd50179d6ac”gpt attributes=0x8000000000000001list volumeexit

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

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\ScratchDISM /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\WindowsREecho 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 /Ticacls "M:\Windows Images" /grant:r SYSTEM:(R) /Ticacls "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--.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.wimrename 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

Здесь и далее <Package> — имя пакета, а <arch> — архитектура процессора. Монтируем образ 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

 

Автор статьи: Мария Берзин