Разные заметки

пятница, 8 июня 2012 г.

Собираем свой дистрибутив Windows 7 с программами

Если приходится часто переустанавливать систему или есть парк машин с фиксированым софтом и настройками, то стоит задуматься о создании своего дистрибутива.
В моей ситуации это был офис с парком ноутбуков и определенным количеством программ и строгими настройками.

Итак, дано:

Исходный дистрибутив Windows 7, пусть будет Starter к примеру.
Некое количество программ, к примеру:


1. Office 2007 Standart Rus
2. Google Chrome
3. 7zip
4. Notepad++
5. PuntoSwitcher
6. FoxitReader
7. Skype
8. MS Essential
9. TeamViewer Host

Настройки для всех пользователей:

1. Панель задач - использовать маленькие значки
2. Значки области уведомлений - Всегда отображать все значки
3. Игры удалить
4. Запрет подключения USB накопителей
5. Запрет записи на все внешние носители
6. Подключение сетевых дисков


Нам понадобятся таки инструменты:

0. Ваш рабочий компьютер (ПК1) с установленной системой Windows 7 любой разрядности. В случае х64 есть нюанс, но о нем ниже.
1. Установочный диск Windows 7 (в моем случае x86 Starter), можно скачать из интернета или с MSDN — у кого есть доступ к подписке, для экспериментов, нам даже НЕ понадобится ключ продукта т.к. Windows 7 нормально ставится и без него и после установки, мы можем «глумиться» над полнофункциональной системой, не менее 30 дней.
2. Установочный диск WAIK (Windows Automated Installation Kit), скачать можно, совершенно спокойно, с сайта Microsoft.
3. Виртуальная машина (VM), ну или физическая машина (ПК2) - если таковая имеется в наличии.
4. Набор драйверов, которые будет установлены в системе.
5. Дистрибутивы приложений, которые будут установлены в системе и в последствии будут разворачиваться во время установки операционной системы, автоматически (я ставил все с www.ninite.com ). 

План действий.
1. Установка операционной системы с установочного диска Windows 7
2. Теперь применим твики реестра.
3. Подготовка системы с помощью утилиты sysprep.
4. Переходим к подготовке образа Windows PE
5. Захват образа установленной системы.
6. Создание дистрибутивного образа ISO.
7. Интеграция драйверов в образ.
Приступим.


1. Установка операционной системы с установочного диска Windows 7
Устанавливаем Windows 7 Starter в VM или на ПК2. Советую первый образ делать x86 в любом случае, для тренировки и еще кое-чего, о чем ниже.
Установка не таит в себе никаких хитростей. Если вы планируете сохранить настроенный образ на несистемном разделе диска, используйте программу установки для создания разделов и создайте два раздела в VM (или ПК2) при установке.
Совет. При установке системы на VMWare Workstation или Virtual Server 2005 можно подключить второй виртуальный диск и впоследствии использовать его для сохранения образа. Это упростит копирование образа в вашу рабочую среду, поскольку в этих виртуальных машинах есть возможность подключения виртуального диска к физической системе.

Продолжайте установку вплоть до этапа OOBE. Его легко узнать по предложению выбрать имя учетной записи и имя компьютера.

На этом этапе, не выбирая имя учетной записи, нажмите CTRL+SHIFT+F3. Эта комбинация клавиш переведет систему в режим аудита с правами встроенной учетной записи Администратор.

Система перезагрузится, появится надпись "Программа установки подготавливает компьютер к первому использованию". Затем вы увидите рабочий стол:
Не закрывайте данное окно. Если все-таки закрыли, что делать будет сказано ниже.

Теперь можно поставить нужные программы, так же я установил обновления через Центр обновлений Windows. Если для установки приложения требуется перезагрузка системы, вы можете это сделать. После перезагрузки система вернется в режим аудита.

В "Панели управления - Программы и компоненты" через оснастку "Включение или отключение компонентов Windows" я отключаю игры и платформу гаджетов Windows, включаю клиент telnet (помогает иногда для диагностики).

2. Теперь применим твики реестра.

Особенность применения твиков на данном этапе в том, что мы не можем применить пользовательские настройки привычным способом, т.к. реального пользователя ещё не существует, а значит, не существует и его реестра. Решение задачи сводится к настройке пользователя по умолчанию (Default User), который станет донором для всех, создаваемых впоследствии пользователей.

Файл реестра пользователя по умолчанию находится по пути C:\Users\Default\NTUSER.DAT и чтобы внести в него изменения, необходимо подключить этот файл к активному реестру. Для этого выполняем команду:

reg load HKEY_USERS\Custom C:\Users\Default\NTUSER.DAT

Теперь вы можете открыть реестр (WIN+R >> regedit) и убедиться, что появилась новая ветка HKEY_USERS\Custom, в которую нам, как раз и предстоит внести настройки.

Применяем такие настройки:
Windows Registry Editor Version 5.00

;Использовать маленькие значки на панели задач
[HKEY_USERS\Custom\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"TaskbarSmallIcons"=dword:00000001

;Отображать все значки и уведомления в области уведомлений
[HKEY_USERS\Custom\Software\Microsoft\Windows\CurrentVersion\Explorer]
"EnableAutoTray"=dword:00000000

;Запрет на использование USB-накопителей
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\USBSTOR]
"Start"=dword:00000004

После применения этого твика выгружаем файл реестра командой:

reg unload HKEY_USERS\Custom

Данный способ подсмотрен здесь.
Если установлены все программы, и сделаны все настройки, то выполняется подготовка с помощью утилиты sysprep.

3. Подготовка системы с помощью утилиты sysprep.

При ручной установке системы утилита sysprep запускается при входе в режим аудита. Для подготовки системы к дальнейшему использованию (в данном случае — к созданию настроенного образа) необходимо задать утилите параметры, как показано на рисунке ниже.

Или. если вы случайно закрыли это окно командой:

%SystemRoot%\system32\sysprep\sysprep.exe /generalize /oobe /shutdown /quiet

Первые три параметра командной строки указаны в том же порядке, что и описанные выше параметры графического интерфейса утилиты. Parametr /quiet — обеспечивает работу в тихом режиме и необходим для автоматизации.Теперь рассмотрим два последних.
После того, как sysprep завершит работу, система будет выключена. Теперь она полностью настроена, и можно создать ее образ с помощью утилиты ImageX.


4. Переходим к подготовке образа Windows PE
Windows Preinstallation Environment, что это такое, можно прочитать в Википедии.
Если вкратце, то эта "штука" загружается при установке Windows и являет собой оболочку для инсталлятора.

Дальнейшие действия производим на рабочем компьютере ПК1.

Нам необходимо установить WAIK. После этого:
Мы создаем дистрибутив Windows 7 Starter, тогда и образ для захвата будет Windows PE x86. Для начала, открываем командную строку, WIN+R пишем в ней CMD и жмем Enter.
Переходим в папку с файлами WinPE:

cd c:\Program Files\Windows AIK\Tools\PETools

Теперь, нам необходимо скопировать файлы Windows PE. Назовем папку win_pex86 и скопируем в нее файлы архитектуры x86, папку заранее создавать не требуется, она создается автоматически, при копировании.

copype.cmd x86 d:\win_pex86

Также, нам необходимо, закинуть ImageX в папку d:\win_pex86\ISO

copy "c:\Program Files\Windows AIK\Tools\x86\imagex.exe" d:\win_pex86\ISO

На всякий случай, добавим в наш диск, средство диагностики памяти, по умолчанию оно не добавляется, но в меню присутствует, делается это на тот случай, когда при установке возникают непонятные глюки системы и тест памяти может сильно облегчить жизнь, когда причина сбоя непонятна, а скачать и нарезать на болванку нет возможности:

copy c:\Windows\Boot\PCAT\memtest.exe d:\win_pex86\ISO\boot

Теперь, нам необходимо, добавить образ Windows PE который и будет загружаться с нашего диска.
В папке d:\win_pex86 лежит файл winpe.wim именно он нам и нужен, его необходимо скопировать в папку d:\win_pex86\ISO\sources и переименовать в boot.wim, давайте сделаем это.

Копируем образ Windows PE
copy d:\win_pex86\winpe.wim d:\win_pex86\ISO\sources

Переходим в папку:
cd d:\win_pex86\ISO\sources

Переименовываем файл winpe.wim в boot.wim
rename winpe.wim  boot.wim

С основной задачей все, нам необходимо создать загрузочный ISO образ, который можно записать на пустую болванку, для этого нам необходимо перейти: 
Пуск->Все программы->Microsoft Windows AIK->Командная строка средств развертывания, копируем туда следующее:

oscdimg -n -bd:\win_pex86\etfsboot.com d:\win_pex86\iso d:\win_pex86\winpe.iso
Внимание. Тут с пробелами все ок, ошибок в записи -bd:...  нет.
В результате всех наших действий, в папке d:\win_pex86 появится файл winpe.iso, это готовый для записи на болванку образ. Можете записать на чистый диск или сразу монтировать в VM.


5. Захват образа установленной системы.

Нам необходимо загрузиться с  winpe.iso, который мы создали на ПК2 или VM.
Оболочка Windows PE представляет из себя следующее:

Не пугаемся :) все так и должно быть.
Вводим notepad, жмем Enter.
Через Файл-открыть рассматриваем наши диски, дабы определить кто из них кто.

Например, в моем случае диск C: с установленой Windows 7 Starterстал диском E:, а диск D: таковым и остался. А привод с образом winpe.iso имеет букву F:.
Запоминаем эти моменты, а лучше записываем :)
Закрываем блокнот и срезаем образ установленной Windows 7 Starter. 
Команда:

f:\imagex.exe /capture E: d:\install.wim "Windows 7 Starter" "My Windows 7 Starter" /compress maximum  /verify

В этой команде используются следующие параметры:
/capture E: — захват раздела E:
d:\install.wim — местоположение и имя сохраняемого WIM-файла. Укажите букву диска, соответствующую несистемному разделу или USB-диску.
"Windows 7 Starter" — имя образа. Имя должно быть заключено в кавычки.
"My Windows 7 Starter" — (необязательно) описание образа. Описание должно быть заключено в кавычки.
/compress maximum — (необязательно) тип сжатия файлов в образе. Для параметра допустимы значения maximum (максимальное сжатие), fast (быстрое сжатие) и none (без сжатия). Если параметр не указан, используется быстрое сжатие. Максимальное сжатие позволяет уменьшить размер образа, но захват занимает больше времени, чем при быстром сжатии. Скорость распаковки образа практически не зависит от типа сжатия.
/verify - Обеспечивает проверку ресурсов файлов на наличие ошибок и дублирования при создании и применении. Данный параметр по умолчанию включен при действиях с сетью.

При максимальном сжатии захват образа может занять довольно длительное время.
Захват в процессе:

Пока образ создается идем гулять/пить кофе/кушать и т.д.

У нас ранее была создана папка, по пути d:\win_pex86\ISO, она нам понадобится еще раз, в ней мы соберем установочный образ, из папки ISO необходимо удалить все ее содержимое и скопировать в нее, содержимое установочного диска с Windows 7, перейдя в папку d:\win_pex86\ISO\sources скопировать туда файл install.wim (который у нас получился при захвате системы), т.к. эта папка уже содержит файл с таким именем, то соглашаемся на замену.

В принципе, сейчас нужно интегрировать драйвера в дистрибутив. Но если этого не нужно, то следующий пункт можно пропустить.

6. Интеграция драйверов в образ.

Пуск->Все программы->Microsoft Windows AIK->Командная строка средств развертывания от имени Администратора.
Монтируем образ:

dism /mount-wim /wimfile:d:\win_pex86\ISO\sources\install.wim /index:1 /mountdir:d:\win_pex86\mount

где:
/mount-wim - команда монтирования WIM файла
/wimfile:d:\win_pex86\ISO\sources\install.wim - размещение WIM файла
/index:1 - индекс системы (в моем случае он отвечает индексу Starter, см. ниже)
/mountdir:d:\win_pex86\mount- в какую папку монтировать образ.

Как узнать индекс системы в которую мы интегрируем драйвера:
dism /get-wiminfo /wimfile:d:\win_pex86\ISO\sources\install.wim
Cистема DISMВерсия: 6.1.7600.16385
Сведения об образе : d:\win_pex86\ISO\sources\install.wim
Индекс: 1Имя : Windows 7 StarterОписание : My Windows 7 Starter with SoftРазмер (байт): 10 713 629 462
Операция успешно завершена.
Я буду интегрировать драйвера для сетевых и wi-fi устройств, которые я скачал с http://driverpacks.net/ и распаковал в папку d:\drivers. В папку распаковывал драйвера для Windows 7:


dism /image:d:\win_pex86\mount /add-driver /driver:d:\drivers /recurse /forceunsigned

/image:d:\win_pex86\mount - с каким образом работать.
/add-driver - добавить драйвера.
/driver:d:\drivers - папка с дровами.
/recurse - позволяет брать дрова еще и из подпапок.
/forceunsigned - если есть неподписанные драйверы.

Демонтируем образ:
dism /unmount-wim /mountdir:d:\win_pex86\mount /commit

Процесс продолжительный,  идем гулять/пить кофе/кушать и т.д.  :)


7. Сборка финального ISO образа установочного диска Windows 7

Снова жмем Пуск->Все программы->Microsoft Windows AIK->Командная строка средств развертывания, копируем туда следующее:


oscdimg -n -m -o -bd:\win_pex86\etfsboot.com d:\win_pex86\ISO d:\win_pex86\
win7-starter.iso


Система немного поработает и выдаст нам, готовый инсталляционный диск, который будет находиться в папке d:\win_pex86 с именем win7-starter.iso, если его размер не превысил 4,7 Gb, то могу вас поздравить, его можно нарезать на болванку.

Но прежде, чем что-то, куда-то записывать, нам необходимо протестировать работоспособность нашего ISOшника. Для этого нам можно воспользоваться виртуальной машиной, создаем на ней чистую систему и подключаем наш готовый образ, устанавливаем его, если все нормально, то можно нарезать на болванку и пользоваться, если загрузки с этого образа не происходит, то проверяем наличие файла etfsboot.com т.к. именно он и является той составляющей, которая делает обычную болванку, загрузочной.

36 комментариев:

  1. Благодарю за статью. Все очень доходчиво описано, создать образ получилось очень быстро.

    ОтветитьУдалить
  2. Огромное спасибо! Все четко по пунктам. Все работает!

    ОтветитьУдалить
  3. Пожалуйста! Рад что помог :)

    ОтветитьУдалить
    Ответы
    1. OSCDIMG 2.55 CD-ROM and DVD-ROM Premastering Utility
      Copyright (C) Microsoft, 1993-2007. All rights reserved.
      Licensed only for producing Microsoft authorized content.

      вот че пишет при создании образа


      ERROR: Could not open boot sector file "d:\win_peamd64\etfsboot.com"
      Error 21: The device is not ready.

      Удалить
  4. Здравствуйте! а с Windows 8,1 данные манипуляции пройдут?

    ОтветитьУдалить
    Ответы
    1. Здравствуйте!
      Не проверял.
      Думаю нет.

      Удалить
    2. есть windows ADK для windows 8 что похожое на Windows AIK

      Удалить
  5. Спасибо за статью!
    Товарищ, а как теперь готовый образ размером 9Гб+ скормить PXE серверу? Чтоб имелась возможность ставить винду с программами по локальной сети.

    ОтветитьУдалить
    Ответы
    1. Да, вот же http://silver979.blogspot.ru/2013/02/windows-7-pxe-linux.html

      Удалить
    2. Читал, спасибо.
      Получается делаю все из этой статьи кроме 7го пункта? (не делаю isoшник). А дальше все как в статье по вашей ссылке, я правильно понял?
      Еще раз спасибо! :)

      Удалить
    3. В принципе да. Но я всегда делал ISO, чтобы проверить что собраный дистрибутив разворачивается в виртуалке или на тестовом компьютере без проблем.
      Образ 9Гб+ можно разбить на диски. http://silver979.blogspot.ru/2015/02/windows-7-installwim.html
      Сегодня перетащил из Evernote сюда.

      Удалить
  6. Добрый день ,Спасибо за статью )
    5. Захват образа установленной системы. winpe.iso запускать на ПК ,в котором правили твики? и не в режиме аудита ?

    ОтветитьУдалить
    Ответы
    1. Вы должны загрузиться с образа winpe.iso на ПК в котором все делали.
      Там уже не будет никаких режимов, вы же загружаете не ту Windows которую настроили, а систему из образа winpe.iso

      Удалить
    2. Работал на двух ПК .1й правил твики. 2й собирал образ winpe.

      Удалить
  7. Спасибо за статью
    вопросик из 5. Захват образа установленной системы.
    Загружать образ winpe.iso с машины на которой правили твики ? и не в режиме аудит ,верно.

    ОтветитьУдалить
  8. Добрый день ,Спасибо за статью )
    5. Захват образа установленной системы. Мы загружаем образ winpe.iso с ПК на котором правили твики? причем уже не в режиме аудита? правльно.

    ОтветитьУдалить
  9. Добрый день
    все по инструкции выполнил , решил проверить на вирт. машине работоспособность .Жму "Установить" ,после она "Лицензионное соглашение" всплывает оно "Выбор раздела установки Windows" ,внизу надпись - Драйверы не найдены.Чтобы загрузить драйвер запоминающего устройства ....
    Подскажите пож. что это может быть ?

    ОтветитьУдалить
    Ответы
    1. Нет драйверов :)
      А каких - может для дисков SATA, может для сети, если по сети устанавливаете.

      Удалить
  10. Всё конечно хорошо, но есть один вопрос. Как мне это применить интеграцию программ ко всем редакциям системы, а не только одной какой-то? Вот писали про такой способ, мол всё делаете с Windows 7 Home Basic, а затем повышаете редакцию до нужной

    http://forum.oszone.net/post-2146518.html#post2146518

    Это надо сделать один раз, выставив флаги соответственно редакции. Потом делаете экспорт образа с норвыми именами 3 раза. И потом монтируете 2 индекс образа и поднимаете его редакцию до HomePremium. Сохраняете и отключаете образ. Потом индекс 3 - до Professional и 4 до Ultimate.

    dism /image:D:\Offline\install_wim /set-edition:HomePremium
    dism /image:D:\Offline\install_wim /set-edition:Professional
    dism /image:D:\Offline\install_wim /set-edition:Ultimate

    Я так сделал, для экономии времени не делал захват образа и аудит, просто утилитой dism интегрировал обновления. Затем делал это (пути мои):

    Можно посмотреть индексы образа:
    Dism /Get-WimInfo /WimFile:f:\dism\sources\install.wim

    Подключаем образ с первой редакцией:
    dism /mount-wim /wimfile:f:\dism\sources\install.wim /index:1 /mountdir:f:\dism\install

    Далее смотрим выпуски Windows, до которых можно изменить образ:
    Dism /Image:f:\dism\install /Get-TargetEditions

    Повышаем образ
    Dism /image:f:\dism\install /set-edition:HomePremium

    Отключаем образ:
    Dism /unmount-wim /mountdir:f:\dism\install /commit

    Повторил для всех редакций кроме ultimate. С изменениями работает только первая редакция

    ОтветитьУдалить
    Ответы
    1. Я это не проверял.
      Думаю все равно нужно будет брать за основу образы отдельных редакций.
      Но, повторюсь - это я не проверял.

      Удалить
  11. Здравствуйте! Отличная статья, но я сделал все как описано выше (кроме интеграции драйверов (т.к. парк большой и разнообразный) и упаковки в iso), разбил install.wim на 3 файла, как описано в http://silver979.blogspot.ru/2015/02/windows-7-installwim.html (т.к. файл получился 9,5 ГБ), запаковал в iso, записал на USB-hdd, запустил на рабочей станции, долго-долго грузился, и после нажатия кнопки "Установка" (перед выбором "обновить/полная установка") появилось сообщение: "Не найден необходимый драйвер для дисковода оптических дисков. Если у вас есть......". Записывал образ не с помощью UltraISO, с помощью Xboot. Когда записываешь с помощью ультра исо, то после нажатия на "Установить" ПК пару секунд думает и возвращается на экран с этой кнопкой Установить

    ОтветитьУдалить
    Ответы
    1. С USB-HDD не все образы нормально устанавливаются, попробуйте на виртуалке для начала проверить.
      А потом поищите информацию как установить с usb-hdd

      Удалить
  12. Подскажите пожалуйста, я нуб) Если нужно только добавить программы в образ, чтобы они устанавливались автоматически вместе с системой тихо и ничего не спрашивая, никаких настроек, драйверов и пр не нужно, какие пункты нужно выполнить а какие можно пропустить? читаю добросовестно все, но в голове туман, буду благодарен за помощь

    ОтветитьУдалить
  13. Павел, не нашел нюанса по поводу x64 системы. Какие особенности по сбору образа для данных систем?

    ОтветитьУдалить
    Ответы
    1. Черт побери, уже не помню :)

      По моему это связанно с тем что загрузчик все равно 32битный и надо образ резать образ на части, если превышает размер...
      Или я все отличия указал, просто забыл сказать что вот оно - здесь :)

      Удалить
  14. "Couldn't find bootmgr" при загрузке winpe.iso :( два раза переделывал..

    ОтветитьУдалить
    Ответы
    1. была подобная история, связана с тем, что в образ не был добавлен файл Install.win переименовынный после в Boot.wim
      попробуйте, может поможет)

      Удалить
  15. у меня вообще косяк со слепком все все сделали сделали загрузочную флэшку. она начинает ставиться и пишет косяк install.wim мол неможет его открыть =( вчем может быть причина.
    слепок вроде сняли норм все удачно

    ОтветитьУдалить
    Ответы
    1. 1. Не скопировали файл
      2. Флешка в FAT32 а файл wim больше 4Гб
      3. winpe.iso для 32 разрядной системы а ставите 64 разраядную.
      4. ну или файл install.wim больше 4 Гб и winpe.iso 32 битный.

      Вот вам несколько вариантов, кроме той что флешка может не читаться.

      Удалить
    2. честно сказать не думал что вы ответите так оперативно. мы попробуем провернуть все ещё раз. если будут те же косяки я буду вынужден вас потревожить. ну а конкретно 1) файл был скопирован и успешно внедрен с заменой 2) загрузочную через что только не пробовали и через UltraISO и через windows 7 делали. 3)ставим вин 7 32. 4) а вот по 4 есть разногласия.

      Удалить
    3. Попробуйте ваш ISO файл залить в виртуалку. Проверить так сказать, что он рабочий.
      Если ок - значит флешка правильно не создается.
      Ищите утилиты которые делают загрузочную флешку из ISO образа - например WinSetupFromUSB

      Удалить
    4. Если install.wim более 4Гб то смотрите заметку
      http://silver979.blogspot.ru/2015/02/windows-7-installwim.html

      Удалить
    5. Павел, чилом бью о земь. спасибо вам за все. было не легко,но это того стоило. хотелось добавить что в http://silver979.blogspot.ru/2015/02/windows-7-installwim.html не все пункты ясны на 100%. но это терпимо. вы очень помогли, и как минимум подняли мой уровень.

      Удалить
    6. теперь осталось настроить Default User. чтобы он был донором с настройками для прог для инета со своими прокси

      Удалить
    7. Пожалуйста!
      А указанную статью я гляну, может где слог подправить надо :)

      Удалить
  16. если файл install.wim получился больше 4GB, то образ диска нужно создавать с параметром -u2, а не -n, потому что с -n файловой системой образа диска будет ISO9660, а у нее есть ограничения на размер записываемых файлов - 4GB.
    С параметром -u2 образ будет сохранен с ФС UDF.
    oscdimg -u2 -o -bd: \ win_pex86 \ etfsboot.com d: \ win_pex86 \ ISO d: \ win_pex86 \
    win7-starter.iso

    ОтветитьУдалить