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

в 7:25, , рубрики: deployment tools, diskpart, hyper-v, Windows 8.1, windows server 2012 r2, Блог компании Microsoft, операционные системы, системное администрирование

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

Освобождаем свободное место на жестком диске: 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

В чем преимущества 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_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinPE

Если версия 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:Imagesinstall.wim C:Imagesinstall_temp.wim

Создадим каталог и смонтируем туда образ.

md C:mountWindows
Dism /Mount-Image /ImageFile:"C:Imagesinstall_temp.wim" /Index:1 /MountDir:C:mountWindows

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:mountWindowsWindowsSystem32Recoverywinre.wim
move C:mountWindowsWindowsSystem32Recoverywinre.wim C:imageswinre.wim

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

Оптимизируем образ WIMBoot.

Dism /Optimize-Image /Image:C:mountWindows /WIMBoot

Размонтируем образ

Dism /Unmount-Image /MountDir:C:mountWindows /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 пользователь может эти разделы удалить. Чтобы предотвратить удаление разделов восстановления и нужно использовать вышеприведенную команду.
После выполнения данного скрипта, вы должны увидеть примерно следующее.
Освобождаем свободное место на жестком диске: WIMBoot
В итоге получились вот такие разделы (MSR – резервный раздел Microsoft и в выводе данной команды не отображается):
Освобождаем свободное место на жестком диске: WIMBoot
Далее выполним установку образа. Сначала создадим директорию на диске R и скопируем туда установочный образ.

md R:RI
copy C:Imagesinstall.wim R:RIinstall.wim

Применим образ install.wim на раздел Windows.

dism /Apply-Image /ImageFile:R:RIinstall.wim /Index:1 /ApplyDir:W:

Скопируем инструменты для восстановления на раздел Windows RE.

md T:RecoveryWindowsRE
attrib –s –h W:windowssystem32recoverywinre.wim
copy W:windowssystem32recoverywinre.wim T:RecoveryWindowsREwinre.wim

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

bcdboot W:Windows

Зарегистрируем раздел Windows и раздел восстановления

W:WindowsSystem32reagentc /setosimage /path R:RI /target W:Windows /index 1
W:WindowsSystem32reagentc /setreimage /path T:RecoveryWindowsRE /target W:Windows

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

dism /Cleanup-Image /Online /StartComponentCleanup

После этого с помощью команды Sysprep подготовим компьютер к использованию и завершим работу.

C:WindowsSystem32Sysprepsysprep /generalize /shutdown /oobe

Запустим компьютер снова в режиме WinPE. Рекомендую запустить утилиту diskpart и команду list volume. У вас должны быть назначены буквы на диск с Windows и на диск WinPE. Все остальные разделы скрыты.
Освобождаем свободное место на жестком диске: WIMBoot
Создадим каталог для временных файлов C:RecyclerScratch и перезахватим образ, но уже с опцией WIMBoot.

DISM /Capture-Image /WIMBoot /ImageFile:"D:Imagesinstall_wimboot.wim" /CaptureDir:C: /Name:"WIMBoot Enterprise_x64 with 8.1 Updates" /ScratchDir:C:RecyclerScratch

После того, как выполнение команды завершится, мы можем выключить компьютер. Теперь на нашем виртуальном диске или на флешке есть установочный образ 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

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

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

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

md "M: Windows Images "

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

copy D:Imagesinstall_update1.wim "M:Windows Imagesinstall.wim"

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

md C:RecyclerScratch
DISM /Apply-Image /ImageFile:"M:Windows Imagesinstall.wim" /ApplyDir:C: /Index:1 /WIMBoot /ScratchDir:C:RecyclerScratch

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

C:WindowsSystem32bcdboot C:Windows

Скопируем образ среды восстановления Windows в папку Images

md M:RecoveryWindowsRE
echo f | xcopy D:Imageswinre.wim M:RecoveryWindowsREwinre.wim /h

Зарегистрируем раздел среды восстановления Windows.

C:WindowsSystem32Reagentc /SetREImage /Path M:RecoveryWindowsRE /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

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

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

Приложение

Установка обновления: WinPE 5.0 --> WinPE 5.1

Перейдем к созданию WinPE и его обновления. В принципе, можете сначала просто создать WinPE, попробовать загрузить с его помощью целевой компьютер и проверить его версию. Однако здесь я приведу весь процесс создания образа.
Предварительно должна быть создана рабочая копия файлов Windows PE.
Смонтируем образ Windows PE

Dism /Mount-Image /ImageFile:"C:WinPE_amd64mediasourcesboot.wim" /index:1 /MountDir:"C:WinPE_amd64mount"

Добавляем пакеты обновлений к образу Windows PE. Набор пакетов обновлений тот же, что и был использован для обновления образа Windows 8.1 можно скачать здесь. Важно при загрузке пакета KB2919355 скачать также пакеты KB2919355, KB2932046, KB2934018, KB2937592, KB2938439, и KB2959977. Пакеты нужно устанавливать по порядку и по отдельности.

Dism /Add-Package /PackagePath:C:MSUWindows8.1-<Package>-<arch>.msu /Image:C:mountWindows /LogPath:AddPackage.log

Оптимизируем образ

Dism /Image:С:WinPE_amd64mount /Cleanup-Image /StartComponentCleanup /ResetBase

Размонтируем образ Windows PE

Dism /Unmount-Image /MountDir:"C:WinPE_amd64mount" /commit

Экспортируем и конвертируем образ Windows PE в новый wim-файл

Dism /Export-Image /SourceImageFile:C:WinPE_amd64mediasourcesboot.wim /SourceIndex:1 /DestinationImageFile:C:WinPE_amd64mediasourcesboot2.wim

Заменяем файл boot.wim новым файлом boot2.wim

del C:WinPE_amd64mediasourcesboot.wim
rename C:WinPE_amd64mediasourcesboot2.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

Ожидаемый результат:
Освобождаем свободное место на жестком диске: WIMBoot

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

diskpart
  select disk 0
  select partition 4
  detail partition
exit

Ожидаемый результат:
Освобождаем свободное место на жестком диске: WIMBoot

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

dir "M:Windows Images"
dir M:RecoveryWindowsRE

Ожидаемый результат:
Освобождаем свободное место на жестком диске: WIMBoot
Освобождаем свободное место на жестком диске: WIMBoot

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

C:WindowsSystem32Reagentc /Info /Target C:Windows

Ожидаемый результат:
Освобождаем свободное место на жестком диске: WIMBoot
Освобождаем свободное место на жестком диске: WIMBoot

Установка обновлений на образ Windows 8.1

Смонтируем образ Windows

md C:mountWindows
Dism /Mount-Image /ImageFile:"C:Imagesinstall.wim" /Index:1 /MountDir:C:mountWindows

Устанавливаем обновления KB2919442 и KB2919355. Данные пакеты доступны для различных архитектур процессора: x86, x64 и arm. Скачать пакеты можно здесь. Пакеты обновлений должны быть установлены по порядку и по отдельности.

Dism /Add-Package /PackagePath:C:MSUWindows8.1-<Package>-<arch>.msu /Image:C:mountWindows /LogPath:AddPackage.log

Здесь и далее — имя пакета, а — архитектура процессора.
Монтируем образ Windows RE

md C:mountWinRE
Dism /Mount-Image /ImageFile:"C:mountWindowsWindowsSystem32Recoverywinre.wim" /Index:1 /MountDir:C:mountWinRE

Обновляем образ WinRE с помощью тех же пакетов, которые были использованы при обновлении образа Windows

Dism /Add-Package /PackagePath:C:MSUWindows8.1-<Package>-<arch>.msu /Image:C:mountWinRE /LogPath:AddPackage.log

Дополнительно выполним очистку образа, для того, чтобы удалить некоторые элементы и уменьшить конечный размер образа. Этот шаг необязателен, но его можно выполнить только на этом этапе: после запуска очистить образ будет невозможно.

Dism /Cleanup-Image /Image:C:mountWinRE /StartComponentCleanup /ResetBase

Теперь можно размонтировать образ Windows RE

Dism /Unmount-Image /MountDir:C:mountWinRE /Commit

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

Dism /Export-Image /SourceImageFile:C:mountWindowsWindowsSystem32Recoverywinre.wim /SourceIndex:1 /DestinationImageFile:C:Imageswinre_updated.wim

После экспорта, необходимо заменить winre.wim новой версией.

attrib –s -h C:mountWindowsWindowsSystem32Recoverywinre.wim
Del C:mountWindowsWindowsSystem32Recoverywinre.wim
copy C:Imageswinre_updated.wim C:mountWindowsWindowsSystem32Recoverywinre.wim

После того, как обновления установлены, можно размонтировать образ Windows

Dism /Unmount-Image /MountDir:C:mountWindows /Commit

Автор: m_berzin

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js