Установка 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
Для подготовки системы к созданию настроенного образа необходимо задать утилите параметры:
- Переход в окно приветствия системы (OOBE) — этот режим будет активирован при следующем запуске системы. Запускает компьютер в режиме экрана приветствия.
- Установить галочку «Подготовка к использованию» — подготавливает установку Windows перед созданием образа. Идентификатор безопасности (SID) обнуляется, точки восстановления системы сбрасываются, журналы событий удаляются.
- Параметры завершения работы «Завершение работы» — по окончанию работы утилиты система завершит свою работу.
Не следует запускать ОС до сохранения образа системы, так как во время следующего запуска компьютера начинает работать специализированный этап настройки. Создается новый идентификатор безопасности (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 и с него запуститься установка. Далее установка проходит точно также как и с диска.