Установка windows из wim или esd образа

Пройдемся еще немножко по теме установки ОС Windows. На этот раз, речь пойдет о использовании стандартного установщика для организации мультиустановки. И напоследок рассмотрим ручную установку из *.wim или *.esd архива.

Содержание

  • Как Происходит Установка ОС Windows
  • Стандартный Установщик Windows
  • Мультиустановка с Помощью Установщика Windows
  • Уменьшение Размера WIM-архива
  • Ручная Установка
    • Создание Разделов
      • Diskpart
        • MBR
        • GPT
    • Извлечение Файлов
      • Dism
    • Установка Загрузчика
      • BIOS
      • UEFI
    • Тестовый Запуск
  • Итог

Как Происходит Установка ОС Windows

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

Скачивается ISO-образ, с необходимой редакцией ОС. С помощью данного образа подготавливается установочная флешка, или установочный CD-диск. Либо скачивается официальная программа от Microsoft, для создания установочного диска. И уже с ее помощью происходит подготовка установочного диска.

Следующий этап, загрузка с подготовленного установочного диска. На этом этапе происходит запуск среды предустановки (WinPE), и выполнение установочной программы Windows.

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

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

Стандартный Установщик Windows

Представлен исполняемым файлом \sources\setup.exe установочного диска Windows.

И ссылающийся на него файл \setup.exe в корне диска.

Стандартный установщик, так же присутствует в образе среды предустановки boot.wim. Пути расположения идентичны.

\sources\setup.exe

\setup.exe

Как говорилось ранее, задача у данной программы выполнить установку ОС Windows. Теперь немного фактов о стандартном установщике Windows.

Windows-установщик является обычной программой. То есть при желании, его можно сохранить как отдельную программу вне установочного диска, например на флешке, и запускать по мере необходимости. Все файлы стандартного установщика расположены в папке \sources.

Файл \setup.exe в корне установочного диска, или среды предустановки, на самом деле не является самостоятельным установщиком. Все что он делает, это запускает файл \sources\setup.exe.

Для Windows-установщика не важна разрядность устанавливаемой ОС. К примеру, 32-битный установщик, без проблем выполнит установку 64-битной версии ОС Windows из указанного *.wim/*.esd архива.

Установочный *.wim/*.esd архив, не обязательно должен находиться в папке \sources для выполнения установки. Установщику можно указывать путь до архива, который он в последствии будет извлекать.

Установщик Windows расположенный в boot.wim образе содержит в себе функционал восстановления системы. Исполняемый файл, запускающий утилиту восстановления системы, расположен по пути \sources\recovery\RecEnv.exe.

Мультиустановка с Помощью Установщика Windows

Теперь, когда нам известно о возможностях стандартного установщика, попробуем организовать с его помощью установку различных версий ОС Windows. Для теста, я взял четыре установочных *.wim/*.esd (располагаются в папке \sources установочного ISO-образа, и обычно имеют имя install.wim или install.esd) архива операционных систем

Windows 7 64-bit

,

Windows 8.1 64-bit

,

Windows 10 64-bit

и

Windows 10 32-bit

.

Установочные файлы были размещены в директории WinSetup\WinImage. Пути не обязательно должны быть такими же, меняйте их по своему усмотрению, просто учитывайте ваши изменения с дальнейшим описанием.

Скопируем стандартный установщик Windows с boot.wim образа, 32-x битной версии установочного диска, в папку WinSetup. Весь установщик, с необходимыми ему файлами, расположен в папке \sources, в корне самого объемного по размеру индекса, файла boot.wim.

Почему копировать папку sources лучше из файла boot.wim, а не из корня установочного ISO-образа? Ответ банален — из-за размера. Папка sources из файла образа boot.wim имеет вдвое меньший объем, чем аналогичная в корне установочного диска. Учитывая, что обе версии одинаково справляются со своей задачей, выбор пал на меньшую по размерам.

Перейдем в скопированную папку sources, и запустим установщик setup.exe.

В результате, получаем ошибку о том, что системе Windows не удалось найти файл boot.wim, очень необходимый, по мнению установщика.

«Windows не может найти требуемый файл установки [boot.wim]. Убедитесь, что источник установки действителен и запустите установку заново. Код ошибки: 0x80070002»

Дело в том, что установщик понимает, что он выполняется в полноценной версии Windows, а не в среде предустановки. И ожидает увидеть файлы boot.wim и install.wim (esd), в папке sources. Если он их не находит, то считает, что установка не может быть выполнена, так как установочный диск является не полноценным. К сведению, аналогичные действия в загруженной WinPE, не вызвали бы таких ошибок.

Придется дать установщику то, что он просит. Сама мысль о том, что папка sources будет увеличена в размере на на 350 МБ, приводит в ужас. Ведь немного ранее мы уже экономили на папке sources.

Попробуем обмануть установщик. Самое первое, что может прийти в голову, это создать пустой файл с именем boot.wim, и подложить в папку sources.

Но, установщик не так прост как кажется. Получаем ошибку — «Системе Windows не удается создать требуемую папку установки. Код ошибки: 0x8007000B«.

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

Если нет желания возиться с командной строкой, то можете скачать уже максимально опустошенный мною файл boot.wim (2.44 KB). Информацию о том, как уменьшить размер файла boot.wim, и в принципе любого другого *.wim архива, можно прочесть в этом разделе.

После того, как у нас на руках есть уменьшенный в размере файл boot.wim, копируем его в папку sources.

Запускаем setup.exe и получаем сообщение — «Windows не удалось собрать данные для [OSImage], так как указанный файл образа [install.wim] не существует.».

Из текста сообщения понятно, что теперь все хорошо, не хватает лишь файла install.wim для осуществления установки.

На этом этапе никаких хитростей не понадобится. Ранее уже говорилось, что установщику можно указать с какого файла производить установку. Делается это с помощью запуска файла sources\setup.exe с параметром /installfrom:«путь_до_wim_или_esd_архива». Остальные параметры установщика можно посмотреть по адресу https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-setup-command-line-options.

Так как у нас четыре установочных архива, создадим рядом с папкой sources четыре *.cmd скрипта, для запуска установки каждого из них. Перечислим их с описанием их содержимого, и примером запуска:

Win7x64.cmd — Запуск установки Windows 7 64-bit.

@echo off
@pushd %~dp0
cd sources
setup.exe /installfrom:..\WinImage\Win7Ult64.esd

Win8x64.cmd — Запуск установки Windows 8 64-bit.

@echo off
@pushd %~dp0
cd sources
setup.exe /installfrom:..\WinImage\Win81Pro64.wim

Win10x64.cmd — Запуск установки Windows 10 64-bit.

@echo off
@pushd %~dp0
cd sources
setup.exe /installfrom:..\WinImage\Win10Pro64.esd





Win10x86.cmd — Запуск установки Windows 10 32-bit.

@echo off
@pushd %~dp0
cd sources
setup.exe /installfrom:..\WinImage\Win10Pro86.esd

Все работает! Последнее, что можно сделать, это создать либо единый *.cmd скрипт, либо приложение с графическим интерфейсом, с возможностью выбора устанавливаемой версии Windows.

Пример графического меню созданного с помощью AutoIt.

Исходный код следующий:

#NoTrayIcon
#RequireAdmin

#include <buttonconstants.au3>
#include <guiconstantsex.au3>
#include <staticconstants.au3>
#include <windowsconstants.au3>

$MainWin = GUICreate("Install Menu", 297, 322,- 1, -1, BitOR($WS_CAPTION, $WS_POPUP, $WS_SYSMENU))

$b1 = GUICtrlCreateButton("Windows 7 64-bit", 8, 8, 281, 65)
$b2 = GUICtrlCreateButton("Windows 8.1 64-bit", 8, 80, 281, 65)
$b3 = GUICtrlCreateButton("Windows 10 64-bit", 8, 152, 281, 65)
$b4 = GUICtrlCreateButton("Windows 10 32-bit", 8, 224, 281, 65)

$link = GUICtrlCreateLabel("http://www.BootDev.ru/", 88, 296, 121, 17)
GUICtrlSetFont(-1, 8, 400, 4, "MS Sans Serif")

GUICtrlSetBkColor(-1, 0xFFFFFF)

GUISetIcon("icon.ico")

GUISetState(@SW_SHOW)

FileChangeDir(@ScriptDir)

Global $setup = "sources\setup.exe /installfrom:"

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit

  Case $b1 ; Windows 7 64-bit
   Run($setup & "WinImage\Win7Ult64.esd")

  Case $b2 ; Windows 8.1 64-bit
   Run($setup & "WinImage\Win81Pro64.wim")

  Case $b3 ; Windows 10 64-bit
   Run($setup & "WinImage\Win10Pro64.esd")

  Case $b4 ; Windows 10 32-bit
   Run($setup & "WinImage\Win10Pro86.esd")

  Case $link
   ShellExecute("http://www.bootdev.ru")
 EndSwitch
WEnd

Скрипт скомпилирован в исполняемый файл WinSetup.exe. Располагаться он должен рядом с папкой sources.

Созданное меню более удобно для использования, и заменяет по функционалу все написанные ранее *.cmd скрипты. Особенно, данное удобство будет заметно при интеграцию его в среду предустановки, немного доработав поиск установочных архивов на поиск их на внешнем носителе. В общем, какой вариант запуска использовать, это дело конкретной потребности.

Уменьшение Размера WIM-архива

Единственный способ уменьшить размер wim-архива, это избавиться от ненужного содержимого в нем. Но здесь есть один подвох. При удалении данных, они физически не удаляются, а как бы перемещаются в раздел удаленных. Размер wim-файла при этом даже немного увеличивается. Разберем все более подробно на примере файла boot.wim. Текущая цель создать пустой wim-файл.

Создадим папку (это скорее для удобства), в моем случае это папка E:\WIM, и поместим в нее оригинальный файл boot.wim.

Размер его на данный момент составляет 336 MB. Запустим командную, строку от имени администратора, и перейдем в ней в каталог с нашим файлом boot.wim.

Посмотрим информацию о файле boot.wim, выполнив команду dism /get-wiminfo /wimfile:boot.wim.

Видим, что архив содержит две версии Windows — первая Microsoft Windows PE размером ~1395 MB (среда предустановки), вторая Microsoft Windows Setup размером ~1580 MB (среда предуставновки + установщик).

Через 7-Zip, boot.wim на данный момент выглядит так:

Удалим второй индекс, вместе со всем его содержимым. Выполним для этого команду dism /delete-image /imagefile:boot.wim /index:2.

Снова выведем информацию о boot.wim, и проверим содержимое через 7-Zip.

Командная строка показывает то что индекса 2 больше нет. Размер boot.wim при этом вырос на 1 MB. И только 7-Zip показывает, что удаленные данные, размером в ~100 MB, находятся в секции [DELETED].

Индекс 1 удалить невозможно (наша цель, напомню, уменьшить максимально файл boot.wim), потому что он обязательно должен присутствовать в wim-архиве. Поэтому остается только смонтировать 1-й индекс, и удалить файлы вручную с сохранением проделанных изменений.

Для монтирования нам потребуется какая-нибудь папка. Содержимое смонтированного архива, будет отображено в ней. Создадим папку с именем mnt рядом с файлом boot.wim.

Смонтируем первый индекс в папку mnt, выполнив команду dism /mount-image /imagefile:boot.wim /index:1 /mountdir:mnt.

В папке mnt появится содержимое архива boot.wim.

Открываем Far Manager от имени администратор, переходим в папку mnt и удаляем ее содержимое. Именно он позволяет полностью, без проблем, удалить все файлы.

Закрываем Far Manager. Закрываем все окна, в которых открыта папка mnt. Возвращаемся в командную строку, выполняем размонтирование файла boot.wim с сохранением проделанных изменений. Вводим для этого команду dism /unmount-image /mountdir:mnt /commit.

Снова проверим информацию о boot.wim.

Размер первого индекса 0. Сам архив увеличился еще на 1 MB.

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

Выполняем команду dism /export-image /sourceimagefile:boot.wim /sourceindex:1 /destinationimagefile:new_boot.wim.

Появится новый архив new_boot.wim размером 2.44 KB. Операция уменьшения boot.wim архива на этом, успешно выполнена.

Ручная Установка

Все рассказанное до этого момента, предполагало наличие установщика. То есть программы, которая за вас выполнит разметку диска, копирование файлов и установку загрузчика. В этой главе, и ее подглавах, мы рассмотрим как выполнить установку с *.wim или *.esd архива вручную.

Сразу напрашивается вопрос — А зачем нужна установка вручную, ведь много программ которые могут автоматизировать данный процесс, WinNTSetup или тот же стандартный установщик? Данный вариант можно рассматривать как «аварийный». Например, у вас нет под рукой необходимого ПО, или используемый вами WinPE не содержит его. Или вы находитесь в ситуации когда нет времени, а установку уже надо делать. Я это все к тому, что знать о ручной установке все же будет полезно.

Все дальнейшие действия будут проводиться на виртуальном жестком диске VHD. Так же, будет производиться загрузка данного VHD в виртуальной машине VirtualBox, для проверки корректности работы, после проделанных действий.

Разметка Диска

Возможные таблицы разделов на данный для дисков, это MBR или GPT. С MBR-диска можно загружаться как в BIOS, так и в UEFI системах (legacy mode). С GPT-диска, только в UEFI. Рассмотрим создание обоих типов таблиц разделов.

Diskpart

Рассмотрим создание таблицы разделов с помощью консольной утилиты diskpart. Предназначена она для выполнения различных манипуляций с дисками и разделами. Присутствует в Windows с 2000-й версии.

Все дальнейшие действия в данной программе, будут проводиться для диска под номером 2 (виртуальный жесткий диск, о котором говорилось выше).

Узнать номер целевого диска можно командой list disk, а командой select disk X, где X номер диска, можно выбрать указанный диск для выполнения дальнейших манипуляций над ним.

MBR

Для диска в формате MBR потребуется 2 раздела. Первый системный, размером в 100 MB, на котором будут располагаться файлы загрузчика. И второй основной, для операционной системы. Хотя можно обойтись и одним разделом для всего.

Запускаем diskpart  (Win+R, вводим diskpart и нажимаем ENTER) и выполняем следующую последовательность команд:

rem Выбираем целевой диск
select disk 2

rem Очищаем выбранный диск от таблицы разделов
clean

rem Создаем первый раздел размером в 100 MB
create partition primary size=100

rem Помечаем раздел как активный
active

rem Форматируем раздел в файловую систему NTFS и выставляем метку System
format quick fs=ntfs label="System"

rem Присваиваем разделу букву S
assign letter="S"

rem Создаем второй раздел занимающий все оставшееся пространство диска
create partition primary

rem Форматируем раздел в файловую систему NTFS и выставляем метку Windows
format quick fs=ntfs label="Windows"

rem Присваиваем разделу букву W
assign letter="W"

GPT

Для диска в GPT формате потребуется 3 раздела. Первый EFI раздел, с файловой системой FAT32, размером 100 MB. В нем будет располагаться загрузчик. Второй MSR раздел, размером в 128 MB. Служебный раздел для ОС Windows, не предназначен для хранения данных. И последний основной раздел, для операционной системы.

Запускаем diskpart  (Win+R, вводим diskpart и нажимаем ENTER) и выполняем следующую последовательность команд:

rem Выбираем целевой диск
select disk 2

rem Очищаем выбранный диск от таблицы разделов
clean

rem Конвертируем таблицу разделов в GPT формат
convert gpt

rem Создаем EFI раздел размером в 100 MB
create partition efi size=100

rem Форматируем раздел в файловую систему FAT32 и выставляем метку System
format quick fs=fat32 label="System"

rem Присваиваем разделу букву S
assign letter="S"

rem Создаем служебный раздел MSR размером в 128 MB
create partition msr size=128

rem Создаем третий раздел занимающий все оставшееся пространство диска
create partition primary

rem Форматируем раздел в файловую систему NTFS и выставляем метку Windows
format quick fs=ntfs label="Windows"

rem Присваиваем разделу букву W
assign letter="W"

Пару слов по поводу MSR раздела, команда create partition msr size=128. При выполнении команды convert gpt, MSR раздел создается автоматически.

Как можно заметить, до выполнения команды convert gpt, разделы на жестком диске отсутствовали. А после выполнения, появился раздел размером в 128 MB.

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

Извлечение Файлов

Данный шаг, является следующим после разметки диска. Выполнять извлечение установочного архива будем выполнять с помощью консольной утилиты DISM.

Можно попробовать использовать для этих целей 7-Zip. Собственно я планировал добавить далее описание данного процесса. Но при тестировании выявил, что операционная система  Windows 10, распакованная таким образом, выдавала ошибку при первом старте. Поэтому от вариантов распаковки установочного образа с помощью архиваторов и файл менеджеров, было решено отказаться.

Сам процесс извлечения состоит из двух этапов. Определение извлекаемой версии архива. Как известно *.wim/*.esd архивы могут содержать несколько версий содержимого, разбитого по индексам. И последний этап, извлечение выбранного индекса в указанный раздел.

DISM

Для работы dism нужны права администратора, поэтому все дальнейшие действия необходимо выполнять в командной строке запущенной с соответствующими правами.

В командной строке, переходим в директорию, в которой расположен установочный архив. В моем случае это директория WinSetup\WinImage.

Выполнив команду dir, выводим список файлов, чтобы посмотреть имя архива с которым будем работать далее.

Выводим информацию о выбранном архиве введя команду dism /get-wiminfo /wimfile:Win10Pro64.esd, чтобы определить индекс извлекаемого содержимого.

Выполняем извлечение выбранного индекса командой dism /apply-image /imagefile:Win10Pro64.esd /index:4 /applydir:W:\. W:\ в данном случае, это раздел, который создавался в предыдущей главе, и предназначался для размещения ОС Windows.

Извлечение файлов на этом завершено. Содержимое диска W:\ представлено на скриншоте ниже.

Установка Загрузчика

Перед установкой загрузчика, в системе должны быть подключены, оба созданных ранее раздела S:\ и W:\. Подключить разделы можно с помощью программы diskpart, либо в оснастке Управление дисками.

Для diskpart, делается с помощью следующих команд:

rem Узнаем номер необходимого диска
list disk

rem Выбираем необходимый диск
select disk 2

rem Выводим список разделов выбранного диска
list partition

rem Выбираем первый раздел диска
select partition 1

rem Монтируем первый раздел под буквой S
assign letter=S

rem Выыбираем второй раздел диска
select partition 2

rem Монтируем второй раздел под буквой W
assign letter=W

rem Выходим из diskpart
exit

В оснастке Управление дисками, все делается через контекстное меню нужного раздела.

Процесс довольно простой и понятный, поэтому не нуждается в подробном описании.

Теперь, когда подключены оба раздела, можно приступать к установке загрузчика. Возможны два варианта, в зависимости от используемой таблицы разделов — установка BIOS версии (MBR), или установка EFI версии (GPT).

BIOS

Для дисков размеченных в стиле MBR, потребуется установить MBR-запись, и выполнить копирование файлов загрузчика на раздел S:\. Делается это довольно просто, с помощью консольных программ bootsect и bcdboot. Сами команды будут иметь следующий вид, выполнять их нужно в командной строке, запущенной от имени администратора:

:: Устанавливаем загрузочный код Windows Boot Manager в MBR область диска
bootsect /nt60 S: /mbr

:: Переходим в раздел W:\ с распакованными файлами Windows
W:

:: Переходим в директорию System32 распакованной системы
cd W:\Windows\System32

:: Устанавливаем BIOS версию загрузчка Windows Boot Manager в раздел S:\
bcdboot W:\Windows /s S: /f BIOS

Загрузчик установлен. На диске S:\ появятся файлы загрузчика.

UEFI

Для дисков с таблице разделов GPT, для установки загрузчика достаточно выполнить только копирование файлов загрузчика на раздел S:\. Выполняется эта операция с помощью консольной утилиты bcdboot. Выполнять ее запуск нужно в командной строке запущенной от имени администратора. Полный пример команд будет выглядеть так:

:: Переходим в раздел W:\ с распакованными файлами Windows
W:

:: Переходим в директорию System32 распакованной системы
cd W:\Windows\System32

:: Устанавливаем BIOS версию загрузчка Windows Boot Manager в раздел S:
bcdboot W:\Windows /s S: /f UEFI

Загрузчик установлен. На диске S:\ появится папка с UEFI загрузчиком.

Тестовый Запуск

Проверим ручную установку, подключив подготовленный VHD-образ в виртуальную машину VirtualBox.

Результат загрузки.

Операционная система успешно установилась и загрузилась.

Итог

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

Привет, Хабр!

Представляем подробный гайд по пересборке образа Windows Server 2019, заточенный для установки новых серверов и обновления старых (Windows Server 2012-16) в среде VMware. В принципе, гайд должен подходить к любой версии Windows на основе *.wim- или *.esd-файлов. Писался текст как внутренняя инструкция для коллег. По итогу он охватывает все необходимые возможности DISM для работы с образами, поэтому материал стал частью нашей базы знаний и блога здесь.

Рекомендации от автора: прочтите наш текст хотя бы один раз до конца, прежде чем делать образ самостоятельно, — некоторые вещи можно будет выполнить разными способами, и лучше о них узнать заранее.

Иллюстрацию к материалу сгенерировала нейросеть

Иллюстрацию к материалу сгенерировала нейросеть

Подготовка

Шаг 0: скачайте и установите актуальный Windows ADK

Необязательный пункт, если:

· у вас версия DISM аналогичная или старше той, что будет в препарируемом образе диска;

· у вас есть инструмент для создания установочных образов.

Если нет, тогда ссылка для скачивания. Ставим галочки только у средств развёртывания (да и то только DISM и OSCDIMG):

Шаг 1: готовим директории

Перед реализацией этого пункта немного наставлений от автора:

· Помните, вы можете использовать собственные имена и вложенность каталогов, но тогда вам придётся редактировать имена команд. В общем, лишние телодвижения, поэтому следуйте гайду. :)

· Прикиньте, сколько примерно понадобится свободного места для каждой папки. Возможно, в вашем случае директории придётся размещать на разных дисках. У меня поместилось всё на одном.

· Не забывайте об отсутствии пробелов в именах директорий, иначе вы устанете вставлять кавычки в команды при указании путей.

Создаём все необходимые директории.

1. Для удобства делаем корневую директорию для нашего проекта: C:\image

2. Сюда мы распаковываем образ диска: C:\image\iso

Объём равен исходному iso, в нашем случае — 5,15 Гбайт.

3. Монтируем wim-файлы: C:\image\mount

Размер на старте — 364 Мбайт, но к концу работ он составит приблизительно 23 Гбайт. Связано это с тем, что в самом начале большинство папок и файлов заменены на симлинки, но при изменениях они заменяются на реальные.

4. Здесь будут драйверы, которые мы внедрим в образ: C:\image\drivers

Как правило, они занимают мало места, так что можно даже не подсчитывать эти килобайты.

5. Файлы обновлений оставляем здесь: C:\image\msu

В нашем случае получилось около 810 Мбайт.

6. И самая главная папка, которая не раз вам пригодится (медаль «Слабоумие и Отвага» тому, кто рассчитывает обойтись без неё): C:\image\backup

Не забудьте, что где-то будет ещё лежать готовый iso — под него понадобится 4–5 Гбайт.

Шаг 2: готовим драйверы и обновления

Переходим к скачиванию драйверов и обновлений. Если у вас есть ограничения на использование обновлений только из базы ФСТЭК, то они собраны здесь.

К драйверам таких требований нет. Нам понадобился только один — pvscsi.sys. Он легко извлекается из образа VMware Tools. Свежую версию скачиваем отсюда. Это контринтуитивно, но для Windows Server 2019 подходит драйвер из папки win8, а не win10.

Шаг 3: получаем и распаковываем образы

Здесь всё просто: у вас должен быть образ нужного диска. Его вы распаковываете архиватором или чем угодно ещё, пригодным для распаковки образа (можно монтировать в виртуальный привод и копировать содержимое), в папку iso. Теперь переходим к основной работе.

Основная работа

Шаг 1: внедряем драйверы

Первым делом подготавливаем образ для установки в виртуальную машину VMware. Для этого внедряем драйвер pvscsi в загрузочную часть. Иначе при попытке установки виртуальный диск не будет виден (разумеется, если в самой виртуальной машине в качестве SCSI-контроллера выбран VMware Paravirtual).

В файле boot.wim содержится два модуля. Первый — образ восстановления Windows. В рамках этой статьи он нас особо не интересует. Второй предназначен для установки ОС с нуля и её обновления с предыдущей версии. Драйверы достаточно внедрить во второй модуль.

Примечание и отступление:

Важно! Все команды мы пишем в нижнем регистре, чтобы у вас не было сомнений, какая там буква — i или L. Если точки вверху нет — это L. Но Windows в целом регистр не важен при вводе команд и параметров. Почти все параметры команд не позиционные, то есть могут следовать в любом порядке. Это значит, что в других руководствах вы встретите такие же команды, но написанные в другом порядке следования параметров — это нормально.

1. Посмотрим на список вариантов, чтобы выбрать нужный:
dism /get-imageinfo /imagefile:c:\image\iso\sources\boot.wim

В случае другого загрузчика у вас будут указаны другие размеры. Первый образ — это среда восстановления, нам нужен второй.

2. Запускаем от имени администратора ярлык из Пуска: Среда средств развёртывания и работы с образами.

3. Вводим команду монтирования нужного wim-файла и индекса:
dism /mount-image /imagefile:c:\image\iso\sources\boot.wim /index:2 /mountdir:c:\image\mount

4. Если драйвер один (как в нашем случае), берём команду:
dism /image:c:\image\mount /add-driver /driver:c:\image\drivers\pvscsi\pvscsi.inf

5. Убеждаемся, что драйвер корректно установился:
dism /image:c:\image\mount /get-drivers /format:table

6. Если драйверов много, то есть ключ /recurse. Но с ним надо быть осторожнее: если у драйвера несколько файлов *.inf, то каждый из них будет установлен в системе в отдельную папку. Это вызовет ненужное дублирование одинаковых файлов.
dism /image:c:\image\mount /add-driver /driver:c:\image\drivers /recurse

Есть ещё ключ /forceunsigned для установки неподписанных драйверов, но мы его сейчас не используем.

7. Фиксируем изменения и отмонтируем:
dism /unmount-image /mountdir:c:\image\mount /commit

Вообще, с образом boot.wim можно сделать много интересных вещей, но это тема для отдельной статьи.

Шаг 2: подготавливаем установочный образ

Вы, наверное, замечали, что во время установки предлагается несколько вариантов выбора редакции. Но все они нам не нужны, и мы можем немного уменьшить размер итогового образа, удалив лишние варианты. Для этого экспортируем из образа install.wim только нужную редакцию.

1. Выводим список редакций:
dism /get-imageinfo /imagefile:c:\image\iso\sources\install.wim

2. Нам нужен только второй вариант. Экспортируем его в отдельный файл:
dism /export-image /sourceimagefile:c:\image\iso\sources\install.wim /sourceindex:2 /destinationimagefile:c:\image\install.wim /compress:max /checkintegrity
Ключ /checkintegrity можно не указывать. Он нужен на случай, если что-то пойдёт не так, тогда выполнение команды остановится. Сжатие /compress:max тоже не указываем на данном этапе (если позволяет свободное место).

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

4. Монтируем полученный образ для дальнейшей работы с ним: dism /mount-image /imagefile:c:\image\iso\sources\install.wim /index:1 /mountdir:c:\image\mount

Обратите внимание на то, что в этом образе только одна редакция, поэтому её index всегда равен 1.

Шаг 3: внедряем обновления

Несмотря на то, что для Windows Server 2019 выпускаются кумулятивные обновления и SSU теперь тоже туда входит, нам всё равно необходимо первым делом внедрить KB5005112. Иначе при внедрении других обновлений возникнет ошибка. На момент написания нашего гайда актуальная версия кумулятивного обновления, проверенного и одобренного ФСТЭК, — KB5037425 (март 2024 года).

В то же время ставим net4.8 и февральское обновление для него (актуальное одобренное на момент написания). Делаем это следующей командой:

dism /image:c:\image\mount /add-package /packagepath:c:\image\msu

Команду выполняем дважды. Сначала помещаем в папку MSU файл KB5005112, а потом уже остальные. Всё потому, что одновременно с этим SSU другие обновления ставиться не будут.

После интеграции четырёх обновлений размер папки mount достигает 14,3 Гбайт.

Если захочется их удалить, достаточно вместо add использовать remove. А параметр get-packages выведет весь список.

Шаг 4: внедряем настройки через реестр

Ещё одна заметка на полях: все настройки реестра можно бэкапить через меню Файл — Выгрузить куст… Но если вдруг придётся их экспортировать обратно, то лучше предусмотреть это заранее и продумать соответствующий путь. Файлы импорта можно редактировать в блокноте.

Региональные настройки и раскладка. В качестве примера мы взяли образ на английском языке, поэтому сначала меняем регион (Россия). Потом делаем переключение раскладки на Ctrl+Shift.

1. Монтируем реестр настроек по умолчанию (не путайте, пожалуйста, с профилем пользователя по умолчанию):
reg load hklm\mount c:\image\mount\windows\system32\config\default
Но ничего не мешает вам это сделать через редактор реестра: — Файл — Загрузить куст… (Load Hive….)

2. Теперь открываем редактор реестра и переходим по пути: Компьютер\HKEY_LOCAL_MACHINE\mount\Keyboard Layout\Preload (можно и дальше через командную строку орудовать, но зачем?). Добавляем строковый параметр с именем «2» и значением «00000419» для русского языка.

3. В разделе Компьютер\HKEY_LOCAL_MACHINE\mount\Keyboard Layout создаём новый подраздел — Toggle — и добавляем в него три новых строковых (REG_SZ) параметра (это переключение раскладки на Ctrl+Shift):

· Hotkey 2;

· Language Hotkey 2;

· Layout Hotkey 3.

У вас должна получиться вот такая картинка:

4. Сохраняем изменения и выгружаем куст обратно в файл. Это можно сделать как через редактор реестра (выбрать нужный куст — Файл — Выгрузить куст… (Unload hive…), так и через консоль (reg unload hklm\mount). При выборе второго варианта убедитесь в том, что у вас не стоит фокус на этом разделе или его подразделах, — иначе команда вернёт ошибку доступа и куст не выгрузится.

5. Профиль пользователя по умолчанию находится в файле C:\Users\Default\ntuser.dat, замонтируем его:
reg load hklm\mount c:\image\mount\users\default\ntuser.dat
И проделаем те же манипуляции с добавлением русского языка и смены раскладки.

6. Если вам надо сменить регион, то ловите лайфхак:

a. Делаем необходимые настройки локально.

b. Экспортируем Компьютер\HKEY_CURRENT_USER\Control Panel\International в *.reg-файл.

c. Открываем его в блокноте, меняем все вхождения HKEY_CURRENT_USER на HKEY_LOCAL_MACHINE\mount.

d. Сохраняем и закрываем.

e. Импортируем в реестр. Нужные ветки и ключи должны теперь попасть в примонтированный профиль по умолчанию.

f. Проверяем, что значение ключа sCountry в разделе Компьютер\HKEY_CURRENT_USER\Control Panel\International равняется Russia.

g. Изменяем значение ключа Nation в разделе Компьютер\HKEY_CURRENT_USER\Control Panel\International\Geo на нужное (например, 203 — это Россия, 244 — США, все коды смотрим тут).

7. Пока мы работаем с профилем по умолчанию, делаем ещё одну настройку.

Немного негодования: мне до сих пор непонятно, почему в «Майкрософте» не сделают отображение расширений файлов по умолчанию. И вообще, почему есть возможность их скрывать. Сокращение имени файла на 4–5 символов?

Обезопасим будущих пользователей:

a. Переходим в раздел Компьютер\HKEY_LOCAL_MACHINE\mount\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced.

b. Добавляем новый DWORD-ключ HideFileExt и задаём ему значение 0.

2. Отмонтируем профиль по умолчанию: reg unload hklm\mount

 Настройка дампа. На наше

1. Монтируем нужный реестр (System):
reg load hklm\mount c:\image\mount\windows\system32\config\system

2. Переходим по пути:
Компьютер\HKEY_LOCAL_MACHINE\mount\ControlSet001\Control\CrashControl

3.  Нас интересует значение ключа CrashDumpEnabled:
0 = Не делать дамп.
1 = Полный дамп памяти (для него потребуется место на диске, равное размеру ОЗУ + 1 Мбайт, располагается по пути %SystemRoot%\MEMORY.DMP; если файл подкачки меньшего размера, дамп может не сформироваться).
2 = Дамп памяти ядра (не содержит нераспределённые страницы памяти или выделенные для пользовательского режима, может не поместиться в файл подкачки, если его размер задаётся вручную).
3 = Небольшой дамп памяти (64–256 КБ, создаются отдельные файлы в %SystemRoot%\Minidump).
7 = Автоматический дамп памяти (то же самое, что и дамп памяти ядра, только с автоматическим управлением размером файла подкачки).

4. Отмонтируем реестр, если вам больше ничего не нужно менять в разделе HKLM\System:
reg unload hklm\mount

Отключение устаревших шифров. В «Инфосистемы Джет» принято выполнять сканирование серверов на уязвимости, и с завидным постоянством идёт срабатывание на старые алгоритмы шифрования 3DES и RC4. У нас есть powershell-скрипт, который их выключает, но это для уже развёрнутых серверов. Устраним проблему на корню:

1. Монтируем реестр System:
reg load hklm\mount c:\image\mount\windows\system32\config\system

2. Переходим по пути: Компьютер\HKEY_LOCAL_MACHINE\mount\ControlSet001\Control\Cryptography\Configuration\Local\SSL\00010002

  1. Нам нужен ключ
    Functions — в списке значений ищем
    TLS_RSA_WITH_3DES_EDE_CBC_SHA и удаляем его:

4. Далее переходим в раздел Компьютер\HKEY_LOCAL_MACHINE\mount\ControlSet001\Control\SecurityProviders\SCHANNEL\Ciphers и создаём там следующие подразделы:
RC4 40/128
RC4 56/128
RC4 128/128
Triple DES 168
Triple DES 168/168

5. В каждом подразделе создаём ключ DWORD с именем Enabled и значением 0. Выглядеть это будет так:

6. Отмонтируем реестр: reg unload hklm\mount

Удаляем лишние службы. Некоторые службы не совершают полезной работы. Особенно это касается терминальных серверов, где, как правило, лишние мегабайты ОЗУ нужны всегда. Поэтому всё ненужное — под нож. Если какую-то службу удалить сразу не получается, то у вас не хватает прав. Их надо получить на неудаляемый раздел:

1. Жмём правой клавишей по разделу, выбираем Разрешения…

2. Жмём кнопку «Дополнительно»:

3. Меняем владельца с TrustedInstaller на себя.

4. В этом же окне жмём кнопку Add… (Добавить…) и добавляем себя в список с полными правами.

5. Нажимаем несколько раз ОК, чтобы сохранить изменения и закрыть лишние окна.

Итак, приступаем к удалению лишних служб. Сначала:

· Монтируем системный реестр:
reg load hklm\mount c:\image\mount\windows\system32\config\system

· Переходим в раздел:
Компьютер\HKEY_LOCAL_MACHINE\mount\ControlSet001\Services

Теперь под нож идут:

1. CDPSvc и CDPUserSvc. Реализуют возможности, которые не используются в серверной среде (Хронология, Виртуальные рабочие столы, приложение Ваш телефон и Ночной свет).

2. ConsentUxUserSvc (служба подключения к дисплеям по Wi-Fi и устройствами Bluetooth, нужны полные права на подраздел Parameters).

3. DevicePickerUserSvc (служба передачи мультимедиа по «воздуху», нужны полные права на раздел Parameters).

4. DevicesFlowUserSvc (по функционалу похожа на ConsentUxUserSvc, также нужны полные права на Parameters).

5. PimIndexMaintenanceSvc (служба поиска контактов из приложения Контакты).

6. PrintWorkflowUserSvc, но если используется UWP-приложения с функционалом печати, то оставляем. Кстати, тут тоже нужны полные права на Parameters.

7. UnistoreSvc и UserDataSvc. Но имейте в виду, что если у вас используются UWP-приложения, то службы стоит оставить. Нюанс: вторая служба зависит от первой.

8. WpnService и WpnUserService. Оставляем в том случае, если используете режим Киоска. Для удаления выдайте себе полные права на раздел Parameters.

· Отмонтируем реестр: reg unload hklm\mount

Смена часового пояса. В разделе system есть ещё одна настройка, которую следует проверить, — часовые пояса. Проще всего вносить сюда изменения через импорт с той системы, где уже всё настроено. Необходимый вам путь: Компьютер\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation.

Обратите внимание. В примонтированном реестре нет раздела CurrentControlSet, а есть только ControlSet001. Объяснение простое: здесь хранится предыдущая копия настроек, а в разделе *002 (на уже установленной ОС) копия с *001 до их изменения.

Вырезаем задачи телеметрии из Планировщика задач. У нас нет предвзятости к сбору телеметрии. Просто требования ИБ такие. Ну и в условиях блокировки доступов к серверам Microsoft журналы засоряются лишними сообщениями.

1. Подключаем реестр SOFTWARE:
reg load hklm\mount c:\image\mount\windows\system32\config\software

2. Переходим к разделу Компьютер\HKEY_LOCAL_MACHINE\mount\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache

3. Здесь и содержатся все задачи планировщика:
Tree — отображение задач в виде дерева.
Tasks (T) — список всех задач планировщика, но имя раздела — это guid-задачи.
Plain (P) — список простых задач.
Maintenance (M) — список задач, выполняющихся во время простоя сервера.
Logon (L) — задачи, запускаемые во время входа пользователя.
Boot (B) — задачи, запускаемые после включения сервера.
Одна и та же задача может присутствовать в разных списках, поэтому при удалении надо проверять их все. Это нужно для того, чтобы вас потом не преследовали сообщения об ошибках фантомных задач.

4. Нам не нужны следующие задачи. Название берём из Tree\Microsoft\Windows, дополнительно будем указывать id и в каких ещё списках она есть. Важное уточнение: id будет отличаться, если вы будете использовать образ другой версии Windows. Но вы и сами сможете его посмотреть в значении ключа Id нужной задачи в разделе Tree. Итак, удаляем:

a. AppID\SmartScreenSpecific (эта задача нужна для SmartScreen, если он у вас используется).
{E8FA0CF7-17EE-4F72-BC9C-51E3EDCE8C59} — L, M, T

b. Весь раздел Application Experience.
{002215B8-2308-4AC5-9832-EAF34D750B41} — P, T
{C5C76FDC-53AF-4B73-873E-F7C526A9E61E} — P, T
{D80D2131-046A-4FB7-8199-9AE6F75D7AF9} — M, P, T
{CFD41DBC-64CC-4854-928F-CD1C94C2FAF6} — M, P, T

c. Весь раздел Autocheck.
{13D743E2-A81A-4329-A305-E89FB6910940} — B, T

d. Весь раздел Customer Experience Improvement Program.
{F995780B-EE7A-416C-BFDD-FD47F13A58B4} — P, T
{33A68109-27E3-43C8-80CC-ED58F9E5AB20} — P, T
{C7CCB4E2-E335-4508-B12C-DF79BDF98720} — M, P, T

e. DiskDiagnostic\Microsoft-Windows-DiskDiagnosticDataCollector.
{38747835-C7B7-4532-BE3A-AE35E377D552} — M, P, T

f. Раздел Maintenance (на серверной Windows вам не нужны оценки производительности в попугаях, для этого есть другие средства).
{77BBAA0C-A160-41E4-9FCB-CEF74C91E6B1} — M, P, T

g. Раздел NetTrace.
{B1741409-416B-4092-AB13-BDD740F12FE5} — P, T

h. PI\Sqm-Tasks.
{775462B6-4854-4BEE-B6FF-D696F2810270} — M, P, T

i. Раздел Windows Error Reporting.
{7225215B-C1EC-4E1C-B8C4-DD97CA3BD919} — B, T

5. Наконец мы с этим закончили и можем отмонтировать куст: reg unload hklm\mount

Шаг 5: включаем/отключаем функции по запросу (FOD — Feature On Demand)

Сначала пройдёмся по списку возможностей. Рекомендуем выгрузить его в текстовый файл — так вам будет удобнее формировать команды на включение/отключение:

dism.exe /image:c:\image\mount /get-capabilities /format:table > c:\image\capabilities.txt

Not Present — модуль не установлен, Installed — установлен.

Для выключения модуля введите команду:

dism.exe /image:c:\image\mount /remove-capability /capabilityname:browser.internetexplorer~~~~0.0.11.0

Для примера использовали Internet Explorer, но вместо него берём ненужное из выгруженного ранее списка в статусе Installed.

У нас под нож пошли:

1. Языковые пакеты:

· language.handwriting~~~en-us~0.0.1.0;

· language.ocr~~~en-us~0.0.1.0;

· language.speech~~~en-us~0.0.1.0;

· language.texttospeech~~~en-us~0.0.1.0.

2. MathRecognizer~~~~0.0.1.0 (управление математическим вводом).

3. Media.WindowsMediaPlayer~~~~0.0.12.0.

4. OpenSSH.Client~~~~0.0.1.0 (в образе старая версия с уязвимостями, а для LTSC обновления не выпускалось, проще отдельно поставить при необходимости).

5. XPS.Viewer~~~~0.0.1.0 (кто-то им пользуется вообще? Если потребуется — можно будет включить потом отдельно).

Да, мы перечислили все функции, включённые по умолчанию, кроме Language.Basic~~~en-US~0.0.1.0, но она нам нужна.

Для включения похожая команда:

dism.exe /image:c:\image\mount /add-capability /capabilityname:language.basic~~~ru-ru~0.0.1.0

Конкретно эта команда, кстати, вернёт ошибку, так как в en-образе нет других языков, кроме английского. Их добавляем отдельно другим способом:

· скачиваем образ LanguagePack;

· монтируем в виртуальный привод;

· поскольку нам нужен только один файл Microsoft-Windows-Server-Language-Pack_x64_ru-ru.cab, то копируем его в папку msu;

· применяем команду (мы с ней раньше сталкивались — этот пакет, кстати, при необходимости можно внедрять при обновлении):

dism.exe /image:c:\image\mount /add-package /packagepath:c:\image\msu\microsoft-windows-server-language-pack_x64_ru-ru.cab

Если после этой команды вы снова выгрузите список возможностей, то увидите, что теперь там текст на русском языке. Но этого недостаточно. В установленной системе делаем следующее:

1. Жмём Win+X или правой клавишей мыши по Пуску, выбираем Settings -> Time & Language -> Language -> Add a language.

2. Находим русский язык в списке:

3. Жмём Next — Install.

Эту операцию можно проделывать и без внедрения русского языка в образ. Даже при отсутствии интернета появится русская раскладка — просто система будет пытаться скачивать отсутствующие компоненты. Если вас не напрягает:

Шаг 6: включаем/удаляем дополнительные компоненты

Перейдём к дополнительным компонентам, которые можно активировать в образе. Или удаляем их из образа, чтобы сэкономить место.

1. Выгружаем список всех доступных компонентов:
dism /image:c:\image\mount /get-features /format:table > c:\image\features.txt

2. Для просмотра документа выбираем редактор, который позволяет выставить кодировку OEM866 (если вы внедрили в образ русский язык). У компонента может быть один из трёх статусов: Включён, Отключён, Отключён с удалением полезных данных.
Для третьего статуса: для его повторной установки потребуется указывать источник установки (в образе установочных файлов уже нет).

3. Обычно мы устанавливаем TelnetClient. Этот способ проверки доступности tcp-портов известен пользователям намного лучше, чем powershell-командлет TestNetworkConnection (tnc): dism /image:c:\image\mount /enable-feature /featurename:telnetclient

4.  Так отключаем ненужные компоненты:
dism /image:c:\image\mount /disable-feature /featurename:mediaplayback

5. Есть ещё три необязательных для работы сервера компонента, поэтому удаляем или оставляем их на ваше усмотрение:

· WindowsServerBackupSnapin;

· Printing-XPSServices-Features;

· SystemDataArchiver.

6. C дополнительным ключом /remove переводим компонент в стадию Отключён с удалением полезных данных, тем самым экономя место: dism /image:c:\image\mount /disable-feature /featurename:windows-defender /remove

Таким нехитрым способом мы облегчаем образ, оставив только установленные компоненты. Но мы так делать, разумеется, не будем, поскольку образ затачивается не под конкретный сервер. Если вы пойдёте по этому пути, то определить, какие компоненты придётся устанавливать с родного образа, можно вот так:

1. В оснастке Server Manager (Диспетчер серверов) выберите Manage — Remove Roles and Features (Управление — удалить роли и компоненты)

2. В списке ролей/компонентов у пунктов, удалённых из образа, нет надписи «Not installed» («Не установлено») при отсутствующей галочке.

Ещё один способ уменьшить образ (и итоговый размер установки Windows) — подчистить WinSxS: dism /image:c:\image\mount /cleanup-image /startcomponentcleanup /resetbase

Эту операцию можно проделать и на уже установленной системе. Только не забудьте указать правильный путь до dism-образа. Для включенной ОС это ключ /online. Из негативных последствий: нельзя откатить обновления и предыдущие версии установленных компонентов и программ. Но в образе и на свежей системе нам это и не нужно.

До проведения этой операции папка mount у нас разбухла примерно до 23 Гбайт. После — уменьшилась до 17,5 Гбайт.

Ещё есть параметр /get-provisionedappxpackages – он нужен для получения списка плиточных приложений. Если же вам надо их удалить, то используем параметр /remove-provisionedappxpackage.

В Windows Server 2019 их нет, поэтому мы не можем показать процесс на живом примере.

Финишная прямая, или Завершаем работу с образом

Здесь шагов не будет. Тем не менее пару команд вам всё-таки предстоит сделать.

Проверим

целостность: dism /image:c:\image\mount /cleanup-image /scanhealth

Отмонтируем образ: dism /unmount-image /mountdir:c:\image\mount /commit

Итоговый размер install.wim — 5,9 Гбайт (в нашем случае). Есть один способ сделать его ещё меньше — конвертация в формат esd:

dism /export-image /sourceimagefile:c:\image\iso\sources\install.wim /sourceindex:1 /destinationimagefile:c:\image\iso\sources\install.esd /compress:recovery

В итоге файл получился размером 3,23 Гбайт.

Формат esd даёт вам не только преимущества в виде меньшего размера, но и недостатки:

 — Его нельзя смонтировать в папку, поэтому предварительно приходится конвертировать в wim: dism /export-image /sourceimagefile:c:\image\iso\sources\install.esd /sourceindex:1 /destinationimagefile:c:\image\iso\sources\install.wim

 — Ставится только на диск с разметкой GPT.

Отступление. Необходимо указать индекс — сразу все редакции сжать не получится, их надо добавлять в тот же esd-файл отдельной командой. Есть несколько степеней сжатия, но recovery сжимает лучше всего. На выходе получили файл install.esd размером чуть больше 3 Гбайт (у нас одна редакция). Степень сжатия потрясающая.

Старый install.wim лучше пока не удалять. Если вам потребуется переделывать что-то, то этап конвертации из esd в wim уже не нужен. Но вынести за пределы папки iso надо (например, в папку C:\image\backup), потому что настала пора упаковать всё это в установочный образ диска. Хотя, если у вас установка будет с флешки, достаточно скопировать на неё все файлы как есть и не надо делать из неё загрузочную (только отформатировать в FAT32). Конвертируем в iso, для этого сначала в консоли выполняем переход в папку с утилитой osdimg (иначе в команде пришлось бы указывать полные пути до файлов): cd c:\program files (x86)\windows kits\10\assessment and deployment kit\deployment tools\amd64\oscdimg

Теперь выполняем саму команду: oscdimg -bootdata:2#p0,e,befisys.bin#pEF,e,betfsboot.com -u1 -udfver102 c:\image\iso c:\image\w19mar24en.iso

Итого: файл получился размером около 4 Гбайт — это больше гигабайта разницы с официальным образом, где нет актуальных обновлений, .Net Framework 4.8 и русского языка.

Телодвижения после установки ОС

Итак, мы поставили с подготовленного образа систему и обнаружили, что что-то забыли настроить. Не беда! На выручку приходит Sysprep.

1. На установленной ОС настраиваем, устанавливаем, удаляем всё, что требуется. В общем, делаем всё, что мы делали долго и через консоль/реестр, только быстро и с интерфейсом Windows (немного душноты: мы не зря советовали вам до конца дочитать).

2. К виртуальной машине (если всё делается на ней) монтируем второй диск. По нашим оценкам, 10 Гбайт будет достаточно. На этом этапе создаём раздел на диске. Примечание: в противном случае потом придётся делать через diskpart.

3. Открываем в проводнике C:\windows\system32\sysprep.

4. Запускаем Sysprep.exe. В появившемся окне выставляем следующие опции:

5. В результате будут удалены все привязки к текущему железу, id и прочие платформозависимые штуки — система будет подготовлена к переносу в другое место.

6. Монтируем загрузочный диск (можно наш переделанный установочный) и перезагружаемся с зажатой клавишей Shift. Иначе система снова установит необходимые драйверы, прочие платформозависимые вещи и перезагрузится в режиме аудита.

7. На первом установочном экране (выбор языка, региона, языка раскладки клавиатуры) жмём Shift+F10 для вызова командной строки.

8. Запускаем diskpart и смотрим, какая буква присвоена нашему второму диску:

9. Выходим из diskpart и выполняем команду: dism /capture-image /capturedir:c:\ /imagefile:d:\install.wim /name:w19mar24en /description:”Windows Server 2019 Standard with March 2024 Updates and NetFx48 with February 2024 Updates, English version.” /compress:max
Вы можете задать свой путь до файла, имя файла, имя и описание. Но помните, что для экранирования символов (пробел, слеш, прочие символы) весь текст надо заключать в кавычки.
Захват в образ esd не поддерживается.
У нас файл получился размером 5,3 Гбайт.

Последнее примечание про полезные параметры:

· /apply-image — применение образа к диску (то, что делает установщик Windows). Можно, например, отформатировать диск С через открытую командную строку (format c: /fs:ntfs) и из нашего нового install.wim восстановить всё как было (заодно и проверим корректность сформированного файла): dism /apply-image /imagefile:d:\install.wim /applydir:c:\ /index:1

· Но боже упаси вас форматировать весь диск — так вы потеряете загрузочный раздел, который восстановить, конечно, можно, но дольше, и это уже выходит за рамки данной статьи. /append-image — добавление образов в файл (дополнительных редакций или каких угодно ещё других образов). Не рекомендуется при сильно отличающихся, так как итоговый файл будет распухать (например, русская и английские версии в одном файле).

После этого вы вольны делать что угодно с получившимся файлом. Лично мы его конвертировали в esd и создали новый файл iso — теперь можно устанавливать полностью готовую ОС за 10–15 минут. Ну или обновлять с предыдущих версий (2012–2016). На этом всё – теперь вы можете самостоятельно и более подробно изучать тему создания собственных сборок. Мы, например, намеренно не стали рассказывать про файл ответов. Для этого напишем другой текст.

Привет друзья! Во всех дистрибутивах Windows 10, которые можно скачать на официальном сайте Майкрософт ещё три года назад, находился файл-образ операционной системы под названием install.wim и это образ диска, в котором в сжатом состоянии находятся файлы операционной системы. В процессе установки Windows все файлы разархивируются из образа install.wim на диск (C:), по большему счёту, это основной этап установки операционной системы на наш компьютер, но в последнее время во всех дистрибутивах Windows 8.1, Windows 10 вместо файла install.wim находится файл install.esd и средство Dism отказывается монтировать этот файл в какую-либо папку, а это значит, что интегрировать в дистрибутив Windows 10 драйвера, обновления и производить другие операции с образом системы просто нечем! Выход из ситуации конвертировать файл install.esd в install.wim и дальше просто работать с файлом install.wim. Произвести конвертацию можно несколькими способами. Также в статье я отвечу на такие вопросы:
1. Чем отличается файл install.esd от файла install.wim
2. Есть ли инструменты у Майкрософт для проведения конвертации install.esd в install.wim или искать программы сторонних разработчиков? 
3. Можно ли после конвертации использовать в дистрибутиве Windows 10 файл install.wim вместо install.esd или нужно будет делать обратную конвертацию файла install.wim в install.esd?

Конвертация install.esd в install.wim

  1. Как конвертировать файл install.esd в install.wim
  2. Ещё один простой способ конвертации файла install.esd в install.wim с помощью командной строки
  3. MSMG ToolKit или создаем свой установочный дистрибутив Windows 10. Также в статье приведён пример удаления из дистрибутива встроенных в Windows 10 приложений и конвертация файла-образа install.esd в install.wim и наоборот
  4. Как интегрировать драйвера в дистрибутив Windows 8.1, Windows 10, при условии наличия в ISO-образе операционной системы файла Install.ESD
  5. Как редактировать файл образ install.wim
  6. Интеграция обновлений в дистрибутив Windows 10
  7. Замена файла install.esd на загрузочной флешке Win 8.1 файлом install.wim из дистрибутива Windows 7. В итоге у нас получилась загрузочная флешка Windows 8.1 с файлом-образом Win 7 — install.wim. Данная операция нужна для установки Win 7 на современные компьютеры
  8. Интеграция драйверов USB 3.0 в дистрибутив Windows 7 при помощи Dism
  9. Создание собственного настроенного дистрибутива Windows 10. Способ для опытных пользователей

     Рекомендуем другие статьи по данной теме

Заметили ошибку

Выделите и нажмите Ctrl+Enter

Комментарии (0)

Комментариев пока-что нет

Но! Вы можете стать первым. Поделитесь своим впечатлением о статье или задайте свой вопрос!

,

In previous tutorials I mentioned the way to convert «Install.ESD» to «Install.WIM» and how to extract an «install.wim» image file, in order to get the correct install.wim Windows image to repair Windows 10. In this tutorial you’ll find detailed instructions to convert install.wim to install.esd, in order to use it with DISM to repair Windows or to put it in a USB drive to install Windows.

This tutorial contains several methods to export install.esd from install.wim or vice versa (install.wim from install.esd) in Windows 10/8/8.1.

How to convert install.WIM to install.ESD or install.ESD to install.WIM.

Method 1. Convert install.wim to install.esd with DISM.
Method 2. Export INSTALL.ESD from INSTALL.WIM with ESD2WIM-WIM2ESD-v2
Method 3. Extract Install.WIM to Install.ESD with WinReducer ES-WIM converter.
Method 4. Convert Install.WIM to Install.ESD with NLITE.
Method 1. Convert install.wim to install.esd with DISM.

The first method to convert install.wim to esd is, by using the DISM tool.

1. Attach or mount* the Windows installation media on your system if you want to convert install.wim to install.esd from a Windows ISO image, or just copy the install.wim image to the root folder of drive C:.

* Note: If you are using Windows 8/8.1, then read this article on: How to mount ISO files.

2. Right click at Start menu and select Command Prompt (Admin).
3. Then type the following command and press Enter, in order to find which images the install.wim file contains *

  • dism /Get-WimInfo /WimFile:X:\FullImagePath\install.wim

* Note: Change the «X» drive letter and the full image path (location) of the install.wim (or the «install.esd») file that you want to convent to ESD (or WIM). At this example we want to extract the install.wim file from a Windows installation media attached at drive D:, so the command will be:

  • dism /Get-WimInfo /WimFile:D:\sources\install.wim

4. According to the Windows version that you want to extract/convert to .esd, take note of the index number. *

* e.g.: At the screenshot below, the Windows 10 Home Edition has the Index number «3».

install.wim to install.esd

5. Then give the command below to convert the install.wim file to install.esd.*

  • dism /export-image /SourceImageFile:»X:\FullImagePath\install.wim» /SourceIndex:IndexNumber /DestinationImageFile:»C:\install.esd» /Compress:recovery /CheckIntegrity

* Note: At the above command don’t forget to change the location (Full Image path) of the install.wim file and the IndexNumber of the Windows version that you want to extract according your case. If the source install.wim file contains only one version of Windows then the Index number is «1».

e.g. For this example we want to extract the Windows 10 Home edition (Index number=3), so the command will be:

  • dism /export-image /SourceImageFile:»D:\sources\install.wim» /SourceIndex:3 /DestinationImageFile:»C:\install.esd» /Compress:recovery /CheckIntegrity

Convert Install.WIM to Install.ESD

6. When the process is completed you should find the install.esd image file on the root folder of drive C: (C:\install.esd).

Method 2. Export INSTALL.ESD from INSTALL.WIM with ESD2WIM-WIM2ESD-v2.

The second tool to convert install.wim to esd is the ESD2WIM-WIM2ESD converter.

1. Copy the «install.wim» (or the «install.esd») file to the root folder of drive C:\.
2. Download ESD2WIM-WIM2ESD converter for here.
3. Extract the compressed «ESD2WIM-WIM2ESD-v2.zip» file.
4. From the extracted folder right click at «ESD2WIM-WIM2ESD» and select Run as administrator.

export esd to wim ESD2WIM-WIM2ESD

5. Then type the full path of the «install.wim» file. (e.g. «C:\install.wim»)

convert esd to wim ESD2WIM-WIM2ESD

6. From the listed export options, type the corresponding option number according the index or indexes that you want to export. *

* e.g. If the install.wim file contains multiple Windows versions and you want to export only the one of them, type «3».

image

7. Then type the Index number of the Windows version that you want to export and press Enter. *

*e.g. For Windows 10 Home, type «3» and press Enter.

convert wim to esd ESD2WIM-WIM2ESD

8. Finally wait until the extraction completed. When this done, you can find the install.esd file in the ESD2WIM-WIM2ESD-v2 folder.

Method 3. Extract Install.WIM to Install.ESD with WinReducer ES-WIM converter.

The third method to extract an install.wim file to Install.ESD, or vice versa, is by using the WinReducer ES-WIM converter.

1. Copy the «install.wim» (or the «install.esd») file to the root folder of drive C:\.
2. Download WinReducer ES-WIM converter.
3. Extract the «winreducereswimconverter.zip» file.
4. Open the extracted folder and double click at «WinReducerESWimConverter.exe»
5. If you have a license select YES otherwise click NO.

6. Click OK at Configuration Error message.

Extract Install.WIM to Install.ESD

7. Click Software installation.

WIM ESD WinReducer ES-WIM converter

8. Set to ON the 7zip, Dism, oscdimg & SetACL and then click Download.

ESD to WIM WinReducer ES-WIM converter

9. When the download is completed, choose OK and then click NO at «Activate license» window.

10. At WinReduser ES –WIM converter window, click Open and select the install.wim file that you want to convert to ESD

convert install.wim to install.esd

11. After selecting the WIM file, wait a few seconds until the program read the WIM file.
12. When this done, click the WIM –> ESD option and then select which version of Windows you want to extract from the WIM file.

export install.wim to install.esd

13. Finally click Convert.

export install.esd to install.wim

14. Finally wait until the extraction completed. When this done, you can find the install.esd file on the rood folder of drive C:\ (C:\install.esd).

Method 4. Convert Install.WIM to Install.ESD with NLITE.

The final method to export install.wim to install.esd is by using the NTLite utility. *

* Note: Keep in mind that NTLITE program use many resources to make the conversion.

1. Download and install NTLITE on you system.
2. Launch NTLITE,
select the Free license and click OK.

3. Copy the «install.wim» (or the «install.esd») file that you want to convert to the root folder of drive C:\.

4. At Image tab: Click the small arrow at the Add button and select Image file (WIM, ESD, SWM).

export esd to wim NTLITE

5. Select the install.wim file that you convert to esd and click Open.

export wim to esd NTLITE

6. Carefully read the warning message and click OK. *

* Note: If you want to create a bootable ISO image after the extraction, you must copy the entire Windows setup DVD to a folder on your local disk.

convert wim to esd NTLITE

7. At NLITE you will see all Windows versions that the install.wim file contains. Right click at the version that you want to convert to ESD or to WIM and select Export > ESD (or WIM).

image

8. Click OK at the next window

image

9. Then specify a location for the install.esd file and click Save.

export wim to esd NLITE

10. Finally wait until the extraction completed.

That’s it! Let me know if this guide has helped you by leaving your comment about your experience. Please like and share this guide to help others.

If this article was useful for you, please consider supporting us by making a donation. Even $1 can a make a huge difference for us in our effort to continue to help others while keeping this site free:

  • Author
  • Recent Posts

Konstantinos is the founder and administrator of Wintips.org. Since 1995 he works and provides IT support as a computer and network expert to individuals and large companies. He is specialized in solving problems related to Windows or other Microsoft products (Windows Server, Office, Microsoft 365, etc.).

В этом гайде мы разберемся как создать собственный установочный образ с Windows 10/11 с предустановленными программами, необходимыми файлами, другими настройками среды и приложений. Превалирующий сейчас подход предполагает развертывания чистого образа Windows, после чего на компьютер устанавливаются необходимые программы: через GPO, командами загрузки и установки приложений в
AutoUnattend.xml
или в скрипте
%WINDIR%\Setup\Scripts\SetupComplete.cmd
, логон скриптами Windows, средствами автоматизации (SCCM, Intune, Ansible, и пр). Однако в некоторых случаях особенности бизнеса требуют, чтобы на компьютер сразу разворачивался готовый образ Windows со всеми необходимыми программами.

Содержание:

  • Подготовка эталонного образа Windows с установленными программами
  • Захват настроенного образа Windows с помощью DISM
  • Замена оригинального образа Windows (Install.wim) на USB флешке

Процесс создания собственного установочного образа Windows с предустановленным софтом будет состоять из следующих этапов:

  1. Развертывание чистой Windows на эталонном компьютере (виртуальной машине);
  2. Вход в режим аудита, установка необходимых приложений, настройка окружения;
  3. Загрузка в среде WinPE и захват WIM образа Windows с помощью DISM;
  4. Замена оригинального install.wim на установочной USB флешке (ISO образе).

Если вы развертываете Windows на компьютеры в корпоративной сети, удобнее использовать MDT, который позволяет добавлять/обновлять программы в установочный процесс без модификации каждый раз установочного WIM образа.

Подготовка эталонного образа Windows с установленными программами

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

Итак, начните с получения оригинального установочного образа Windows 10/11 в виде ISO файла или сразу запишите его на загрузочную USB флешку с помощью Media Creatin Tool или Rufus.

Выполните ручную установку Windows и на этапе OOBE (когда вам предлагают выбрать региональные настройки и создать учетную запись), нажмите
CTRL + SHIFT + F3
. Это переведет компьютер в режим аудита (Audit Mode), в котором будет выполнен автоматический вход под встроенной учётной записью Administrator.

Загрузка Windows в режиме аудита

После появления рабочего стола, сверните окно утилиты sysprep (не закрывая его) и можете приступить к установке программ, обновлений, настройке нужных параметров Windows.

В этом примере я воспользуюсь пакетным менеджером WinGet для установки программ в Windows:

winget install --id=7zip.7zip -e ; winget install --id=Notepad++.Notepad++ -e ; winget install --id=VideoLAN.VLC -e ; winget install --id=WinDirStat.WinDirStat -e ; winget install --id=dotPDNLLC.paintdotnet -e ; winget install --id=IrfanSkiljan.IrfanView -e ; winget install --id=Microsoft.PowerToys -e

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

настройка образа Windows

Настройте ярлыки на рабочем столе, плитки в меню Start, фоновые рисунки, заставки, цветовые схемы и прочее. Настройте параметры локальной групповой политики с помощью редактора
gpedit.msc
. Эти настройки в дальнейшем будут применены ко всем пользователям на компьютерах, которые вы развернете из вашего образа.

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

Удалите имеющиеся теневые копии и точки восстановления:

vssadmin delete shadows /All /Quiet

Очистите неиспользуемые файлы компонентов и обновлений в папке WinSxS:

Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase

Удалите загруженные файлы обновлений Windows:

del %windir%\SoftwareDistribution\Download\*.* /f /s /q

Для очистки папок Temp, Downloads и кэша в профиле пользователя можно использовать этот PowerShell скрипт.

Выполните очистку диска с помощью утилиты cleanmgr:

Cleanmgr /sagerun:1

Очистите логи Windows:

for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"

Очистите корзину:

Clear-RecycleBin -Force

Чтобы применить настройки текущего пользователю к шаблонному пользователю Default, создайте файл ответов unattend.xml в каталоге C:\Windows\System32\Sysprep:

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="specialize">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CopyProfile>true</CopyProfile>
</component>
</settings>
</unattend>

Осталось подготовить ваш настроенный образ Windows к развертыванию с помощью утилиты sysprep.exe. Разверните окно sysprep и выберите в ней опции:

  • Enter System Out-of-Box Experience (OOBE)
  • Generalize
  • Shutdown

sysprep - подготовка образа

После завершения этой операции, компьютер выключиться автоматически.

Захват настроенного образа Windows с помощью DISM

На этом этапе нужно выполнить офлайн захват образа установленной Windows в WIM файл и поместить его на отдельный диск (мы подключили отдельный диск емкостью 60 Гб к компьютеру)

Загрузите компьютер с эталонной версией Windows с загрузочного диска в среде WinPE (WinRE). Можно загрузиться с установочной USB флешки с Windows и на этапе начала установки нажать
Shift+F10
, чтобы открыть командную строку.

Вам нужно идентифицировать буквы диска, которые назначены разделу с Windows и чистому разделу, куда будет скопирован WIM файл. Выполните команды:

diskpart
list disk
exit

diskpart - определилить буквы дисков

В нашем примере диску с Windows присвоена бука E:, а чистому диску – буква D:.

Чтобы выполнить захват офлайн образа Windows на диске E и поместить полученный WIM образ на D, выполните команду:

dism /capture-image /imagefile:D:\install.wim /capturedir:E:\ /ScratchDir:D:\ /name:"MyWinImage" /compress:maximum /checkintegrity /verify /bootable

В моем случае захват образа длился около 30 минут.

dism /capture-image

Замена оригинального образа Windows (Install.wim) на USB флешке

После того, как вы захватили ваш настроенный образ Windows, вы можете заменить файл с оригинальным установочным образов install.wim или install.esd (ESD это формат с максимальным сжатием образа WIM) на установочной USB флешке (каталог
\sources
).

В моем случае, я переименовал старый образ в install.esd_bak и скопировал на флешку новый образ install.wim.

замена оригинального install.wim файла на установочной флешке

Обратите внимание, что размер WIM образа с предустановленными программами существенно увеличился (с 4 до 10 Гб).

Если у вас USB флешка с FAT32 для установки Windows на UEFI компьютерах, вы не сможете разместить файл больше 4 Гб на этой файловой системе. В этом случае большой WIM файл нужно разбить на несколько мелких SWM:

Dism /Split-Image /ImageFile:D:\sources\install.wim /SWMFile:c:\tmp\install.swm /FileSize:3500

В данном случае DISM создаст четыре файла install.swm, install2.swm, install3.swm, install4.swm, которые нужно скопировать в папку
\sources
. Установщик Windows сам соберет SWM файлы при развертывании операционной системы.

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

Get-Package

развертывание образа windows с предустановленными программами

Недостаток такого подхода с развёртыванием преднастроенного образа Windows в том, что для обновления любого приложения в образе вам придется пересобрать его заново.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Лучший менеджер загрузок для windows 10
  • Сброс к заводским настройкам windows 10 что останется
  • Dualshock 3 driver for windows 10
  • Как добавить язык в windows 10 на панели задач
  • Что является стандартными программами windows