Установка Windows 7 по сети при помощи Microsoft Windows AIK

2013-06-06

Установка Windows 7 по сети при помощи Microsoft Windows AIK[

](http://habrahabr.ru/sandbox/ “Перейти в песочницу”)

(C)пер с Хабрахабра: http://habrahabr.ru/post/171017/

Не так давно столкнулся с ситуацией, которая в принципе не вызывает особых проблем у системных администраторов. Появилась необходимость обновления ОС на многочисленных компьютерах организации, что в свою очередь все же вызвало ряд некоторых проблем, решения которых приходилось собирать по частям, а так же допиливать большую часть всего процесса самому о чем собственно я и хочу вам рассказать.
Данными проблемами стали ограничения в наличии одного привода DVD-ROM, одного дня свободного времени, а так же порядка двадцати компьютеров на которые необходимо было установить Windows 7 со всем набором необходимых драйверов, программ etc.
При поиске информации в Google по данному вопросу не нашлось ничего что работало бы без косяков или работало вообще. Но начнем по порядку.

Подготовка образа операционной системы

Для простоты подготовки боевой ОС под основу была взята Oracle VirtualBox последней версии, а так же Windows 7 x64 Профессиональная. Первое что необходимо сделать — установить и настроить Windows 7 на виртуальной машине. Для этого в процессе добавления VM создаем два виртуальных жестких диска. Один для установки и настройки на нем Windows 7, второй для последующего сохранения на него образа настроенной системы. Так же необходимо выполнить установку дополнения гостевой ОС Virtualbox — Virtual Machine Additions и создать общую папку для дальнейшего копирования созданного образа на физическую машину.
После установки на VM всей начинки, переходим к этапу подготовки системы с помощью утилиты sysprep, находящуюся в корне системы нашей VM:

%windir%\system32\sysprep\sysprep.exe

Для подготовки системы к созданию настроенного образа необходимо задать утилите параметры:

  1. Переход в окно приветствия системы (OOBE) — этот режим будет активирован при следующем запуске системы. Запускает компьютер в режиме экрана приветствия.
  2. Установить галочку «Подготовка к использованию» — подготавливает установку Windows перед созданием образа. Идентификатор безопасности (SID) обнуляется, точки восстановления системы сбрасываются, журналы событий удаляются.
  3. Параметры завершения работы «Завершение работы» — по окончанию работы утилиты система завершит свою работу.

Не следует запускать ОС до сохранения образа системы, так как во время следующего запуска компьютера начинает работать специализированный этап настройки. Создается новый идентификатор безопасности (SID) и сбрасываются часы активации Windows.

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

/unattend: указывается путь к файлу ответов

В файле ответов необходимо указать параметр PersistAllDeviceInstalls (начиная с Windows 8 также есть параметр DoNotCleanUpNonPresentDevices):

<PersistAllDeviceInstalls>true</PersistAllDeviceInstalls>
<!-- Windows 8 и выше <DoNotCleanUpNonPresentDevices>true</DoNotCleanUpNonPresentDevices> -->

После выполнения очистки система автоматически выключится. Приступаем к следующему этапу.

Установка и настройка Windows AIK + PE

Скачиваем и устанавливаем пакет автоматической установки Windows (AIK) для Windows 7. После запуска setup.exe выбираем пункт «Установка Windows AIK». Особых проблем при установке возникнуть не должно.

Создание и настройка образа Windows PE

Windows PE — среда предустановки использующаяся для подготовки к установке OC. С помощью Windows PE мы будем захватывать системный том в wim-образ с помощью утилиты imagex и их сохранять его на другой раздел жесткого диска.
В данном случае рассматривается создание диска с 64-разрядной версией Windows PE. Если вы создаете диск с 32-разрядной версией Windows PE, вам необходимо будет заменить во всех командах архитектуру (amd64 на х86).

В меню Пуск запустите Все программы > Microsoft Windows AIK > Командная строка средств развертывания (Deployment Tools Command Prompt) — все последующие команды будут вводиться в это окно командной строки. Требуется запуск от имени администратора.
Копируем файлы образа Windows PE

copype.cmd amd64 d:\winpe_image

Для изменения скопированного образа Windows PE его необходимо подключить командой

dism /Mount-Wim /WimFile:d:\winpe_image\winpe.wim /index:1 /MountDir:d:\winpe_image\mount

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

xcopy "%ProgramFiles%\Windows AIK\Tools\amd64\imagex.exe" d:\winpe_image\iso\

Так же по желанию можно сразу подготовить список исключений — файлов и папок, которые не будут включаться в сохраняемый образ. Создайте в любом текстовом редакторе файл Wimscript.ini и укажите в нем файлы и папки, которые вы хотите исключить из образа. Файл Wimscript.ini размещается в одной папке с imegex.
По умолчанию imagex использует следующие исключения:

[ExclusionList]
\$ntfs.log
\hiberfil.sys
\pagefile.sys
"\System Volume Information"
\RECYCLER
\Windows\CSC
[CompressionExclusionList]
*.mp3
*.zip
*.cab
\WINDOWS\inf\*.pnf

Теперь необходимо сохранить образ командой:

dism /unmount-Wim /MountDir:d:\winpe_image\mount /Commit

Вся подготовительная работа велась с файлом winpe.wim, а для загрузочного диска Windows PE используется файл boot.wim, расположенный в папке winpe_x86\ISO\sources. Поэтому необходимо заменить файл boot.wim файлом winpe.wim, выполнив при этом переименование.

xcopy /y d:\winpe_image\winpe.wim d:\winpe_image\ISO\sources\boot.wim

Для создания образа выполняем команду:

oscdimg -n -bd:\winpe_image\etfsboot.com d:\winpe_image\ISO d:\winpe_image\winpe_image.iso
Создание образа Windows 7

Необходимо сохранить образ нашей ОС с помощью утилиты imagex. Грузимся в VM с образа winpe_image.iso который мы создали ранее. После удачной загрузки пред нами открывается окно командной строки, в ней мы как раз и будем работать.
Захват и сохранение образа производится одной командой

F:\imagex.exe /capture E: D:\install.wim "Windows 7 x64" /compress maximum

/capture E: — захват раздела E:
D:\install.wim — местоположение и имя сохраняемого WIM-файла.
«Windows 7 x64» — имя образа. Имя должно быть заключено в кавычки.
/compress maximum — тип сжатия файлов в образе(необязательно). Для параметра /compress допустимы значения maximum (максимальное сжатие), fast (быстрое сжатие) и none (без сжатия). Если параметр не указан, используется быстрое сжатие. Максимальное сжатие позволяет уменьшить размер образа, но захват занимает больше времени, чем при быстром сжатии. Скорость распаковки образа практически не зависит от типа сжатия. Остается подождать 20-30 минут и образ будет готов.

После сохранения образа на втором диске виртуальной машины, для дальнейшей работы его нужно перенести на физическую ОС. Запускаем виртуальную машину снова и завершаем установку Windows, прерванную на этапе OOBE. Если вы уже установили Virtual Machine Additions то теперь необходимо скопировать файл из виртуальной машины на физическую с помощью общей папки (shared folder), которую можно указать в настройках виртуальной машины.

Настройка загрузочного образа Windows 7

На данном этапе снова запускаем «Командную строку средств развертывания» и копируем файлы образа Windows PE:

copype.cmd amd64 d:\winpe

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

imagex /mountrw winpe.wim 1 mount

Windows PE смонтирован и в папке d:\winpe Вы можете найти файл winpe.wim.

Настройка автозапуска установки Windows.

Чтобы не создавать вручную виртуальный диск и не запускать установку вручную, можно отредактировать файлик startnet.cmd и startnet2.cmd. Находятся они d:\winpe\mount\windows\system32.

startnet.cmd

wpeinit
%windir%\system32\startnet2.cmd

startnet2.cmd

chcp 1251
netsh interface ip set address name="Подключение по локальной сети" source=dhcp
chcp 866
pause
net use z: \\192.168.0.1\win7 /user:install install
cd /d Z:\sources
setup.exe

Команда net use производит подключение к компьютеру с IP адресом 192.168.0.1 (наш компьютер-сервер) к расшаренному каталогу c именем win7 на правах пользователя install c таким же паролем.
Создать нужного нам пользователя можно такой командой в cmd

net user install install /add /passwordchg:no

Выполняем следующие инструкции:

  • На компьютере-сервере создаем корневой каталог для загрузки (у меня это d:\win7\), а в нем папку boot.
  • Расшариваем папку win7, то есть даем общий доступ к ней всем пользователям.
  • Копируем всю папку sources с установочного диска Windows 7 в d:\win7.
  • Заменяем файл install.wim в каталоге d:\win7\sources на файл, который скопировали ранее с виртуальной машины (готовый образ Windows 7)

Теперь необходимо скопировать дополнительные файлы для установки Windows 7.
Cмонтируем образ WinPE:

imagex /mountrw winpe.wim 1 mount

Копируем:

xcopy d:\winpe\mount\windows\boot\pxe\pxeboot.n12 d:\win7
xcopy d:\winpe\mount\windows\boot\pxe\bootmgr.exe d:\win7
xcopy d:\winpe\winpe.wim d:\win7\boot
xcopy d:\winpe\iso\boot\boot.sdi d:\win7\boot

Размонтируем образ командой:

imagex.exe /unmount d:\winpe\mount

Далее необходимо создать файл BCD (boot configuration data) в каталоге d:\win7\boot. Для упрощения этого процесса воспользуемся файлом createbcd.cmd. Создаем файл d:\winpe\createbcd.cmd и вписываем в него:

bcdedit -createstore %1\BCD
bcdedit -store %1\BCD -create {ramdiskoptions} /d "Ramdisk options"
bcdedit -store %1\BCD -set {ramdiskoptions} ramdisksdidevice boot
bcdedit -store %1\BCD -set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
for /F "tokens=2 delims={}" %%i in ('bcdedit -store %1\BCD -create /d "MyWinPE Boot Image" /application osloader') do set guid={%%i}
bcdedit -store %1\BCD -set %guid% systemroot \Windows
bcdedit -store %1\BCD -set %guid% detecthal Yes
bcdedit -store %1\BCD -set %guid% winpe Yes
bcdedit -store %1\BCD -set %guid% osdevice ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}
bcdedit -store %1\BCD -set %guid% device ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}
bcdedit -store %1\BCD -create {bootmgr} /d "Windows BootManager"
bcdedit -store %1\BCD -set {bootmgr} timeout 30
bcdedit -store %1\BCD -set {bootmgr} displayorder %guid%

Запускаем командой с правами администратора:

createbcd.cmd d:\win7\boot

Если у вас возникнут проблемы с драйверами, то их можно добавить так же в «Командной строке средств развертывания»:
Монтирование образа для добавления драйверов

dism /mount-wim /wimfile:winpe.wim /index:1 /mountdir:mount

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

dism /image:mount /add-driver /driver:<каталог с драйверами либо файл с расширением inf>

После того как вся работа с образом закончена его необходимо размонтировать

dism /unmount-wim /mountdir:mount /commit

Настройка сервера TFTP и DHCP

Для создания этих серверов необходимо скачать программу TFTPD32.
Задачей DHCP сервера является предоставить информацию удаленному компьютеру о свободном IP адресе, маски сети, а также имя загружаемого файла и адрес TFTP сервера, где этот файл находиться. Задача TFTP сервера является обеспечение передачи необходимых для загрузки файлов удаленному компьютеру.

Запускаем программу и выбираем сначала папку d:\win7, а немножко ниже — IP сетевой карты. В моем случае компьютер имеет IP 192.168.0.1.
Заходим в настройки (кнопка Settings посредине внизу) и постепенно заполняем вкладки:

  • Вкладка GLOBAL — cтавим галочки только напротив TFTP Server, DHCP Server и Enable IPv6.
  • Вкладка TFTP — выбираем папку d:\win7.
  • TFTP Security — Standart.
  • TFTP configuration — оставляем как есть.
  • Advanced TFTP Options — должны стоять галочки напротив: Option negotiation, Show Process bar и Translate Unix file names.
  • Вкладка DHCP
  • IP pool starting address указывает, с какого IP адреса начать выдачу адресов. В моем примере выдача IP адресов начнется с 192.168.0.2.
  • Size of pool указывает количество IP адресов, которые будут динамически выделяться. Я установил значение в 30.
  • Boot File сообщает удаленному компьютеру имя файла, который необходимо использовать в качестве загрузчика. Устанавливаем значение в pxeboot.n12.
  • Mask, указывает маску сети. В нашем случае это 255.255.255.0. Остальные значения параметров оставляем по умолчанию.
  • Ping address before assignation — снять галочку (если у Вас связь компьютер-компьютер без свичей и роутеров).

Теперь нужно включить в BIOS загрузку с сетевой карты и загрузиться с нее. После этого будет получен IP-адрес через DHCP и выполниться pxeboot.n12 — который запустит Windows PE c файла winpe.wim. Сразу после загрузки Windows PE будет автоматически смонтирован каталог win7 и с него запуститься установка. Далее установка проходит точно также как и с диска.

IT worldПолезностиAIKEmbeddedPXEWindowsWindows 7Windows 7 EmbeddedWindows Embedded

Старинные поговорки в полном варианте

Полетал парниша….