среда, 13 сентября 2017 г.

Собственная сборка Windows 7 + Windows AIK + автоматичская устновка через файл ответов + WDS Server Windows 2012



Собственная сборка Windows 7 + Windows AIK + автоматичская устновка через файл ответов + WDS Server Windows 2012 
Итак сегодня я занотирую чтобы не забыть такой момент как развертывание собственных образов через WDS сервер Windows Server 2012 R2. Нашу установку мы разобъем на несколько логических этапов, а точнее на 3:
1)      Создание собственного образа посредством установки чистой ОС на виртуальную машину, установке и настройке программ в режиме sysprep, выключение и захвата образа
2)      Создание файла ответов для автоматической установки образа по сети
3)      Установка WDS сервера и заливка образов
Немного о базовых утилитах
ImageX.exe – утилита для создания образов диска и перегонки их в wim образ, также проверки и разделения образов
Dism.exe – утилита работы с образами, монтирования готовых образов, внедрения драйверов в образ и различных пактов, таких например как telnet клиент, tftp сервер и т.д., настройка региональных параметров и т.д
Oscdimg.exe – это утилита для создания загрузочных образов диска из папок, то есть практически аналог для командной строки более известных программ таких как Nero.

Итак начнем

ЭТАП 1 Создание эталонного образа
1)      Создание и захват образа для этого нам понадобиться VmWare Workstation и Windows AIK, (можно также использовать отдельно стоящий пустой ПК),а также наш набор программ.
Итак первое что мы делаем это устанавливаем нашу операционную систему на виртуальную машину, но НЕ СПЕШИТЕ входить в систему.
·         После установки системы дождитесь окна входа и нажмите CTRL+SHIFT+F3, так мы войдем в режим аудита (sysprep), если этого не сделать то у машин устанавливаемых из данного образа будут одинаковые SIDы, что приведет к не очень хорошим последствиям.
·         Система перезагрузится и выполнит автоматический вход со встроенной учеткой администратора. Не закрывайте окно показанное ниже, все дальнейшие действия такие как установка программ и настройка и системы выполняйте с этим открытым окном . Нам нужно обязательно разбить на 2 диска, на второй диск D виртуальной машины мы будем захватывать наш образ


Если вы все же закрыли это окно то откройте его командой:
%SystemRoot%\system32\sysprep\sysprep.exe /generalize /oobe /shutdown /quiet


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

Для создание загрузочного образа (то есть как бы загрузочного диска с урезанным Windows) нам понадобиться пакет Windows AIK, что мы и делаем устанавливая его. А также создадим папку на диске D:\Windows_etalon\ (Дабы не запутаться для начала в этой папке у нас будет загрузочный образ Windows PE, потом после ненужности Windows PE, мы переименуем папку ISO внутри D:\Windows_etalon\x64_pe в PE_ISO, а в папку ISO поместим оригинальный образ Windows 7 64)

Переходим в  папку у установленным Windows AIK, из командной строки

cd c:\Program Files\Windows AIK\Tools\PETools

И копируем образ Windows PE в эту папку (x64_pe – в корне папки не должно существовать пока, иначе будет ругаться)

copype.cmd amd64 D:\Windows_etalon\

 Туда же скопируем и утилиту imageX для захвата и нарезки образа

copy "c:\Program Files\Windows AIK\Tools\amd64\imagex.exe" D:\Windows_etalon\x64_pe\ISO



Теперь нам нужно скопировать файл boot.wim и переименовать его в boot.wim

copy D:\Windows_etalon\x64_pe\winpe.wim D:\Windows_etalon\x64_pe \ISO\sources\boot.wim

·         Создаем ISO образм с помощью утилиты oscdimg. Все также запускаем командную строку средств развертывания и вводим туда следующее (без пробела после b)

oscdimg -n -b D:\Windows_etalon\x64_pe \etfsboot.com D:\Windows_etalon\x64_pe \ISO d:\winpe_x64.iso

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

Теперь мы грузимся на виртуальной машине (или на отдельно стоящей) с нашего загрузочного образа

Нам нужно проверить какой у нас системный диск с папкой Windows, т.к в Windows PE буквы дисков будут отличаться от тех, которые мы видели в виртуальной машине. Для этого запустим notepad, а потом Файл-Открыть и посмотрим на диски. Когда определились на каком диске установлен Windows, нам необходимо захватить его и сохранить в образе WIM на втором диске у меня он E:



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

"Windows 7 x64"  - имя образа
"My Windows 7 x64" – описание образа


Команда может выполняться довольно длительное время, поэтому пока можем заняться своими делами


Итак у нас на нашем сервере будет создан файл-образ нашей системы install.wim. Что в последствии я рекомендую, если файл нашего образа больше 4-х Гб то при установке могут возникать ошибки, во всяком случае у меня возникали, когда я устанавливал систему непосредственно с образа, для их избежания я рекомендую разбить образ install.wim на несколько частей утилитой imageX  например по 3 Гб. Не волнуйтесь, исходный образ у вас останеться, а также вы получите два или более образов разбитых на указанные части

imagex /split E:\install.wim 3000 /verify /check


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


Выберем наш диск и примонтируем его как Z
Скопруем его например в D:\install.wim

·         Внедрение драйверов в образ
1.       Для начала смонтируем наш образ утилитой DISM
dism /mount-wim /wimfile:d:\install.wim /index:1 /mountdir:d:\mount

index – указываем индекс нашей ОС в образе у нас она одна, но могут быть в образе и несколько, например х64 и х86

2.       Добавляем драйверы в наш образ, при этом учтем что они находяться в D:\drivers
dism /image:d:\ mount /add-driver /driver:d:\drivers /recurse /forceunsigned
/recurse – позволяет добалять драйвера из внутренних подпапок
/forceunsigned – вставляем и подписанные и не подписанные драйвера, пох

3.       Размонтируем наш образ (МОЖЕТ ЗАНЯТЬ ДЛИТЕЛЬНОЕ ВРЕМЯ – не пугайтесь)
dism /unmount-wim /mountdir:d:\win_pex86\mount /commit

в итоге всех этих мозговыносящих манипуляция мы полуили следующую структуру файлов и папко
D:\VmWare\Windows_7_x64_etalon – виртуальная машина с установленным ПО
D:\Windows_etalon\x64_pe – наш WindowsPE образ c которого мы грузанулись и захватили образ нашей виртуалки
D:\install.wim – уже готовый образ нашей вытащенный с нашей вируталки

Теперь нам нужно переименовать папку ISO  в D:\Windows_etalon\x64_pe\ в pe_ISO а в саму папку D:\Windows_etalon\x64_pe\ISO мы заливаем с диска дистрибутив Windows7_x64 (вот так просто берем все на диске и копируем туда)
После копирования просто заменяем файл  install.wim в папке D:\Windows_etalon\x64_pe\ISO\sources на наш подготовленный с диска D:\.
·         Теперь если нужно записываем образ в iso файл или просто заливаем на WDS сервер
·        oscdimg -n -m -o -b D:\Windows_etalon\etfsboot.com D:\Windows_etalon \ISO d:\win7-x64.iso



ЭТАП2 Создание фала ответов для автоматической установки

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

Диспетчер образов системы. Итак для более полного понятия, что же писать в том файле ответов, давайте свпомним как происходит установка windows. Для начала выделим хотя бы пару этапов из памяти
1)      Подготовка к установке – вспомните здесь мы выбираем язык системы на время установки, разбиваем жесткий диск, соглашаемся с пользовательским соглашением
2)      Настройка параметров уже после установки – выбираем время и часовой пояс, раскладку клавиатуры, создаем первого пользователя, параметры Брандмауэра.

Ну эти этапы я выделил не по научному а на своем языке, например чтобы в дальнейшем вы могли понимать, что разбивка диска относиться к этапу подготовки системы или WindowsPE, создание пользователеей к настройке системы или Specialized.
По научному же все этапы приведены ниже
1 windowsPE
Windows PE - это среда предустановки Windows, использующаяся для подготовки к установке операционной системы. На первом проходе производится настройка параметров Windows PE и основных параметров установки Windows. Например, можно сконфигурировать языковые настройки и параметры дисплея, применяющиеся в Windows PE. Что же касается параметров установки Windows, то на этом проходе производится управление разделами жесткого диска (их созданием, форматированием и т. д.), указывается системный образ для установки, а также задается ключ продукта.
2 offlineServicing
Проход для автономного обслуживания. Программа установки Windows распаковывает и устанавливает системный образ, после чего к нему с помощью диспетчера пакетов применяются обновления операционной системы, языковые и другие пакеты, указанные в файле ответов для этого прохода. С помощью этого прохода можно выполнять, например, интеграцию драйверов.
3 generalize
Проход для обобщения системных и пользовательских параметров. Он не задействуется во время ручной установки Windows. Да и во время автоматической установки он также будет пропущен, если переход к нему не задан явно с помощью программы sysprep. Этот проход используется для создания эталонного образа Windows, который впоследствии можно применять для развертывания в организации. Под обобщением подразумевается удаление всех параметров, относящихся к конкретной конфигурации Windows - например, идентификаторов безопасности пользователей (SIDs) и настроек, связанных с установленным в системе аппаратным обеспечением. Обобщение происходит только при выполнении команды sysprep /generalize, которая ведет к выключению системы сразу после применения параметров, указанных для этого прохода.
4 specialize
Проход для применения специализированных настроек. На этом проходе задаются параметры, относящиеся к конкретному компьютеру. Если смотреть с точки зрения использования этого прохода в сочетании с проходом generalize, то именно на этом этапе происходит дальнейшая настройка эталонного образа для различных подразделений организации - например, добавление доменной или региональной информации. Проход specialize можно использовать и независимо - например, указывать в нем ОЕМ информацию или выполнять синхронные команды для внесения изменений в систему.
5 auditSystem
Проход для аудита системы. Первый из двух проходов режима аудита отвечает за применение параметров в контексте системы. В режиме аудита можно устанавливать драйверы и приложения. Этот режим не задействуется во время ручной установки Windows. Переход к нему можно задать с помощью программы sysprep, параметра файла ответов, а также с помощью сочетания клавиш SHIFT+CTRL+F3 во время ручной установки.
6 auditUser
Проход для аудита пользовательских параметров выполняется в контексте пользователя сразу после прохода auditSystem. Для выполнения задач во время шестого прохода необходимо выполнить автоматический вход в систему на пятом. Во время прохода auditUser также можно выполнять установку драйверов и приложений.
7 oobeSystem
Проход для применения параметров OOBE (Out of Box Experience) - серии окон, появляющихся перед первым входом пользователя в Windows на заключительной стадии установки. Этот этап также называется экраном приветствия. Проход oobeSystem выполняется до первого входа пользователя в систему и до загрузки оболочки. Во время него можно создавать учетные записи и настраивать параметры автоматического входа в систему, указывать языковые настройки и параметры дисплея для установленной системы.
Начнем
1)      Запускаем «Диспетчер образов системы»
2)      Файл -> Открыть образ системы, появиться следующее окно «Не удается найти файл каталога связанный с данным образом» - соглашаемся его создать, это займет некоторое время
3)      Теперь образ подгружен для которого мы будем создавать файл ответов Меню Файл -> Пункт Новый файл ответов
4)      В правом среднем окне появиться файл ответов
Итак мы уже узнаем наши этапы, которые описаны выше
Для создания файла ответов нам нужно добавить в него компоненты из каталога
Как видим слева у нас есть много разделов в разделе «Components» и есть одинаковые разделы для разных архитектур x86, amd64.Так как у нас система 64, то нам необходимо добавлять разделы amd64.
Для добавления мы нажимаем на нем ПКМ, и выбираем в какой радел файла ответов нам его добавить. По их именам в принципе можно и догадаться, например amd64_Microsoft-Windows-International-Core-WinPE_6.1.7600.16385_neutral относиться к 1 пункту установки Windows, то есть WindowsPE. А Microsoft-Windows-Shell-Setup | UserAccounts к пункут 5 AuditSystem, то есть тут мы можем добавить некоторых пользователей.

Итак добавляем amd64_Microsoft-Windows-International-Core-WinPE_6.1.7600.16385_neutral в пункт 1 Windows PE


             
5)      Теперь справа в окошке параметры мы добавляем необходимые нам языки в свойствах добавляем
SetupUILanguage | UILanguage
 --> 
ru-RU
windowsPE | Microsoft-Windows-International-Core-WinPE | InputLocale
 --> 
en-US; ru-RU
windowsPE | Microsoft-Windows-International-Core-WinPE | SystemLocale
 --> 
ru-RU
windowsPE | Microsoft-Windows-International-Core-WinPE | UILanguage
 --> 
ru-RU
windowsPE | Microsoft-Windows-International-Core-WinPE | UserLocale
 --> 
ru-RU
Как показанно у нас на рисунке

6)      По аналогии добавим все остальные компоненты
Компонент

Проход
Microsoft-Windows-International-Core-WinPE | SetupUILanguage
-->
1 windowsPE
Microsoft-Windows-Setup | UserData
-->
1 windowsPE
Microsoft-Windows-Shell-Setup
-->
4 specialize
Microsoft-Windows-International-Core
-->
7 oobeSystem
Microsoft-Windows-Shell-Setup
-->
7 oobeSystem

7)И выставим необходимые параметры
Параметр

Значение
windowsPE | Microsoft-Windows-International-Core-WinPE | SetupUILanguage | UILanguage
 --> 
ru-RU
windowsPE | Microsoft-Windows-International-Core-WinPE | InputLocale
 --> 
en-US; ru-RU
windowsPE | Microsoft-Windows-International-Core-WinPE | SystemLocale
 --> 
ru-RU
windowsPE | Microsoft-Windows-International-Core-WinPE | UILanguage
 --> 
ru-RU
windowsPE | Microsoft-Windows-International-Core-WinPE | UserLocale
 --> 
ru-RU
windowsPE | Microsoft-Windows-Setup | UserData | AcceptEula
 --> 
true
specialize | Microsoft-Windows-Shell-Setup | ComputerName
 --> 
1
oobeSystem | Microsoft-Windows-International-Core | InputLocale
 --> 
en-US; ru-RU
oobeSystem | Microsoft-Windows-International-Core | SystemLocale
 --> 
ru-RU
oobeSystem | Microsoft-Windows-International-Core | UILanguage
 --> 
ru-RU
oobeSystem | Microsoft-Windows-International-Core | UserLocale
 --> 
ru-RU
oobeSystem | Microsoft-Windows-Shell-Setup | TimeZone
 --> 
Ekaterinburg Standard Time
oobeSystem | Microsoft-Windows-Shell-Setup | AutoLogon | Enabled
 --> 
true
oobeSystem | Microsoft-Windows-Shell-Setup | AutoLogon | Username
 --> 
Admin
oobeSystem | Microsoft-Windows-Shell-Setup | AutoLogon | Password
 --> 
"Запись пустой строки"
oobeSystem | Microsoft-Windows-Shell-Setup | OOBE | HideEULAPage
 --> 
true
oobeSystem | Microsoft-Windows-Shell-Setup | OOBE | HideWirelessSetupInOOBE
 --> 
true
oobeSystem | Microsoft-Windows-Shell-Setup | OOBE | NetworkLocation
 --> 
Home
oobeSystem | Microsoft-Windows-Shell-Setup | OOBE | ProtectYourPC
 --> 
1
oobeSystem | Microsoft-Windows-Shell-Setup | UserAccounts | LocalAccounts | LocalAccount | DisplayName
 --> 
Admin
oobeSystem | Microsoft-Windows-Shell-Setup | UserAccounts | LocalAccounts | LocalAccount | Group
 --> 
Administrators
oobeSystem | Microsoft-Windows-Shell-Setup | UserAccounts | LocalAccounts | LocalAccount | Name
 --> 
Admin
oobeSystem | Microsoft-Windows-Shell-Setup | UserAccounts | LocalAccounts | LocalAccount | Password
 --> 
"Запись пустой строки"


Для автоматического входа в систему (без ввода имени пользователя и пароля) необходимо в параметрах:
oobeSystem | Microsoft-Windows-Shell-Setup | AutoLogon | Password
и
oobeSystem | Microsoft-Windows-Shell-Setup | UserAccounts | LocalAccounts | LocalAccount | Password
указать в качестве значения Value пустую сроку (ПКМ->"Запись пустой строки"):
7)             Также я заполнил поля для автоматической разбивки диска и создания пользователя Admin по умолчанию, добавил его в группу Администраторы, выставил часовые пояса и т.д, дабы минимизировать действия пользователя при установке

Находим amd64_Microsoft-Windows-Setup, разворачиваем и добавляем в файл ответов пункты DiskConfiguration, ImageInstall, UserData (размечаем диск, указываем редакцию Windows, принимаем лицензионные соглашения):

  в DiskConfiguration пкм «вставить новый диск», для созданного диска выставляем параметры (Action - AddListItem, DiskId - 0 (номер диска к которому будет применятся автоматическая разметка), WillWipeDisk - true (диск будет полностью использован под установку с потерей всех данных)). Смотри на рисунке ниже
Когда диск появился , то в правом окне выставляем ему ID,  и устанавливаем WillWipe=True, то есть стереть весь диск и заполнить его новыми разделами

в созданном диске нажимаем пкм на «CreatePartitisions» и выбираем «Create Partitision», добавляем раздел где будет находится загрузчик windows, выставляем для него параметры (Action - AddListItem, Extend - false (радел будет фиксированным), Order - 1 (номер раздела), size - 100 (в Mb), Type - Primary)
в созданном диске нажимаем пкм на «CreatePartitisions» и выбираем «Create Partitision», добавляем раздел куда будет производится установка Windows, выставляем для него параметры (Action - AddListItem, Extend - true, Order - 2, Type - Primary)
Далее в ModifyPartitions мы выбираем как нам форматировать наши разделы

в созданном диске нажимаем пкм на «ModifyPartitisions» и выбираем «Create ModifyPartitision», форматируем раздел для загрузчика, выставляем для него параметры (Action - AddListItem, Active - true, Fomat - NTFS, Order - 1, PartitionID -1)
в созданном диске нажимаем пкм на «ModifyPartitisions» и выбираем «Create ModifyPartitision», форматируем раздел куда будет устанавливаться Windows, выставляем для него параметры (Action - AddListItem, Active - false, Fomat - NTFS, Label - Windows, Order - 2, PartitionID -2)

в разделе UserData выставляем параметр (AcceptEula - true (автоматически принять условия лицензионного соглашения))


в пункте OOBE выставляем параметры (HideEULAPage - true, HideWirelessSetupInOOBE - true, NetworkLocation - Other, ProtectYourPC - 1 (применяются рекомендованные параметры для windows update))
в пункте UserAccaunts создаем пользователя, помещаем его в группу и задаем ему пароль.
В конце файл выглядит примерно так

Сохраняем готовый файл ответов AutoUnattend.xml и помещаем его в корень нашей папки D:\Windows_etalon\ISO. Позже это файл ответов можно залить на WDS сервер

 

ЭТАП3. Установка и настройка WDS сервера

Как и обычно мы это делаем из «Добавление ролей и компонентов».  Я не стал себя утруждать заново разворачивать WDS сервер поэтому взял картиночки отсюда https://geektimes.ru/post/245918/, спасибо доброму человеку за его труд.
Итак начнем
Далее заходим в консоль развертывания WDS как показано на рисунке

Здесь я выбрал не интегрировать WDS службу, с AD, т.к домен у меня был на Windows 2003 и там такой возможности не было, да и как я понял по ссуществу суть интеграции в том чтобы сначала создать запись ПК в AD, и потом он сможет соединяться с сервером WDS, то есть для некой безопасности. Но я выбрал изолированный сервер. Что вролне меня устраивает
Далее выбрал «Отвечать всем компьютерам». Путь к файлам D:\WDS




После установки нам необходимо залить на сервер наши образы, например сохраним их на сервере в какую-нибудь папку например D:\WDS, это корень папок нашего WDS сервера, туда и сохраним, нужны всего два файла boot.wim и install.wim. Скопируем их туда
Теперь нам нужно boot.wim подключить как образ загрузки, install.wim как образ установки. Тут все просто клацаем на «Образы загрузки» -> «Добавить образ» указываем путь к образу
Далее вводим описание и все такое, и жмем готово
Также поступаем и с образом установки install.wim, только при этом создадим еще и группу
Потом далее- далее и готово
Теперь мы можем добавить наш файл ответов, чтобы установка происходила в автоматическом режиме, для этого нажимаем «Свойства» на образе и ставим галочку «Разрешить установку образа в автоматическом режиме» и выбираем наш файл с ответами.
Теперь зайдем в настройки и установим что установка должна происходить только по нажатию F12, и установим таймаут ожидания нажатия этой клавиши. То есть когда мы выставляем загрузку в BIOS с сетевой карты, DHCP выдаст нам адрес PXE сервера, и вот перед установкой он запросит нас нажать F12, как подтверждение, что мы действительно хотим продолжить установку. Зайти в «Свойства сервера»-> «Загрузка» и поставить галочки как на рисунке

И последнее чтобы это все работало, клиент должен получать от сервера DHCP вместе с адресом опции 60 и 67, которые указывают на адрес сервера и путь с PXE файлом (boot.wim)
Указываем эти опции для области dhcpВсе теперь все готово можем пробовать загружаться по сети!!