пятница, 1 марта 2019 г.

Windows 10. SCCM Offline servicing, dism.

При подготовке к миграции на Windows 10, пришлось немало поразбираться с различными тонкостями. Бытует мнение, что очень хорошей практикой при установке Windows 10 является использование install.wim, входящим в родной iso Windows 10, что и было решено попробовать.

Использование штатного install.wim оправдано, если вам не нужно делать capture системы, в которой "зашито" какое-то ПО . Возможно, оно не умеет устанавливаться в silent режиме или есть какие-то тонкости с донастройкой после установки, которые нельзя прикатить централизованно.

Для минимизации времени установки Windows 7, мы использовали capture, т.к. в системе был установлен office 2013. Раз в месяц шаблон конвертировался в ВМ, устанавливались все обновления на ОС и Office, дальше ВМ опять конвертировалась в шаблон, делался клон, он захватывался. С появлением office 2019 все немного изменилось и данная процедура потеряла смысл.

Мы остановились на редакции Windows 10 2019 LTSC. Берем наш install.wim, добавляем в SCCM, с помощью Offline Servicing (у вас должен быть SUP) пытаемся накатить на него Service Stack Update (а его нужно накатить в первую очередь. В данный момент актуальной версией является kb4470788), он успешно применяется к образу. После этого пытаемся добавить последний Cumulative Update (в данный момент актуальным является февральский kb4487044), смотрим в OfflineServicingMgr.log и видим там ошибку:
InstallUpdate returned code 0x80073713
Failed to install update with ID 16827616 on the image. ErrorCode = 14099
При этом, если попробовать установить обновление для Adobe Flash - оно устанавливается нормально. Гуглил-гуглин, очень много сообщений о том, что именно CU не устанавливаются в режиме SCCM - Offline Servicing. Кто-то пишет, что какие-то CU ставятся, какие-то нет. Находил информацию, что проблема действительно имеет место быть, она известна разработчикам, но там что-то сильно поменяли в механизме и править в ближайшем будущем не будут (но это не точно).

Что ж, берем в руки dism и делаем все то же самое и даже больше.
1. Монтируем стандартный install.wim
dism /mount-image /imagefile:"c:\img\install.wim" /mountdir:c:\mounted /index:1
2. Устанавливаем Service Stack update
dism /add-package /image:"c:\mounted" /packagepath="C:\upd\windows10.0-kb4470788-x64_76f112f2b02b1716cdc0cab6c40f73764759cb0d.msu" /logpath=c:\upd\dism.log
3. Устанавливаем актуальный CU
dism /add-package /image:"c:\mounted" /packagepath="C:\upd\windows10.0-kb4487044-x64_6024f9853d489cf4eab66ce2145e91df45183de7.msu" /logpath=c:\upd\dism.log

4. Устанавливаем обновление для Adobe Flash
dism /add-package /image:"c:\mounted" /packagepath="C:\upd\windows10.0-kb4487038-x64_1f1aed068ed38987aa2c100e7e01292404be1703.msu" /logpath=c:\upd\dism.log
Обновления интегрированы, можно было бы размонтировать образ и получить пропатченный install.wim, но образ получается слишком толстым (примерно на 1Гб больше, чем базовый), поэтому мы сделаем небольшой Cleanup.
Если выполнить команду

dism /image:"c:\mounted" /get-packages /format:table
можно увидеть, что у нас появились одно замененное обновление.


Выполняем 
dism /image:"c:\mounted" /Cleanup-Image /StartComponentCleanup /ResetBase
После этого можно выполнить еще раз 
dism /image:"c:\mounted" /get-packages /format:table
и убедиться, что замененных обновлений уже нет.

Дальше нам нужно отключить образ и применить к нему выполненные изменения
 Dism /Unmount-image /MountDir:c:\mounted /commit
Видим, что образ стал значительно меньше, но и это еще не все. Если сделать export образа с максимальным сжатием, то образ станет еще меньше:
Dism /Export-Image /SourceImageFile:"c:\img\install.wim" /SourceIndex:1 /DestinationImageFile:"c:\img\install-patched.wim" /compress:max
После этого, полученный образ обновляем на SCCM и получаем полностью обновленную систему.

А дальше, каждый месяц после Patch Tuesday мы берем уже не свой пропатченный в прошлом месяце install.wim, а опять стандартный и проделываем ту же самую процедуру, что бы не копить возможный мусор. 
Данную процедуру, естественно, можно автоматизировать.

В следующий раз расскажу немного о зачистке стандартного install.wim от не очень нужных или, наоборот, очень нужных нам компонентах.

Комментариев нет:

Отправить комментарий