Статья написана Михаилом Комаровым, 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.



Далее нам необходимо скачать Windows Assessment and Deployment Kit (ADK) RC for Windows 10. Продукт скачивается в виде небольшого исполняемого файла, при запуске которого можно выбрать нужные компоненты либо полное скачивание, после чего можно запустить установку. Весь пакет для данной работы нам не нужен, выбираем только опции для развертывания.



После установки данного пакета запускаем с правами администратора ярлык “Deployment and Imaging tool Environment”



и выполняем команду «copype amd64 W:\WinPE_64». Сopype не является командой Windows, а является скриптом, поставляемым в комплекте с ADK. Смысл данной команды — скопировать файлы Windows Preinstallation Environment на W:\WinPE_64. На своей машине под дополнительные данные я использую диск W, в вашем случае это может быть любой диск и любая директория.



После создания директории с файлами Windows Preinstallation Environment (Windows PE) первый шаг закончен.

На втором шаге нам необходимо разобраться, каким образом будет происходить загрузка машины с Nano Server. Это важно, потому что мы будем развертывать Nano Server с чистого листа. Итак, у нас есть два варианта загрузки нашей машины: с использованием классического BIOS или современного UEFI. Для Hyper-V также есть два варианта, которые зависят от типа виртуальной машины. Ниже приведен пример для Hyper-V.



Обыкновенный современный компьютер.



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

Начнем с классического BIOS. По умолчанию разделы на диске выглядят так:



Однако есть еще один вариант разметки диска, который, как правило, используют в клиентских операционных системах при OEM-развертываниях. Recovery Image — это образ операционной системы плюс утилиты, которые позволяют развернуть операционную систему заново на раздел Windows после аварии.



В нашем случаем мы ограничимся простым случаем, с использованием простой версии скрипта. Ссылка на оригинальную статью 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. Окончательный вид разделов и томов после применения скрипта, применения образа и перезагрузки выглядит так.





Перейдем на современный UEFI. На смену MBR пришла GPT со своими разделами. Одна из причин перехода на UEFI — поддержка загрузочных томов больше 2TB. По умолчанию разметка диска выглядит так:



Однако есть еще один вариант разметки диска, который, как правило, используют в клиентских операционных системах при OEM развертываниях. Recovery Image — это образ операционной системы плюс утилиты, которые позволяют развернуть операционную систему заново на раздел Windows после аварии.



В нашем случаем мы ограничимся простым случаем, с использованием простой версии скрипта. Ссылка на оригинальную статью 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. Окончательный вид разделов и томов после применения скрипта, применения образа и перезагрузки выглядит так.





В данной статье я не буду останавливаться на том, для чего нужны эти разделы. Для тех, кому это интересно, есть ссылка на материалы в конце. Теперь мы можем создать два текстовых файла 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

Разница в файлах обусловлена различиями в платформах.



Поэтому в файле 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.



На пятом шаге нам необходимо определиться, каким образом будет загружаться 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-стикер.



По окончанию данной процедуры мы получаем файл образа 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



Ресурсы:
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

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


  1. Maysoft
    03.07.2015 14:51

    Что-то я ничего нового не увидел. Например, чем отличается развертывание Windows 7 от Nano Server?


    1. ashapo Автор
      03.07.2015 15:00

      Если разворачивать Windows 7 с помощью ADK и DISM, то концептуально отличий действительно не много. Два момента отмечу. Первый, Nano Server, по крайней мере в текущей сборке, можно развернуть только путем сборки WIM- или VHD-файла, используя ADK и DISM. Второй, вы можете не добавлять в образ вот этот файл Microsoft-NanoServer-OEM-Drivers-Package.cab, содержащий все драйверы из обычного сервера, а добавить только нужные вам драйверы. Тогда размер образа будет еще меньше.


      1. Jeditobe
        03.07.2015 17:04

        Процесс выбора нужных драйверов оптимизирован и автоматизирован? Или нужно методом научного тыка действовать?


        1. navion
          03.07.2015 17:12

          Для физических серверов вендоры выкладывают готовые пакеты, их можно просто импортировать через DISM либо автоматизировать процесс в MDT.


        1. ashapo Автор
          03.07.2015 17:15

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


      1. Maysoft
        03.07.2015 18:36

        Может вопрос не совсем в тему, но я его все равно задам: можно ли где-то скачать пакеты cab без развертывания ADK?


        1. ashapo Автор
          03.07.2015 20:38

          Да, все перечисленные cab-ы входят в дистрибутив самого Nano Server, а утилита DISM входит в состав Windows, начиная с Windows 8. Пакет ADK в данном случае нужен, чтобы сформировать образ Windows PE. Если вы не планируете использовать Windows PE, вам не нужен ADK для развертывания Nano Server.


          1. Maysoft
            04.07.2015 06:16

            Тут я с вами категорически не согласен — ADK не нужен, чтобы получить WinPE. Достаточно взять любой дистрибутив, где есть WinPE нужной версии. Если хотите могу рассказать, как вынуть WinPE из дистрибутива.


            1. ashapo Автор
              06.07.2015 10:05

              Я согласен с тем, что WinPE можно получить разными способами. Но одно из предназначений пакета ADK — предоставить дистрибутив WinPE и набор инструментов для подготовки собственного должным образом настроенного (кастомизированного) образа WinPE. Такой настроенный образ и используется в сценарии, описанном в статье.


  1. Abdus
    03.07.2015 16:32
    +1

    К слову про HP Microserver Gen 8. Там стоит Smart raid.Этот smart полное фуфло. В общем, он создает логические диски у себя, которые потом передает в ОС и система видит эти логические как физические устройства. Это приводит к тому, что при извлечении диска его файловую систему не видит ни один другой компьютер. По этому лучше использовать программный raid средствами системы.


  1. navion
    03.07.2015 17:09

    Мне больше нравится способ от Йохана:
    deploymentresearch.com/Research/Post/479/Quick-Guide-Deploying-Nano-Server-using-PowerShell


    1. ashapo Автор
      03.07.2015 17:19
      +1

      И в блоге по Nano Server появился дополнительный скрипт, который поможет более изящно собрать нужный вариант.