Собираем образ 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
123456789 | C:\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
)
123 | C:\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:
123 | C:\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:
1234567891011121314151617 | c:\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
123456789 | 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 |
Шаг №10: Монтирую файл install.wim
в каталог c:\mount
1 | C:\Windows\system32>dism /mount-image /imagefile:c:\isoproject\sources\install.wim /mountdir:c:\mount /index:1 |
Шаг №11: Интегрирую в каталог C:\mount
каталог с драйверами C:\drivers:
1 | C:\Windows\system32>dism /image:c:\mount /add-driver:c:\drivers /recurse /forceunsigned |
Шаг №12: Собираю файл install.wim
воедино:
1 | C:\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" />
Описание взято из вывода:
12345678910111213141516171819 | C:\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
файл, он загружается на гипервизор:
Далее создаю VM
и указываю ей:
SCSI Controller: VirtIO SCSI
Hard disk: Sata0 (Установка проходит)
Выбираю загрузку с диска и запускаю VM
, происходит загрузка с iso
образа – установка завершается успешно, все драйвера установлены:
Ладно пусть будет не 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” |
Повторяю заново:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | C:\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
.
1234567 | C:\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
Шаг №17: С учетом моей специфики расположения загрузочного образа winpe
и образа установки Windows 10
размещаю их.
1234567891011121314151617181920212223242526272829303132333435363738394041 | ekzorchik@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
»
И установка пошла успешно
Ожидаю…
Установка завершается, отрабатывает предопределенный в Autounattend.xml AutoLogon
и система полностью развернута с интегрированными драйверами для Proxmox 6
Работает. Вот еще одна практическая заметка в мою копилку. Теперь тесты под Proxmox 6
для Windows 7 & Windows 10
будут на раз и два, так как я не трачу время на развертывание тестовых систем. На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.