вторник, 2 августа 2016 г.

Автоустановка обновлений Windows 7. Часть 2

Приветствую читателей блога!

Учитывая опыт работы с предыдущими версиями Набора скриптов, а также замечания и пожелания от пользователей, была написана новая версия Набора, устраняющая недостатки предыдущих.

Набор скриптов AutoUpdate7v3

Набор предназначен для автоматизации установки обновлений Windows 7 (x86/x64) по обновляемым Спискам на форуме Ru-Board

Возможности Набора:
  • Генерация пакетов обновлений по Спискам
  • Генерация частичного пакета обновлений, исключая уже установленные в системе (новая)
  • Автоматическая установка пакета обновлений
  • Возможность работы с флешки (новая)
  • Русскоязычный интерфейс (новая)
  • Загрузка только недостающих файлов и их сортировка (новая)
  • Поиск нежелательных обновлений
Преимущества Набора:
  • Установка критически важных обновлений сразу после (пере)установки Windows происходит значительно быстрее чем при использовании Центра Обновления, исключается установка нежелательных
  • Возможность установить критические обновления при ошибках ЦО
  • Файлы обновлений загружаются напрямую с серверов Microsoft
  • Не используется стороннее ПО, только средства самой Windows
  • Малый размер Набора для загрузки
  • Возможность самостоятельно отредактировать список загрузки
  • Удобно хранить все файлы обновлений в папке Набора на компьютере или флешке
Набор тестировался с флешки на виртуальных машинах (x86 и x64). Вопросы, пожелания, замечания просьба писать в комментариях.

Обновление набора AutoUpdate7v3.1

  • Набор переходит на "короткий" список, с учётом установки KB3125574 
  • Список "нежелательных" обновлений больше не используется
  • Для отключения телеметрии, устанавливаемой "в нагрузку" к KB3125574, используется специальный скрипт.
В остальном всё остаётся без изменений.


Ссылки


Дополнительно:

воскресенье, 10 июля 2016 г.

Дистрибутив Windows 7 с обновлениями

Автоустановка обновлений это удобно, но можно создать дистрибутив с уже интегрированными обновлениями, и дополнительно сэкономить время при установке системы. Мне известны два способа интеграции:
  • С помощью DISM (встроена в Windows 7)
  • C помощью ImageX (входит в состав WAIK)
Оба способа расписаны в Интернете с разной степенью подробности, вкратце суть первого - пакеты обновлений интегрируются напрямую в установочный образ, второго - обновления устанавливаются на тестовой системе, с которой впоследствии снимается образ. Метод DISM выглядит более простым в реализации, но к сожалению, не даёт 100% гарантии установки всех обновлений (например, нельзя интегрироать NET Framework).
Остаётся метод ImageX, который помимо обновлений также позволяет интегрировать любые приложения (кроме тех, которые имеют собственные драйверы: антивирусы, эмуляторы дисководов и т.п.). Этот метод будет рассмотрен в статье пошагово.

Что нам понадобится:

Этап I. Подготовка WAIK

Установим VMware Workstation 12 Pro, триальную версию. WAIK рекомендуется запускать на системе с архитектурой x86, поскольку моя рабочая система x64, я буду использовать виртуальную x86.

Создадим виртуальную машину (ВМ) Windows 7 x86, назовём её WAIK
 
 
 
 
 

Настроим оптический привод ВМ - эмулятор (можно и физический или ISO-файл).
 

Вставляем дистрибутив Windows 7 x86 в "дисковод" и устанавливаем по умолчанию
 
 
 
 

Установим виртуальные драйверы


Подключим папку для обмена с хост-машиной, папку назовём Share
 
 
 
 

Установим пакет WAIK на виртуальную машину
 
 
 


Этап II. Подготовка WinPE

WinPE - Windows Preinstallation Environment это среда предустановки - минимальная версия операционной системы, предназначенная для установки полной версии. Для работы с x86 и x64 версиями ОС понадобятся две версии WinPE.
Запустим ВМ с установленным WAIK.
Запустим Командную строку средств развертывания от имени администратора.

Совет: для того, чтобы не набирать текст в командной строке, выделите его, скопируйте и вставьте в окно виртуальной машины ПКМ "вставить"

Создадим рабочую папку x86:
copype x86 c:\winpe

Скопируем загрузочный образ:
copy c:\winpe\winpe.wim c:\winpe\ISO\sources\boot.wim
 

Скопируем утилиту ImageX в корень будущего диска:
copy "c:\Program Files\Windows AIK\Tools\x86\imagex.exe" c:\winpe\ISO\

Запишем команду захвата образа на наш будущий диск в виде текстового файла, чтобы потом не набирать. Команда будет такая:
e:\imagex /capture d: d:\install.wim "Windows 7 ULTIMATE" "Windows 7 ULTIMATE (x86) Upd" /compress maximum  /boot /verify
Захватить образ диска D:, записать на диск D: в файл install.wim, имя образа, описание образа, сжатие максимальное, образ загрузочный, проверить при создании.
*При установке по умолчанию, Windows создаёт скрытый раздел, при загрузке в WinPE он получит букву C:, системный получит букву D:

Соберем загрузочный диск WinPE:
oscdimg -n -bc:\winpe\etfsboot.com c:\winpe\ISO c:\winpe\winpe.iso
 


Теперь проделаем тоже самое для x64 версии:
Создадим рабочую папку x64:
copype amd64 c:\winpe64
 
 
Скопируем загрузочный образ:
copy c:\winpe64\winpe.wim c:\winpe64\ISO\sources\boot.wim
 

Скопируем утилиту ImageX в корень диска:
copy "c:\Program Files\Windows AIK\Tools\amd64\imagex.exe" c:\winpe64\ISO\
 

Запишем команду захвата образа в текстовый файл
e:\imagex /capture d: d:\install.wim "Windows 7 ULTIMATE" "Windows 7 ULTIMATE (x64) Upd" /compress maximum  /boot /verify

Соберем загрузочный диск WinPE x64:
oscdimg -n -bc:\winpe64\etfsboot.com c:\winpe64\ISO c:\winpe64\winpe64.iso
 

Теперь скопируем оба образа в папку Share:
 Можно закрыть все окна и завершить работу ВМ "WAIK"


Этап III. Подготовка и захват установочного образа

Этот этап будем рассматривать на примере x86. Для x64 все действия будут идентичны.
Создадим новую ВМ Windows 7 x86, назовём её Tune86 - настроечная.
Загрузим ВМ в BIOS и установим приоритет загрузки с оптического привода:
 
 
Вставим исходный дистрибутив Windows в "дисковод" и установим ОС с настройками по умолчанию до экрана приветствия:

Ничего не набираем, нажимаем сочетание CTRL+SHIFT+F3 - система перезагрузится в режиме аудита, появится окно sysprep. Это окно НЕ ЗАКРЫВАЕМ во время последующих операций! Драйверы VMware устанавливать не нужно.

Скачиваем и устанавливаем обновления, как написано в этой статье.
*Чтобы скопировать папку в виртуальную машину, можно использовать флешку (попеременно подключая её к ВМ и к хосту), или записать в ISO-образ.
Когда обновления будут установлены, можно дополнительно установить нужные вам приложения. После установки нужно будет очистить системный диск от ненужных файлов (пакетов обновлений, дистрибутивов программ и т.д.), также можно запустить программу "Очистка диска" и дополнительно освободить место.
НЕ РЕКОМЕДУЮ запускать Центр обновления Windows и устанавливать самые свежие, это может привести к очень долгому поиску обновлений при последующей установке с захваченного образа!
Совет: можно заархивировать папку с файлами настроечной ВМ, на случай ошибки при захвате или для возможности внесения изменений.
Теперь нужно настроить sysprep на подготовку к использованию, и завершить работу.
После подготовки система не должна ЗАГРУЖАТЬСЯ ДО ЗАХВАТА образа!

Вставим winpe.iso в эмулятор (для захвата x64 системы понадобится winpe64.iso) и загрузимся с него. Важно не пропустить сообщение "Press any key...", иначе загрузится подготовленная система!

Запустим Блокнот из командной строки

Проверим буквы дисков: C: "зарезервировано системой" D: системный диск Windows (его будем захватывать и на него же писать образ), X: RAM-диск с образом WinPE, E: оптический дисковод.

Теперь найдём наш текстовик с командой в корне диска E:, скопируем команду и вставим в командную строку:
 

Захват образа займет примерно 30 минут.

После захвата нужно выключить настроечную ВМ через меню VMware.

Теперь нам нужно скопировать захваченный install.wim в ВМ WAIK. Для этого подключим виртуальный диск одной машины к другой в режиме чтения:
 
 
 
 
 
 
 


Этап IV. Сборка дистрибутива

Запустим WAIK, убедимся, что второй диск от настроечной ВМ подключен:

Перейдём в папку C:\winpe, очистим папку ISO. Скопируем содержимое исходного дистрибутива Windows в папку ISO:

Удалим исходные ei.cfg, все файлы каталогов *.clg, и install.wim:
Файл каталога описывает каждую редакцию, находящуюся в install.wim. Файл ei.cfg "задаёт" устанавливаемую редакцию, если его удалить из исходного образа, появится возможность выбора редакции при установке. Каталоги удалять нужно в любом случае, так как мы заменяем исходный install.wim.

Скопируем захваченный install.wim в нашу папку ISO:

Создадим каталог. Запускаем Диспетчер от администратора:

Открываем наш install.wim:

Ждём несколько минут:

Каталог создан, закрываем диспетчер образов:

Можно приступать к сборке дистрибутива.
Запускаем командную строку средств развертывания от администратора:

Выполним команду сборки ISO дистрибутива:
oscdimg -u2 -lW7USP1UPD -m -o -bc:\winpe\etfsboot.com c:\winpe\iso c:\winpe\w7usp1upd.iso
Ключи:
-u2 - файловая система только UDF
-l  - метка диска
-m  - игнорировать ограничение максимального размера диска
-o  - параметр оптимизации
-b  - файл загрузочного сектора
    - обрабатываемая папка
    - имя и расположение готового ISO

ISO будет собран за пару минут:

Скопируем готовый дистрибутив в папку Share, закроем все окна, выключим WAIK, отмонтируем диск настроечной ВМ от WAIK:

Для дистрибутива x64 рабочая папка будет c:\winpe64
Команда сборки ISO будет выглядеть так:
oscdimg -u2 -lW7USP1UPD -m -o -bc:\winpe64\etfsboot.com c:\winpe64\iso c:\winpe64\w7usp1upd64.iso
Наш дистрибутив готов!


Этап V. Проверка дистрибутива

Установим систему с нашего дистрибутива на ВМ Tune86, в процессе установки удалим все существующие разделы и установим по умолчанию:

Установка продлится несколько дольше, чем с оригинального дистрибутива. Ускорить установку можно, задав параметр /compress fast при захвате образа, также это значительно сократит время захвата, но увеличит размер образа. Для современных флеш-накопителей размер уже не имеет значения, можете поэкспериментировать с этим параметром самостоятельно.

После установки настроим центр обновления Windows и выполним поиск обновлений:
 
 
 

Выберем актуальные, скроем нежелательные, устанавливаем:
 

Система полностью обновлена:

На этом всё! Вопросы задавайте в комментариях.