Собираем образ Windows 10 для Proxmox и FOG

Задача: Собрать образ Win10X64Pro для загрузки через FOG Project с интеграцией драйверов для работы внутри системы виртуализации Proxmox

Мне это нужно дабы обкатывать различные задачи возникающие на рабочем месте с применением уже общепринятой рабочей системы, такой как Windows 10 Pro, увы но Windows 7 остается уже в прошлом ну по крайнем мере ее поддержка заканчивается в январе 2020.

Задача: Хотелось бы еще подготовить bat-файл который будет проделывать все действия в данной заметки одним махом.

Исходные данные:

Тестовый полигон в лице Debian 10 + Proxmox на характеристиках от рига который использовался ранее как платформа для майнинга:

o   Motherboard: Gigabyte 970A-DS3P

o   RAM: HMT451U6AFR8C x 4

o   CPU: AMD FX (tm)-6300 Six-Core Processor

o   HDD: (KINGSTON SA400S37480G, SBFKB1C2)

Также понадобится рабочее место, на котором будет собираться образ Windows 10 (WIN10PE64BIT_PROXMOX) (CPU 1, Cores 4, RAM = 4, HDD = 70), загрузчик и интеграция драйверов и туда, и туда.

Также понадобится развернутый в локальной сети сервис FOG Project на котором будет создано iPXE меню, выбор которого при сетевой загрузке будет устанавливать подготовленный образ Windows 10 Pro x64 Russian

  • Srv-proxmox: 172.33.33.25/24
  • Srv-fog: 172.35.35.7/24

SAMBA, итого объединены заметки:

·        Samba сервис для FOG Management

·        Как установить FOG на Ubuntu 18.04

Шаг №1: Все работы будут проводиться из-под Windows 10 PRO дистрибутив: SW_DVD5_WIN_ENT_LTSB_2016_64BIT_Russian_MLF_X21-07471.ISO + все обновления на 21.10.2019, т.е. Windows 10 Корпоративная 2016 c долгосрочным обслуживанием. [Version 10.0.14393]

Шаг №2: Устанавливаю Windows ADK опираясь на заметку «Как установить ADK на Windows 10»

Шаг №3: Устанавливаю среду предустановки Windows 10 опираясь на заметку «Как получить среду предустановки Windows 10»

Шаг №4: Все действия из-под учетной записи ekzorchik, права группы «Administrators

Шаг №5: Создаю свою структуру необходимых каталогов оперируя ими я создаю образ Windows 10 (сперва я хотел использовать LTSB релиз Windows 10) + драйвера от виртуализации, базирующейся на базе Debian 10 + Proxmox 6

Создал каталог c:\isoproject

Создал каталог c:\drivers

Создал каталог c:\mount

Создал каталог C:\iso

SW_DVD5_WIN_ENT_LTSB_2016_64BIT_Russian_MLF_X21-07471.ISO

virtio-win-0.1.171.iso

Создал каталог C:\virtio

123456789C:\Windows\system32>if not exist c:\isoproject mkdir c:\isoproject C:\Windows\system32>if not exist c:\iso mkdir c:\iso C:\Windows\system32>if not exist c:\mount mkdir c:\mount C:\Windows\system32>if not exist c:\drivers mkdir c:\drivers C:\Windows\system32>if not exist c:\virtio mkdir c:\virtio

Шаг №6: Распаковываю образ SW_DVD5_WIN_ENT_LTSB_2016_64BIT_Russian_MLF_X21-07471.ISO через установленный архиватор в системе 7zip)

123C:\Windows\system32>cd /d “c:\Program Files\7-Zip” c:\Program Files\7-Zip>7z.exe x c:\iso\SW_DVD5_WIN_ENT_LTSB_2016_64BIT_Russian_MLF_X21-07471.ISO -o”c:\isoproject\”

Шаг №7: Распаковываю образ (virtio-win-0.1.171.iso) с драйверами Windows для гипервизора Proxmox 6:

123C:\Windows\system32>cd /d “c:\Program Files\7-Zip” c:\Program Files\7-Zip>7z.exe x c:\iso\virtio-win-0.1.171.iso -o”c:\virtio”

Шаг №8: Получаю информацию по редакциям которые можно устанавливать из образа Windows 10:

1234567891011121314151617c:\Program Files\7-Zip>dism /get-wiminfo /wimfile:c:\isoproject\sources\install.wim Cистема DISM Версия: 10.0.14393.0 Сведения об образе : c:\isoproject\sources\install.wim Индекс: 1 Имя : Windows 10 Корпоративная 2016 с долгосрочным обслуживанием Описание : Windows 10 Корпоративная 2016 с долгосрочным обслуживанием Размер (байт): 12 152 949 819 Операция успешно завершена.

Если применяется файл ответов, то нужно будет строчку «Windows 10 Корпоративная 2016 с долгосрочным обслуживанием» изменить в файле Autounattend.xml строчку:

Изменил на:

<cpi:offlineImage cpi:source="wim:c:/isoproject/sources/install.wim Windows 10 Корпоративная 2016 с долгосрочным обслуживанием" xmlns:cpi="urn:schemas-microsoft-com:cpi" />

На заметку: Файл Autounattend.xml должен располагаться в корне распакованного эталонного образа, на основе которого и создается свой собственный.

Шаг №9: Копирую драйвера (C:\virtio) с образа (Шаг №7) в каталог c:\Drivers

123456789copy /Y c:\virtio\viostor\w10\amd64\* c:\drivers copy /Y c:\virtio\NetKVM\w10\amd64\* c:\drivers copy /Y c:\virtio\Balloon\w10\amd64\* c:\drivers copy /Y c:\virtio\vioserial\w10\amd64\* c:\drivers copy /Y c:\virtio\vioinput\w10\amd64\* c:\drivers

Шаг №10: Монтирую файл install.wim в каталог c:\mount

1C:\Windows\system32>dism /mount-image /imagefile:c:\isoproject\sources\install.wim /mountdir:c:\mount /index:1

Шаг №11: Интегрирую в каталог C:\mount каталог с драйверами C:\drivers:

1C:\Windows\system32>dism /image:c:\mount /add-driver:c:\drivers /recurse /forceunsigned

Шаг №12: Собираю файл install.wim воедино:

1C:\Windows\system32>dism /unmount-wim /mountdir:c:\mount /commit

Шаг №13: Столкнулся с тем, что, когда подсовываю свой Autounattend.xml в каталог c:\isoproject (распакованный образ SW_DVD5_WIN_ENT_LTSB_2016_64BIT_Russian_MLF_X21-07471.ISO), формирую iso Образ, загружаю его на Proxmox 6, создаю VM и с нее гружусь получаю.

Ошибка "Отсутствуют доступные образы"

Отсутствуют доступные образы

Уже что только не делал все равно данная ошибка. В файле Autounattend.xml

<cpi:offlineImage cpi:source="wim:c:/isoproject/sources/install.wim#Windows 10 Корпоративная 2016 с долгосрочным обслуживанием" xmlns:cpi="urn:schemas-microsoft-com:cpi" />

Описание взято из вывода:

12345678910111213141516171819C:\Windows\system32>dism /get-wiminfo /wimfile:c:\isoproject\sources\install.wim Cистема DISM Версия: 10.0.14393.0 Сведения об образе : c:\isoproject\sources\install.wim Индекс: 1 Имя : Windows 10 Корпоративная 2016 с долгосрочным обслуживанием Описание : Windows 10 Корпоративная 2016 с долгосрочным обслуживанием Размер (байт): 12 118 483 975 Операция успешно завершена. C:\Windows\system32>

Возникает вопрос что не так? Если не использовать Autounattend.xml то iso Образ работоспособный если устанавливать вручную следуя за шагами мастера при загрузке с CD/DVD Rom.

А если попробовать образ Windows 10 Pro: SW_DVD9_Win_Pro_10_1903.1_64BIT_Russian_Pro_Ent_EDU_N_MLF_X22-14082.ISO

Сперва структура файлов:

  • C:\iso\Autounattend_pro.xml
  • C:\iso\ SW_DVD9_Win_Pro_10_1903.1_64BIT_Russian_Pro_Ent_EDU_N_MLF_X22-14082.ISO
  • C:\iso\ virtio-win-0.1.171.iso
  • C:\iso\proxmox_pro.bat

Где содержимое proxmox_pro.bat

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889@echo off rem for Proxmox rem SCSI Controller: VirtIO SCSI rem SATA0 if not exist c:\iso mkdir c:\iso if exist “c:\Program Files\7-Zip\7z.exe” goto 1 :1 if exist C:\iso\SW_DVD9_Win_Pro_10_1903.1_64BIT_Russian_Pro_Ent_EDU_N_MLF_X22-14082.ISO goto 2 :2 if exist C:\iso\virtio-win-0.1.171.iso goto 3 :3 rmdir /S /Q c:\mount rmdir /S /Q c:\virtio rmdir /S /Q c:\drivers rmdir /S /Q c:\isoproject if not exist c:\isoproject mkdir c:\isoproject if not exist c:\mount mkdir c:\mount if not exist c:\drivers mkdir c:\drivers if not exist c:\virtio mkdir c:\virtio cd /d “c:\Program Files\7-Zip” 7z.exe x c:\iso\SW_DVD9_Win_Pro_10_1903.1_64BIT_Russian_Pro_Ent_EDU_N_MLF_X22-14082.ISO -o”c:\isoproject\” 7z.exe x c:\iso\virtio-win-0.1.171.iso -o”c:\virtio” rem Copy Drivers to Drivers rem copy /Y c:\virtio\amd64\w10\* c:\drivers copy /Y c:\virtio\viostor\w10\amd64\* c:\drivers copy /Y c:\virtio\NetKVM\w10\amd64\* c:\drivers copy /Y c:\virtio\Balloon\w10\amd64\* c:\drivers copy /Y c:\virtio\vioserial\w10\amd64\* c:\drivers copy /Y c:\virtio\vioinput\w10\amd64\* c:\drivers dism /export-image /sourceimagefile:c:\isoproject\sources\install.wim /sourceindex:3 /destinationimagefile:c:\windows\temp\install.wim /compress:max /checkintegrity copy /Y c:\windows\temp\install.wim c:\isoproject\sources\install.wim del c:\windows\temp\install.wim rem mount install.win in catalog c:\mount dism /mount-image /imagefile:c:\isoproject\sources\install.wim /mountdir:c:\mount /index:1 dism /get-wiminfo /wimfile:c:\isoproject\sources\install.wim copy /Y c:\iso\Autounattend_pro.xml c:\isoproject\Autounattend.xml rem add drivers to c:\mount dism /image:c:\mount /add-driver:c:\drivers /recurse /forceunsigned rem Sobiraem install.wim dism /unmount-wim /mountdir:c:\mount /commit dism /cleanup-wim rem Create ISO cd /d “c:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg” oscdimg -u2 -m -o -lWin10ProX64_Proxmox -b”c:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg\etfsboot.com” c:\isoproject c:\Win10ProX64_Proxmox.iso cd /d %systemroot%\system32

После через правый клик мышью на proxmox_pro.bat выбираю «Запуск от имени администратор», скрипт проходит по всем шагам. В итоге на диске C:\ получаю сформированный iso файл: Win10ProX64_Proxmox.iso

Загружаю его на Proxmox 6

https://IP&DNS:8006 – user&pass – (Folder View) – Datacenter – Storage – local (srv-proxmox) – Content – Upload – указываю сформированный iso файл, он загружается на гипервизор:

Сформированный iso образ залил на Debian 10 + Proxmox 6

Далее создаю VM и указываю ей:

  • SCSI Controller: VirtIO SCSI
  • Hard disk: Sata0 (Установка проходит)

Выбираю загрузку с диска и запускаю VM, происходит загрузка с iso образа – установка завершается успешно, все драйвера установлены:

Установка Windows 10 LTSB + virtio в ручном режиме успешно устанавливается

Ладно пусть будет не Windows 10 LTSB, а Windows 10 Pro.

Шаг №14: Так образ Windows 10 Pro + интегрированные драйвера для работы под виртуализацией Debian 10 + Proxmox 6 у меня есть, нужно подготовить образ winpe дабы с него при использовании iPXE меню сервиса FOG Project (srv-fog = 172.35.35.7) запускалась сетевая установка которую я в последнее время применяю везде.

Win + Windows Kits – Среда средств развертывания и работы с образами и запускаем ее с правами «Администратора».

copype amd64 c:\winpex64

ERROR: The following processor architecture was not found: amd64.

Failed! - странно ведь материнская плата у меня под сокет AM3+ и она 64-разрядная

Решение: открываю (C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment) на редактирование скрипт «copype.cmd» и определяю следующие переменные в начале файла:

123“set WinPERoot=C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment” “set OSCDImgRoot=C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg”
Добавляю переменные окружения в copype.cmd

Повторяю заново:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools>if exist c:\winpex64 rmdir /S /Q c:\winpex64 C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools>copype amd64 c:\winpex64 C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools>cd “..\..\Assessment and Deployment Kit\Windows Preinstallation Environment” C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment>copy amd64\en-us\winpe.wim c:\winpex64\media\sources\boot.wim /Y C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment>dism /cleanup-wim C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment>dism /mount-wim /wimfile:c:\winpex64\media\sources\boot.wim /index:1 /mountdir:c:\mount C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment>echo wpeinit > c:\mount\Windows\System32\startnet.cmd C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment>echo net use M: \\172.35.35.7\install\win10proxmox 712mbddr@ /user:ekzorchik >> c:\mount\Windows\System32\startnet.cmd C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment>echo cd /d M:\ >> c:\mount\Windows\System32\startnet.cmd C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment>echo setup.exe /unattend:Autounattend.xml >> c:\mount\Windows\System32\startnet.cmd C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment>dism /image:c:\mount /add-driver:”c:\drivers” /recurse /forceunsigned Searching for driver packages to install… Found 5 driver package(s) to install. Installing 1 of 5 – c:\drivers\balloon.inf: The driver package was successfully installed. Installing 2 of 5 – c:\drivers\netkvm.inf: The driver package was successfully installed. Installing 3 of 5 – c:\drivers\vioinput.inf: The driver package was successfully installed. Installing 4 of 5 – c:\drivers\vioser.inf: The driver package was successfully installed. Installing 5 of 5 – c:\drivers\viostor.inf: The driver package was successfully installed. Операция успешно завершена. C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment>dism /unmount-wim /mountdir:c:\mount /commit C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment>copy “C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\DISM\imagex.exe” c:\winpex64 C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment>cd /d “C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg” C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg>oscdimg -n -bC:\winpex64\fwfiles\etfsboot.com c:\winpex64\media c:\winpex64\winpe10proxmox_amd64.iso C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg>exit

Шаг №15: Копирую полученный winpe10proxmox_amd64.iso и Win10ProX64_Proxmox.iso на сервер где работает роль FOG Project

Но т.к. я сейчас на Windows 10 LTSB то у меня нет возможности задействовать заметку “Установка Ubuntu 18.04 внутри Windows 10 Pro”. Хотя это интересная задумка, надо разобрать – ведь в работе нужно иметь множество инструментов.

А значит копирую Win10ProX64_Proxmox.iso и winpe10proxmox_amd64.iso на уже существующую расшаренную папку сервиса SAMBA которая все там же у меня на сервисе FOG.

1234567C:\Windows\system32>net use L: \\172.35.35.7\install C:\Windows\system32>copy /Y c:\Win10ProX64_Proxmox.iso L:\ C:\Windows\system32>copy /Y c:\winpex64\winpe10proxmox_amd64.iso L:\ C:\Windows\system32>net use L: /delete

Шаг №16: Далее мне понадобится клиент SSH дабы подключиться к srv-fog, но так как мое рабочее место это Ubuntu 18.04 Desktop amd64 ноутбука Lenovo E555 то запускаю терминал и подключаюсь, если с Windows 10, то нужно скачать клиент putty.exe

Подключаюсь через putty к FOG

Шаг №17: С учетом моей специфики расположения загрузочного образа winpe и образа установки Windows 10 размещаю их.

1234567891011121314151617181920212223242526272829303132333435363738394041ekzorchik@srv-fog:~$ cat /etc/samba/smb.conf [install] comment = Windows Workstation path = /windows read only = no browseable = yes public = yes printable = no guest ok = yes oplocks = no level2 oplocks = no locking = no acl allow execute always = true ekzorchik@srv-fog:~$ sudo cp /windows/winpe10proxmox_amd64.iso /var/www/fog/iso/ ekzorchik@srv-fog:~$ sudo chown -R www-data:www-data /var/www/fog/iso/ ekzorchik@srv-fog:~$ sudo mkdir -p /windows/win10proxmox ekzorchik@srv-fog:~$ sudo mount -o loop /windows/Win10ProX64_Proxmox.iso /mnt/loop ekzorchik@srv-fog:~$ sudo cp -fr /mnt/loop/* /windows/win10proxmox/ ekzorchik@srv-fog:~$ sudo umount /mnt/loop ekzorchik@srv-fog:~$ sudo chown -R nobody:nogroup /windows/win10proxmox/ ekzorchik@srv-fog:~$ exit

Шаг №18: Создаю iPXE меню в системе сетевого развертывания FOG Project

http://IP&DNS/fog - user&pass - FOG Configuration – iPXE New Menu Entry

  • Menu Item: WIN10PE64BIT_PROXMOX
  • Description: WIN10PE64BIT_PROXMOX
  • Paramenters:

set path /fog/iso/

initrd http://${fog-ip}${path}/winpe10proxmox_amd64.iso

chain memdisk iso raw

  • Menu Show with: All Hosts

И нажимаю Save Changes

Шаг №19: Теперь тестирую данный образ

Создаю VM (VM Name: test) с типом Windows 10

  • RAM = 4Gb
  • HDD = 50Gb
  • CPU = 1, Cores = 2
  • SCSI Controller: VirtIO SCSI
  • Hard Disk: sata0 (Установка проходит)
  • Hard disk: VirtIO (Установка проходит)

Жаль, что в заметке «Собираем образ Windows 7 для Proxmox и FOG» работает только при выборе SATA, а не VirtIO.

и указываю что сперва следует грузиться по сети, далее выбираю на iPXE меню выбора что устанавливать строку с надписью «WIN10PE64BIT_PROXMOX»

Выбираю меню сетевой установки WIN10PE64BIT_PROXMOX

И установка пошла успешно

И установка пошла

Ожидаю…

Установка завершается, отрабатывает предопределенный в Autounattend.xml AutoLogon и система полностью развернута с интегрированными драйверами для Proxmox 6

Итого: Windows 10 Pro + virtio успешно установлена на гипервизор Debian 10 + Proxmox 6

Работает. Вот еще одна практическая заметка в мою копилку. Теперь тесты под Proxmox 6 для Windows 7 & Windows 10 будут на раз и два, так как я не трачу время на развертывание тестовых систем. На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.