понедельник, 30 мая 2016 г.

Подготовка образа Windows Thin PC и установка при помощи VMware Mirage (часть I)

В этой и последующих статьях я планируют описать процедуру подготовки дистрибутива ОС Microsoft Windows Thin PC для работы совместно с VDI инфраструктурой на базе VMware Horizon View и VMware Mirage. VMware Mirage предлагается использовать в качестве средства для централизованной установки Thin PC на ПК, а также обновления образа по мере выхода новых версий.

Одним из способов организации доступа к VDI инфраструктуре является переделывание имеющихся в организации ПК в тонкие клиенты. Среди вариантов присутствуют как коммерческие решения, вроде Dell Wyse PC Extender или Igel Universal Desktop Converter, так и открытые/бесплатные решения, например, Thinstation. Все они строятся на базе ОС Linux с дополнительным ПО, позволяющим создавать и модифицировать образ ОС, а также централизованно управлять, обновлять тонкие клиенты. Но еще одним интересным вариантом является Microsoft Windows Thin PC.

Thin PC строится на базе ОС Microsoft Windows Embedded Standard 7 (Microsoft Windows Thin PC). Данная ОС доступна для загрузки корпоративным пользователям, оформившим подписку Microsoft VDA (что обязательно в тех случаях, когда вы планируете запускать в VDI клиентские ОС Windows).

Thin PC может устанавливаться на любой Intel x86 совместимый компьютер, удовлетворяющий следующим аппаратным требованиям:
  • 1 GHz or faster 32-bit (x86);
  • 1 GB RAM, 16 GB available hard disk space;
  • DirectX 9 graphics device with WDDM 1.0 or later version driver.
Поскольку в основе Thin PC лежит Windows, то это значит, что тонкие клиенты с данной ОС имеют полный набор функциональных возможностей, которые может предоставить то или иное VDI решение (проброс USB устройств, принтеров, сканеров, Multimedia redirection, Flash redirection, URL redirection, аппаратное декодирование видео, однакратный вход в систему, аутентификация по смарт-картам и т.д.).

Поскольку для распространения Thin PC планируется использовать VMware Mirage, то нам потребуется эталонный компьютер, на которой можно будет установить Thin PC, выполнить ряд настроек, оптимизирующих работу ОС, установить дополнительные компоненты, вроде, клиента VMware Horizon Client и Mirage Client. Ряд настроек я рекомендую выполнить заранее, например, добавить в дистрибутив Thin PC необходимые обновления ОС и драйверы, и только после этого установить его на эталонный компьютер.

Предварительные шаги

Для начала требуется подготовить дистрибутив Thin PC к установке.

Подготовка дистрибутива включает в себя следующие шаги:
  1. Интеграция драйверов устройств в дистрибутив.
  2. Интеграция пакетов обновлений ОС в дистрибутив.
  3. Интеграция установочных пакетов приложений в дистрибутив.
  4. Модификация установочного скрипта ОС.
  5. Модификация файла ответов ОС.
  6. Сборка дистрибутива.
Для подготовки дистрибутива тонкого клиента следует использовать рабочую станцию с установленной ОС Microsoft Windows 7 с установленным пакетом Microsoft Windows Automated Installation Kit 7 (WAIK 7).

Загрузите дистрибутив Windows ThinPC. Также рекомендую загрузить пакет Windows Embedded Standard 7 Service Pack 1 Toolkit с сайта https://www.microsoft.com/en-us/download/details.aspx?id=11887 (по ссылке можно загрузить Evaluation версию Windows Embedded, сам Toolkit находится в архиве, разбитом на 8 частей), содержащего огромное количество драйверов и дополнительных пакетов, которые могут пригодиться при подготовке образа.

При желании, вы также можете загрузить языковой пакет для различных языков по ссылке: https://www.microsoft.com/en-us/download/details.aspx?id=26215

На рабочей станции создайте структуру каталогов для хранения дистрибутива, монтирования образов ОС, драйверов, дистрибутивов приложений и т.д.:
  • C:\ThinPC
  • C:\ThinPC\Drivers
  • C:\ThinPC\Image
  • C:\ThinPC\ISO
  • C:\ThinPC\Mount
  • C:\ThinPC\Updates
После получения дистрибутива Thin PC в формате ISO распакуйте его содержимое в каталог "C:\ThinPC\Image" на рабочей станции.

Образ операционной системы (системный диск) хранится в файле-образа X:\sources\install.wim на установочном носителе. В данный образ могут должны быть интегрированы необходимые драйверы и обновления ОС, которые будут автоматически установлены при развертывании ОС на целевые устройства.

Интеграция драйверов в дистрибутив

Для интеграции драйверов устройств выполните следующие действия:
  1. Загрузите и распакуйте драйверы устройств с сайта производителя в папку C:\ThinPC\Drivers. Распакованные файлы драйверов должны содержать файлы описания .INF и системные файлы драйверов (.SYS, .DLL и др.).
  2. Смонтируйте файл install.wim, используя команду:
  3. dism /mount-wim /wimfile:"C:\ThinPC\Image\sources\install.wim" /index:1 /mountdir:"C:\ThinPC\Mount"
  4. Добавьте драйверы в дистрибутив, используя команду:
  5. dism /Image:C:\ThinPC\Mount /Add-Driver /Driver:C:\ThinPC\Drivers /Recurse
  6. Отмонтируйте файл install.wim и сохраните изменения, используя команду:
  7. dism /Unmount-Wim /MountDir:C:\ThinPC\Mount /Commit
Примечание: Если устройство-тонкий клиент снабжено дисковым контроллером, драйвер которого отсутствует в ОС, требуется добавить драйвер и загрузочный образ Win PE (boot.wim). Шаги по добавлению драйверов в загрузочный образ аналогичны вышеприведенным для файла-образа ОС (install.wim).

Подробнее о процедуре интеграции драйверов можно прочитать в статье (https://technet.microsoft.com/ru-ru/library/dd744355(v=ws.10).aspx).

Интеграция пакетов обновлений и дополнительных компонентов ОС в дистрибутив

Для интеграции пакетов обновлений ОС (файлов в формате .MSU или .CAB) в дистрибутив выполните следующие действия:
  1. Загрузите обновления .MSU с сайта (http://catalog.update.microsoft.com/v7/site/Search.aspx?q=windows%20embedded%20standard%207) и сохраните их в корне каталога C:\ThinPC\Updates (не используйте вложенные папки).
  2. Смонтируйте файл install.wim, используя команду:
  3. dism /mount-wim /wimfile:"C:\ThinPC\Image\sources\install.wim" /index:1 /mountdir:"C:\ThinPC\Mount"
  4. Добавьте пакеты обновлений в дистрибутив, используя команду:
  5. dism /Image:C:\ThinPC\Mount /Add-Package /PackagePath:C:\ThinPC\Updates
  6. Отмонтируйте файл install.wim и сохраните изменения, используя команду:
  7. dism /Unmount-Wim /MountDir:C:\ThinPC\Mount /Commit
Например, в дистрибутиве Thin PC по умолчанию отсутствует множество видео кодеков, которые могут пригодиться для воспроизведения видео при использовании функции Multimedia redirection. CAB-пакеты с кодеками находятся в каталоге X:\DS\Packages\FeaturePack\ на диске Windows Embedded Standard 7 Service Pack 1 Toolkit.

Подробнее о процедуре интеграции пакетов обновлений можно прочитать в статье (https://technet.microsoft.com/ru-ru/library/dd744559(v=ws.10).aspx)

Модификация установочного скрипта ОС

Установочный скрипт setupcomplete.cmd выполняется на завершающем этапе установки ОС. Данный скрипт можно использовать для копирования файлов, установки приложений, модификации реестра, включения и отключения служб и компонентов ОС. Для добавления установочного скрипта в дистрибутив выполните следующие действия:
  1. Смонтируйте файл install.wim, используя команду:
  2. dism /mount-wim /wimfile:"C:\ThinPC\Image\sources\install.wim" /index:1 /mountdir:"C:\ThinPC\Mount"
  3. Создайте (если этого не было сделано ранее) файл "C:\ThinPC\Mount\Windows\Setup\Scripts\setupcomplete.cmd". В качестве основы можно использовать файл скрипта, приведенный ниже.
  4. Отмонтируйте файл install.wim и сохраните изменения, используя команду:
  5. dism /Unmount-Wim /MountDir:C:\ThinPC\Mount /Commit
Данный скрипт выполняет следующие операции:
  • активирует встроенную учетную запись администратора;
  • запрещает учетной записи User смену пароля;
  • настраивает автоматический вход в систему под учетной записью User (с пустым паролем);
  • настраивает шаблон профиля пользователя;
  • отключает неиспользуемые службы;
  • отключает восстановление системы;
  • отключает профили брандмауэра;
  • отключает запуск заданий дефрагментации по расписанию.
    REM setupcomplete.cmd

    REM Hide Boot Screen
    bcdedit /Set BOOTUX disabled

    REM *********************************************
    REM Network customization
    REM *********************************************

    REM Disable Windows Firewall Public Profile
    NetSh advfirewall Set publicprofile state off

    REM Disable Windows Firewall Private Profile
    NetSh advfirewall Set privateprofile state off

    REM Disable Windows Firewall Domain Profile
    NetSh advfirewall Set domainprofile state off

    REM Turn off the Network Location wizard
    reg ADD "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f

    REM Enable Remote Desktop Connection
    reg ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0x0 /f
    reg ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0x1 /f
    reg ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer /t REG_DWORD /d 0x1 /f

    REM *********************************************
    REM OS optimization
    REM *********************************************

    REM Disable Action Center icon
    reg ADD "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\Explorer" /v HideSCAHealth /t REG_DWORD /d 0x1 /f

    REM Disable User Account Control
    reg ADD "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\system" /v EnableLUA /t REG_DWORD /d 0x0 /f

    REM Increase disk timeout to 120 seconds
    reg ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Disk" /v TimeOutValue /t REG_DWORD /d 120 /f

    REM Disable Crush Dump
    reg ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 0x0 /f

    REM Enable "Automatically Reboot"
    reg ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl" /v AutoReboot /t REG_DWORD /d 0x1 /f

    REM Disable "Write an event to the system log"
    reg ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl" /v LogEvent /t REG_DWORD /d 0x0 /f

    REM Disable "Send an alert"
    reg ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl" /v SendAlert /t REG_DWORD /d 0x0 /f

    REM Do not move deleted files to the Recycle Bin
    reg ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer" /v NorecycleFiles /t REG_DWORD /d 0x1 /f

    REM Disable system restore
    reg ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\SystemRestore" /v DisableSR /t REG_DWORD /d 0x1 /f

    REM Disable Windows Update
    reg ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v DisableWindowsUpdateAccess /t REG_DWORD /d 0x1 /f

    REM Disable Machine Account Password Changes
    reg ADD "HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters" /v DisablePasswordChange /t reg_dword /d 0 /f

    REM Disable Hibernate
    powercfg -HIBERNATE OFF

    REM Disable Last Access Time stamp
    fsutil behavior Set DisableLastAccess 1

    REM Disable Prefetch
    reg ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters" /v EnablePrefetcher /t REG_DWORD /d 0x0 /f

    REM Disable the First Run Customize Page
    reg ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Internet Explorer\Main" /v DisableFirstRunCustomize /t REG_DWORD /d 0x1 /f

    REM Configure Application event log
    reg ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application" /v MaxSize /t REG_DWORD /d 0x100000 /f
    reg ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application" /v Retention /t REG_DWORD /d 0x0 /f

    REM Configure System event log
    reg ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\System" /v MaxSize /t REG_DWORD /d 0x100000 /f
    reg ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\System" /v Retention /t REG_DWORD /d 0x0 /f

    REM Configure Security event log
    reg ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Security" /v MaxSize /t REG_DWORD /d 0x100000 /f
    reg ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Security" /v Retention /t REG_DWORD /d 0x0 /f


    REM *********************************************
    REM Local accounts configuration
    REM *********************************************

    REM Activate Administrator account
    net user Administrator /active:yes


    REM Prevent User account from changing password and password expiration
    net user User /Passwordchg:no
    wmic path Win32_UserAccount where Name='User' set PasswordExpires=false


    REM Enable User account auto logon
    REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d 1 /f
    REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /t REG_SZ /d User /f
    REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword /t REG_SZ /d "" /f


    REM Disable scheduled tasks
    schtasks /change /tn "\Microsoft\windows\Application Experience\AitAgent" /disable
    schtasks /change /tn "\Microsoft\windows\Application Experience\ProgramDataUpdater" /disable
    schtasks /change /TN "\Microsoft\Windows\Customer Experience Improvement Program\UsbCeip" /disable
    schtasks /change /TN "\Microsoft\Windows\Defrag\ScheduledDefrag" /Disable
    schtasks /change /TN "\Microsoft\Windows\Maintenance\WinSAT" /Disable
    schtasks /change /TN "\Microsoft\Windows\Registry\RegIdleBackup" /Disable


    REM *********************************************
    REM Disable services
    REM *********************************************

    REM Disable Application Experience
    sc config AeLookupSvc start= disabled

    REM Disable BitLocker Drive Encryption Service
    sc config BDESVC start= disabled

    REM Disable BranchCache
    sc config PeerDistSvc start= disabled

    REM Disable Diagnostic Service Host
    sc config WdiServiceHost start= disabled

    REM Disable Diagnostic System Host
    sc config WdiSystemHost start= disabled

    REM Disable Problem Reports and Solutions Control Panel Support
    sc config wercplsupport start= disabled

    REM Disable Windows Media Center Sharing Service
    sc config WMPNetworkSvc start= disabled

    Rem Disable Interactive Services Detection
    sc config UI0Detect start= disabled

    REM Disable Function Discovery Resource Publication
    sc config FDResPub start= disabled

    REM Disable Secure Socket Tunneling Protocol Service
    sc config SstpSvc start= disabled

    REM Disable Security Center
    sc config wscsvc start= disabled

    REM Disable SSDP Discovery
    sc config SSDPSRV start= disabled

    REM Disable bSuperfetch
    sc config SysMain start= disabled

    REM Disable Block Level Backup Engine Service
    sc config wbengine start= disabled

    REM Disable Diagnostic Policy Service
    sc config DPS start= disabled

    REM Disable Disk Defragmenter
    sc config Defragsvc start= disabled

    REM Disable HomeGroup Listener
    sc config HomeGroupListener start= disabled

    REM Disable HomeGroup Provider
    sc config HomeGroupProvider start= disabled

    REM Disable IP Helper
    sc config iphlpsvc start= disabled

    REM Disable Microsoft iSCSI Initiator Service
    sc config MSiSCSI start= disabled

    REM Disable Themes
    sc config Themes start= disabled

    REM Disable UPnP Device Host
    sc config upnphost start= disabled

    REM Disable Windows Error Reporting Service
    sc config WerSvc start= disabled

    REM Disable WLAN AutoConfig
    sc config Wlansvc start= disabled

    REM Disable WWAN AutoConfig
    sc config WwanSvc start= disabled

    REM Disable Indexing Service
    sc config CISVC start= disabled

    Модификация файла ответов ОС

    Файл ответов (autounattend.xml) располагает в корне установочного носителя и содержит параметры для автоматизации процедуры установки ОС (выбора версии и редакции ОС, выбора места установки, задания пароля администратора, создания учетной записи пользователя и т.д.). Для модификации файла ответов выполните следующие действия:
    1. Смонтируйте файл install.wim, используя команду:
    2. dism /mount-wim /wimfile:"C:\ThinPC\Image\sources\install.wim" /index:1 /mountdir:"C:\ThinPC\Mount"
    3. С помощью приложения Windows System Image Manager, установленной на рабочей станции, создайте новый файл ответов "C:\ThinPC\Mount\autounattend.xml" или используйте файл ответов ниже.
    4. Отмонтируйте файл install.wim и сохраните изменения, используя команду:
    5. dism /Unmount-Wim /MountDir:C:\ThinPC\Mount /Commit
    Данный файл ответов содержит следующие параметры установки:
    • настройка русского языка в качестве системного;
    • настройка английской и русской раскладки языка;
    • автоматическое форматирование жесткого диска и выбор раздела для установки;
    • установка пароля учетной записи Administrator (P@ssw0rd);
    • добавление учетной записи пользователя User без пароля (для последующего автоматического входа в систему после загрузки);
    • пропуск мастера OOBE.
    <?xml version="1.0" encoding="utf-8"?>
    <unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="windowsPE">
    <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <InputLocale>en-US;ru-RU</InputLocale>
    <SystemLocale>ru-RU</SystemLocale>
    <UserLocale>ru-RU</UserLocale>
    <UILanguage>en-US</UILanguage>
    <SetupUILanguage>
    <UILanguage>en-US</UILanguage>
    </SetupUILanguage>
    </component>
    <component name="Microsoft-Windows-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <DiskConfiguration>
    <WillShowUI>OnError</WillShowUI>
    <Disk wcm:action="add">
    <CreatePartitions>
    <CreatePartition wcm:action="add">
    <Order>1</Order>
    <Size>200</Size>
    <Type>Primary</Type>
    </CreatePartition>
    <CreatePartition wcm:action="add">
    <Extend>true</Extend>
    <Order>2</Order>
    <Type>Primary</Type>
    </CreatePartition>
    </CreatePartitions>
    <ModifyPartitions>
    <ModifyPartition wcm:action="add">
    <Format>NTFS</Format>
    <Label>Windows</Label>
    <Order>2</Order>
    <PartitionID>2</PartitionID>
    </ModifyPartition>
    <ModifyPartition wcm:action="add">
    <Active>true</Active>
    <Format>NTFS</Format>
    <Label>System</Label>
    <Order>1</Order>
    <PartitionID>1</PartitionID>
    </ModifyPartition>
    </ModifyPartitions>
    <DiskID>0</DiskID>
    <WillWipeDisk>true</WillWipeDisk>
    </Disk>
    </DiskConfiguration>
    <ImageInstall>
    <OSImage>
    <InstallTo>
    <DiskID>0</DiskID>
    <PartitionID>2</PartitionID>
    </InstallTo>
    <InstallToAvailablePartition>false</InstallToAvailablePartition>
    <WillShowUI>OnError</WillShowUI>
    </OSImage>
    </ImageInstall>
    <UserData>
    <AcceptEula>true</AcceptEula>
    <Organization>Company</Organization>
    </UserData>
    </component>
    </settings>
    <settings pass="oobeSystem">
    <component name="Microsoft-Windows-Deployment" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Reseal>
    <Mode>OOBE</Mode>
    </Reseal>
    </component>
    <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <OOBE>
    <HideEULAPage>true</HideEULAPage>
    <ProtectYourPC>3</ProtectYourPC>
    <NetworkLocation>Work</NetworkLocation>
    <SkipUserOOBE>true</SkipUserOOBE>
    <SkipMachineOOBE>true</SkipMachineOOBE>
    </OOBE>
    <TimeZone>Russian Standard Time</TimeZone>
    <UserAccounts>
    <AdministratorPassword>
    <Value>UABAAHMAcwB3ADAAcgBkAEEAZABtAGkAbgBpAHMAdAByAGEAdABvAHIAUABhAHMAcwB3AG8AcgBkAA==</Value>
    <PlainText>false</PlainText>
    </AdministratorPassword>
    <LocalAccounts>
    <LocalAccount wcm:action="add">
    <DisplayName>User</DisplayName>
    <Name>User</Name>
    <Group>Users</Group>
    </LocalAccount>
    </LocalAccounts>
    </UserAccounts>
    </component>
    </settings>
    <cpi:offlineImage cpi:source="catalog:c:/thinpc/image/sources/thinpc.clg" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
    </unattend>


    Сборка дистрибутива

    Для сборки дистрибутива и создания .ISO образа используется утилита oscdimg.exe из состава WAIK 7. Утилита расположена в каталоге "C:\Program Files\Windows AIK\Tools\x86". Для сборки дистрибутива выполните следующие действия:
    1. Запустите команду:
    2. oscdimg.exe -b"C:\Program Files\Windows AIK\Tools\PETools\x86\boot\etfsboot.com" –u2 –h –m –lTHIN_PC c:\ThinPC\Image c:\ThinPC\ISO\thinpc.iso
    3. После завершения работы команды скопируйте полученный образ на установочный носитель.
    На этом первая часть закончена. В следующем части будет описана установка и настройка ОС на эталонном компьютере для создания образа при помощи VMware Mirage.
    Share:

    1 комментарий: