Статья написана Михаилом Комаровым, MVP по направлению Hyper-V.
Цель данной статьи — продемонстрировать возможность использования ADK для развёртывания Microsoft Nano Server, что в дальнейшем позволит применять стандартный Windows Deployment Service для массового развертывания. Все действия можно провести под операционной системой Windows 8.1 или выше. Если планируется развертывать на Hyper-V, то необходимо включить роль Hyper-V или использовать реальный компьютер. В данной статье я использовал Windows 8.1 с включенной ролью Hyper-V и HP Microserver Gen 8.
В мае 2015 года на конференции Microsoft Ignite был представлен революционный продукт — Microsoft Nano Server. Данный продукт является полностью переработанной версией Windows с минимальным размером кода и только необходимыми функциями. Серверные роли и дополнительные функции находятся вне Nano Server. Самостоятельные пакеты устанавливаются как приложения. Ключевые роли и функции продукта — это Hyper-V, системы хранения (SoFS) и кластеризация, а также поддержка ядра CLR, ASP.NET 5 и PaaS. Размер дистрибутива с установленными пакетами не превышает 1GB и может располагаться на SD карте.
Процесс развертывания состоит из несколько шагов.
Начнем с первого шага. Нам необходим дистрибутив Windows Server Technical Preview 2, ссылки находятся в конце статьи. После того, как мы скачали дистрибутив в виде ISO файла, нам необходимо его открыть и извлечь из корня директорию NanoServer.
![](https://habrastorage.org/files/164/31c/059/16431c05920d4d7fa0411168c53e4995.png)
Далее нам необходимо скачать Windows Assessment and Deployment Kit (ADK) RC for Windows 10. Продукт скачивается в виде небольшого исполняемого файла, при запуске которого можно выбрать нужные компоненты либо полное скачивание, после чего можно запустить установку. Весь пакет для данной работы нам не нужен, выбираем только опции для развертывания.
![](https://habrastorage.org/files/1d8/299/0ce/1d82990cee1148ef87f501273c58f111.png)
После установки данного пакета запускаем с правами администратора ярлык “Deployment and Imaging tool Environment”
![](https://habrastorage.org/files/82c/c30/342/82cc3034200948a8a301e038e84e6231.png)
и выполняем команду «copype amd64 W:\WinPE_64». Сopype не является командой Windows, а является скриптом, поставляемым в комплекте с ADK. Смысл данной команды — скопировать файлы Windows Preinstallation Environment на W:\WinPE_64. На своей машине под дополнительные данные я использую диск W, в вашем случае это может быть любой диск и любая директория.
![](https://habrastorage.org/files/d43/bfe/838/d43bfe838d3e40b8898418402587b2ad.png)
После создания директории с файлами Windows Preinstallation Environment (Windows PE) первый шаг закончен.
На втором шаге нам необходимо разобраться, каким образом будет происходить загрузка машины с Nano Server. Это важно, потому что мы будем развертывать Nano Server с чистого листа. Итак, у нас есть два варианта загрузки нашей машины: с использованием классического BIOS или современного UEFI. Для Hyper-V также есть два варианта, которые зависят от типа виртуальной машины. Ниже приведен пример для Hyper-V.
![](https://habrastorage.org/files/8ae/8e4/024/8ae8e40247224f0c86e95f70e169c7b7.png)
Обыкновенный современный компьютер.
![](https://habrastorage.org/files/f96/6ab/18e/f966ab18e74a49b699a21af01d497f50.png)
Данный вопрос имеет для нас ключевое значение, так как от него зависит, как мы будем размечать диск.
Начнем с классического BIOS. По умолчанию разделы на диске выглядят так:
![](https://habrastorage.org/files/3a0/f59/21c/3a0f5921cc2f45cbbb5a2a811edba53e.jpg)
Однако есть еще один вариант разметки диска, который, как правило, используют в клиентских операционных системах при OEM-развертываниях. Recovery Image — это образ операционной системы плюс утилиты, которые позволяют развернуть операционную систему заново на раздел Windows после аварии.
![](https://habrastorage.org/files/e10/299/63f/e1029963fe824e3690a11db4e494ed58.jpg)
В нашем случаем мы ограничимся простым случаем, с использованием простой версии скрипта. Ссылка на оригинальную статью Microsoft с расширенной версий скрипта и комментариями приведена в конце.
select disk 0
clean
create partition primary size=350
format quick fs=ntfs label="System"
assign letter="S"
active
create partition primary
format quick fs=ntfs label="Windows"
assign letter="W"
exit
Обратите внимание на буквы томов. Данные буквы используются только во время операций, когда машина загружена с Windows PE. Окончательный вид разделов и томов после применения скрипта, применения образа и перезагрузки выглядит так.
![](https://habrastorage.org/files/b52/550/ee4/b52550ee42ee499dbf7195dbf9b2d67d.png)
![](https://habrastorage.org/files/a94/f62/24b/a94f6224b17546949b68cafc9121efed.png)
Перейдем на современный UEFI. На смену MBR пришла GPT со своими разделами. Одна из причин перехода на UEFI — поддержка загрузочных томов больше 2TB. По умолчанию разметка диска выглядит так:
![](https://habrastorage.org/files/ddc/855/922/ddc8559227694656a242bbc464d6f9eb.jpg)
Однако есть еще один вариант разметки диска, который, как правило, используют в клиентских операционных системах при OEM развертываниях. Recovery Image — это образ операционной системы плюс утилиты, которые позволяют развернуть операционную систему заново на раздел Windows после аварии.
![](https://habrastorage.org/files/82c/388/107/82c3881072954916844f87bd41d5e644.jpg)
В нашем случаем мы ограничимся простым случаем, с использованием простой версии скрипта. Ссылка на оригинальную статью Microsoft с расширенной версий скрипта и комментариями приведена в конце.
select disk 0
clean
convert gpt
create partition primary size=300
format quick fs=ntfs label="Windows RE tools"
assign letter="T"
create partition efi size=100
rem == Note: for Advanced Format Generation One drives, change to size=260.
format quick fs=fat32 label="System"
assign letter="S"
create partition msr size=128
create partition primary
format quick fs=ntfs label="Windows"
assign letter="W"
Также как в предыдущем случае данные буквы используются только во время операций, когда машина загружена с Windows PE. Окончательный вид разделов и томов после применения скрипта, применения образа и перезагрузки выглядит так.
![](https://habrastorage.org/files/a60/8e5/0bd/a608e50bdc784883a0b42c597136c338.png)
![](https://habrastorage.org/files/a88/c14/bb9/a88c14bb9e544d0e82b03a47054f2e94.png)
В данной статье я не буду останавливаться на том, для чего нужны эти разделы. Для тех, кому это интересно, есть ссылка на материалы в конце. Теперь мы можем создать два текстовых файла Bios_Partition_Structure.txt и UEFI_Partition_Structure.txt, в которых будут лежать наши скрипты. В дальнейшем мы будем запускать команду diskpart /s Bios_Partition_Structure.txt или diskpart /s UEFI_Partition_Structure.txt. Выбор команды, которая будет создавать разделы, определяется типом загрузки.
Третий шаг — это создание файла ответов и скрипта, который запустится после установки. Образец файла ответов unattend.xml возьмем из “Getting Started with Nano Server”. Значения тэгов ComputerName, Value, RegisteredOwner, RegisteredOrganization вы можете поменять.
<ComputerName>NanoServer1503</ComputerName>
<AdministratorPassword>
<Value>P@ssw0rd</Value>
<PlainText>true</PlainText>
</AdministratorPassword>
<RegisteredOwner>Mikhail Komarov</RegisteredOwner>
<RegisteredOrganization>Virtual Lab</RegisteredOrganization>
Относительно скрипта после установки — сначала необходимо создать директорию
md W:\Windows\Setup, потом положить туда файл SetupComplete.cmd со следующим содержанием:
ping 127.0.0.1 -n 4
hostname
ipconfig
netsh advfirewall set domainprofile state off
netsh advfirewall set privateprofile state off
netsh advfirewall set publicprofile state off
netsh advfirewall set currentprofile state off
Из содержания видно, что IP адрес будем получать по DHCP и отключим межсетевой экран.
Четвертый шаг — это создание итоговых скриптов, которые будут разворачивать образ, добавлять пакеты и применять файл ответов. Итак, создадим два файла, по названию которых ясно, для чего они предназначены: Apply_on_Hardware.bat и Apply_on_Hyper-V_VM.bat. У этих двух файлов будет общая часть.
Развертываем образ на диск.
dism /Apply-Image /ImageFile:d:\NanoServer\nanoserver.wim /Index:1 /ApplyDir:W:\
Добавляем пакеты (будет разный состав для файлов).
dism /Add-Package
Добавляем файл ответов.
dism /Apply-Unattend:d:\NanoServer\unattend/image:W:\
Место для дополнительных логов.
md W:\Windows\panther
Копируем файл ответов.
copy d:\NanoServer\unattend.xml W:\Windows\panther\
Создаем директорию для запуска скриптов после установки.
md W:\Windows\Setup
Копируем файл ответов.
copy d:\NanoServer\SetupComplete.cmd W:\Windows\Setup\Scripts\
Создаем загрузочную запись.
bcdboot W:\Windows
Разница в файлах обусловлена различиями в платформах.
![](https://habrastorage.org/files/b2d/821/45d/b2d82145de354881addce2d7ed766dcb.png)
Поэтому в файле Apply_on_Hardware.bat будут следующие пакеты:
dism /Add-Package /PackagePath:d:\NanoServer\Packages\Microsoft-NanoServer-Compute-Package.cab /Image:W:\
dism /Add-Package /PackagePath:d:\NanoServer\Packages\en-us\Microsoft-NanoServer-Compute-Package.cab /Image:W:\
dism /Add-Package /PackagePath:d:\NanoServer\Packages\Microsoft-OneCore-ReverseForwarders-Package.cab /Image:W:\
dism /Add-Package /PackagePath:d:\NanoServer\Packages\en-us\Microsoft-OneCore-ReverseForwarders-Package.cab /Image:W:\
dism /Add-Package /PackagePath:d:\NanoServer\Packages\Microsoft-NanoServer-Storage-Package.cab /Image:W:\
dism /Add-Package /PackagePath:d:\NanoServer\Packages\en-us\Microsoft-NanoServer-Storage-Package.cab /Image:W:\
dism /Add-Package /PackagePath:d:\NanoServer\Packages\Microsoft-NanoServer-OEM-Drivers-Package.cab /Image:W:\
dism /Add-Package /PackagePath:d:\NanoServer\Packages\en-us\Microsoft-NanoServer-OEM-Drivers-Package.cab /Image:W:\
dism /Add-Package /PackagePath:d:\NanoServer\Packages\Microsoft-NanoServer-FailoverCluster-Package.cab /Image:W:\
dism /Add-Package /PackagePath:d:\NanoServer\Packages\en-us\Microsoft-NanoServer-FailoverCluster-Package.cab /Image:W:\
А в файле Apply_on_Hyper-V_VM.bat будут следующие пакеты:
dism /Add-Package /PackagePath:d:\NanoServer\Packages\Microsoft-NanoServer-Guest-Package.cab /Image:W:\
dism /Add-Package /PackagePath:d:\NanoServer\Packages\en-us\Microsoft-NanoServer-Guest-Package.cab /Image:W:\
dism /Add-Package /PackagePath:d:\NanoServer\Packages\Microsoft-OneCore-ReverseForwarders-Package.cab /Image:W:\
dism /Add-Package /PackagePath:d:\NanoServer\Packages\en-us\Microsoft-OneCore-ReverseForwarders-Package.cab /Image:W:\
dism /Add-Package /PackagePath:d:\NanoServer\Packages\Microsoft-NanoServer-Storage-Package.cab /Image:W:\
dism /Add-Package /PackagePath:d:\NanoServer\Packages\en-us\Microsoft-NanoServer-Storage-Package.cab /Image:W:\
dism /Add-Package /PackagePath:d:\NanoServer\Packages\Microsoft-NanoServer-FailoverCluster-Package.cab /Image:W:\
dism /Add-Package /PackagePath:d:\NanoServer\Packages\en-us\Microsoft-NanoServer-FailoverCluster-Package.cab /Image:W:\
В итоге получим набор файлов, которые поместим в директорию с Nano Server.
![](https://habrastorage.org/files/475/b4c/fca/475b4cfcac044792844fcfa3d9bb6b1e.png)
На пятом шаге нам необходимо определиться, каким образом будет загружаться Windows PE и где будут находиться наши файлы и файлы Nano Server. Существует несколько путей, например, сделать загрузочный USB-стикер и провести загрузку и установку с него, или, например, сделать загрузочный ISO, а файлы Nano Server поместить на USB и провести инсталляцию на реальный компьютер. Либо сделать ISO-образ, в котором будет Windows PE и файлы Nano Server. Мы пойдем этим путем. Копируем директорию NanoServer в W:\WinPE_64\media\. После этого создаём ISO-образ командой MakeWinPEMedia /ISO W:\WinPE_64 W:\WinPE_64.iso Обратим внимание, что MakeWinPEMedia — это скрипт в составе ADK, и, если поменять ключ, он с тем же успехом сделает загрузочный USB-стикер.
![](https://habrastorage.org/files/872/ff3/4a0/872ff34a012f4cacaa6cfc8c40f79885.png)
По окончанию данной процедуры мы получаем файл образа WinPE_64.iso, в котором подготовлена Windows PE и находятся файлы Nano Server.
Шестой шаг — это загрузка с образа на только что созданной виртуальной машине или физическом компьютере, после которой попадаем в командную строку, в которой необходимо перейти в директорию на диске d:\nanoServer. Если диск D пустой или вы не нашли директорию, попробуйте следующее:
Внимание!!! Выполняем только в командной строке Windows PE:
Diskpart
(вызываем редактор разделов)Select disk 0
(выбираем 0 диск)Clean
(удаляем все разделы с этого диска)Exit
(выходим из редактора разделов)exit
(после этой команды произойдёт перезагрузка компьютера)Далее попробуйте перейти в директорию d:\nanoserver. Затем запустите команду diskpart /s Bios_Partition_Structure.txt или diskpart /s UEFI_Partition_Structure.txt. Выбор команды, которая будет создавать разделы, определяется типом загрузки. Содержимое Bios_Partition_Structure.txt и UEFI_Partition_Structure.txt мы обсуждали в конце второго раздела.
После создания разделов запустим скрипт Apply_on_Hardware_Bios.bat или Apply_on_Hyper-V_VM.bat, в зависимости от типа машины. После окончания работы скрипта машина уйдет в перезагрузку. После перезагрузки на экране долго ничего не появляется, все равно управление с экрана не будет доступно.
Седьмой заключительный шаг — подключение к Nano Server. Заглянем на наш DHCP сервер, который выдал нам адрес, и запомним его. Запустим PowerShell от имени администратора на локальной машине:
$ip = "192.168.10.105"
$user = "Administrator"
Set-Item WSMAN:\\localhost\client\TrustedHosts $ip -Force
chcp 65001
Enter-PSSession -ComputerName $ip -Credential $user
введем пароль и запустим cmdlet get-process
![](https://habrastorage.org/files/3e7/c99/e4b/3e7c99e4b96143bfb6c78dffddd05287.png)
Ресурсы:
Windows Assessment and Deployment Kit (ADK) RC for Windows 10
Microsoft Ignite 2015 (видео с конференции)
Windows Server Technical Preview 2
Sample: Configure UEFI/GPT-Based Hard Drive Partitions by Using Windows PE and DiskPart
Sample: Configure BIOS/MBR-Based Hard Disk Partitions by Using Windows PE and DiskPart
Создание структуры разделов в разметке GPT на ПК с UEFI
Getting Started with Nano Server