Разворачивание образов ОС при помощи FOG


    В этой статье я постараюсь вас познакомить с бесплатным продуктом FOG, который служит созданию и развертыванию образов ОС. К своему удивлению я не увидел статей на русскоязычных ресурсах, посвященных, безусловно, этому интересному продукту.
    Отмечу, что я не ставлю перед собой задачу описать абсолютно все нюансы и расписать всё. Ничего не заменит ваш личный опыт. Я хочу лишь приоткрыть занавес и помочь многим системным администраторам двигаться в нужном направлении, остальное в ваших руках.


    FOG является альтернативой платным продуктам Acronis. Не имею ничего против продуктов этой компании, но речь сегодня не о ней. Про RIS/Deployment Services для Windows Server я тоже в курсе, пожалуйcта, не пишите об этом в комментариях.

    Если упрощенно, то работает все через связку PXE/TFTP.

    Кроме управления образов FOG имеет в комплекте приятную тульзу для диагностики оборудования (memtest), а также примитивные инструменты инвентаризации.
    Также мы рассмотрим создание подготовленных образов для операционных систем Windows XP, Windows 7 (FOG поддерживает и другие ОС, но других ОС мы касаться не будем).
    Ставить будет на CentOS 5. Поделим наш рассказ на несколько частей.

    1) Установка и настройка

    2) Создание образа для Windows 7

    3) Создание образа для Windows XP

    4) Как происходит разворачивание/создание образа.

    5) Ссылки


    1. Установка и настройка

    Скачаем последнюю версию с сайта (в моем случае — fog_0.32.tar.gz)
    Распакуйте. Перед установкой ознакомьтесь с файлом installation.txt, а также с видео инструкцией (см. ссылки).
    Для работы понадобятся следующее:
    PHP 5.2.1+, MySql 5+, Apache 2+. Итого получается классический LAMP.
    Если со вторым и третьим в CentOS 5 проблем нет, то первое в офиц. репозитории нет, вы с легкостью можете отыскать это на pkgs.org (правда, пакеты не официальные, используйте их на свой страх и риск). Насколько я понял, FOG сам пакеты не ставит, он только смотрит их наличие в системе.
    Более конкретно со списком пакетов, которые необходимы вы можете ознакомиться в файле ./lib/redhat/config.sh. Кстати, там есть ошибка — в CentOS 5 нет пакета php-gettext, есть пакет php-php-gettext. Мне также не нужна была проверка на вирусы, поэтому из списка я убрал clamav-update — без этого инсталляция не идет. Кстати, тут же вы можете отредактировать путь для инсталляции админки и другие настройки.

    Установка очень проста — нужно запустить файл ./bin/ installfog.sh. В этом же файле есть настройки базы MySQL (snmysqluser, snmysqlpass, snmysqlhost). Обращаю, внимание на то, что доступ к базе FOG должен быть открыт для других компьютеров (на которых вы будете разворачивать образы).
    Поэтому нам нужно сделать примерно следующее

    create database fog;
    grant all privileges on fog.* to 'foguser'@'localhost' identified by 'ВАШПАРОЛЬ';
    grant all privileges on fog.* to 'foguser'@'%' identified by 'ВАШПАРОЛЬ';


    Впрочем, базу вы можете создать и после установки. Настройки обращения к базе, путь к админке и др. по умолчанию FOG берет из файла /opt/fog/service/etc/config.php.
    Устанавливать можно в обычном режиме и в режиме storage-node. Думаю для первого раза подойдет первый вариант (он освещен в видео инструкции). У меня DHCP и TFTP -сервера находятся на разных хостах и очень удобно, что инсталлятор рассматривает такую возможность.
    После того как FOG выяснит то что хочет, будет произведена установка. Внимание! Если у вас уже настроен TFTP-сервер, сделайте бэкап своих настроек (/tftpboot/pxelinux.cfg/default) — FOG бесцеремонно сотрет их и поставит свои. По умолчанию в меню используются пароли, соответственно, если вам они не нужны — то можно их оттуда убрать.
    Будет создано три службы:
    FOGImageReplicator, FOGMulticastManager, FOGScheduler. Соответственно, не забудьте сделать chkconfig <ИМЯСЛУЖБЫ> on.
    В моем случае файлы админки записились в /var/www/html/fog. Сами службы и их настройки запишутся по умолчанию в каталог /opt/fog.
    Как только все поставилось, нужно запустить tftp-server (через xinetd), проверить что запущены службы FOG.
    Дальше заходим по ссылке:
    http://ВАШ АЙ-ПИ /fog/management

    Default User:
    Username: fog
    Password: password

    2. Создание образа для Windows 7

    Создание образа подразумевает аппаратную независимость. Для этого нам пригодится пакет sysprep, который уже есть в Windows 7.
    При создании образа я в первую очередь пользовался мануалом, который нашел в комментариях к текущему релизу. Он простой и понятный, кроме того, там ничего сложного.
    Основной смысл такой:
    Step One — Installing Windows
    Step Two — Using Sysprep
    Step Tree — Cleaning PC for Deployment
    Step Four — Upload Settings

    От себя добавлю несколько важных замечаний:
    — не советую ставить антивирус, после разворачивания образа больший риск, что ОС на нем не запустится (так произошло даже с относительно безобидным ESET NOD32 — с другими продуктами возможна та же история)
    — категорически не ставьте в исходный образ Daemon Tools, Alcohol 120% — они содержат проблемный для sysprep драйвер.
    — можно обойтись и без WAIK (я так и сделал в виду его огромного размера — элементарно было лень скачивать), просто будет чуть меньше автоматизации при донастройке разворачиваемого образа. Кроме этого, можно схитрить и скачать чужой unattend.xml (например, из мануала). Затем уже его подсунуть sysprep.
    — я добавлял доп. драйвера для образа. Их можно взять с сайта driverpacks.net. Чтобы добавить их в эталонный образ, нужно после установки Windows 7 распаковать скачанные файлы драйверов. Затем я при помощи FAR нашел все .inf файлы, результаты поиска поместил во временную панель, скопировал полные пути до файлов в буфер обмена. Дальше наваял .bat файл:
    pnputil -i -a <пусть до .inf файла> и запустил. Я правда не разобрался как автоматизовать это полностью (много раз выдавалось сообщение типа «Драйвер не подписан. Рекомендуется устанавливать только подписанные драйвера»). Если кто знает — напишите в комментариях как это можно побороть.

    3. Создание образа для Windows XP.

    Я основывался на четырех статьях:
    1) forum.sysadmins.su/index.php?showtopic=6924
    2) www.answersthatwork.com/Download_Area/ATW_Library/WinXP_Professional/WinXP__3-Setup-How_to_SYSPREP_a_Windows_XP_PC_setup.pdf
    3) remyservices.wordpress.com/2007/09/28/sysprep-in-depth-part-5-customizing-sysprepinf
    4) remyservices.wordpress.com/2008/01/24/sysprep-in-depth-part-5-addition-1-customizing-sysprepinf
    В первой описан общий алгоритм, во второй — поэтапная инструкция в картинках (а также освещена основная проблема при разворачивании образов на компьютер с другим типом IDE/SATA контроллеров).
    Третья и четвертая — описание файла ответов для sysprep.
    Сам sysprep для Windows XP SP3 вы можете скачать здесь
    Схема создания образа в этом случае у меня несколько отличалась от Windows 7.
    На сайте driverpacks.net есть специальная программа для внедрения драйверов в образ ОС. Именно ей я и воспользовался. Прочитайте заметку об её использовании здесь.
    Нюанс тут в последовательности использовании этой программы вместе с nLite и подобными.
    Я позволю себе сделать себе копипаст по первой ссылке.

    1. Установить систему на компьютер. (драйвера видеокарт и экзотического железа типа сканера и т.д которые на других компах стоять не будет лучше не ставить). Сделать все необходимые настройки, изменения и дополнения. Установить (MUI) русский и сервиспаки.
    2. Поставить весь необходимый пакет программ. Советую использовать дистрибутив, который не требует активации. Я использовал Windows XP Corporate Edition с интегрированным SP2, но можно и SP1. 
    3. Очищаем систему. Тут вам самим решать, что оставить, а что снести. 
    3.1. Очищаем DLL кэш. Для этого выполняем следующие команды: 
    "sfc/ cachesize =5" и " sfc / purgecache " 
    3.2. Очищаем корзину
    3.3. Отключаю восстановление системы и удаляю папку System Volume Information из корня раздела
    3.4. удаляем Msn Messenger. 
    3.5. правим windowsinfsysoc.inf на предмет удаления слова hide и затем через "установку-удаление программ->компоненты windows удаляем MSN Explorer и всё что не понравится.
    4. Сейчас сделаем конфигурационный файл для клонирования. 
    4.1. На CD Windows XP, ищем [cd]:/SUPPORT/TOOLS/DEPLOY.CAB. Или скачиваем его в интернете (для текущего SP). Извлекаем оттуда все файлы. 
    4.2. Создаем на C: директорию SYSPREP и скидываем туда все файлы из DEPLOY.CAB.
    4.3. Запускаем SETUPMGR.EXE. Запускается Wizard. 
    4.3.1. Выбираем Create a new answer file, затем Sysprep Install. 
    4.3.2. Внимательно выбираем версию Windows. 
    4.3.3. В следующем окне, пометьте Yes, full automate the installation. 
    4.3.4. Перед нами открывается окно, где нам предлагается заполнить разного рода информация. Нам очень важно поле Providing the Product Key. Следующее поле важно для сисадминов. Если Вы пропишите имя компьютер, то все Ваши клоны будут с одним именем, что не очень хорошо в сетки. Если поставить Automatically generate computer name, то система будет произвольно давать имя компьютеру. Я в своём случаи пропустил это поле (если на него ткнуть, то без введения какого либо имени перейти на следующее меню нельзя!), тем самым система спрашивает, какое имя я хочу дать компьютеру. Есть ещё куча интересных параметров, которые можно изначально прописать через эту программу. Советую внимательно пройтись по всем опциям. 
    4.3.5. По завершению, всё это должно быть сохранено в файле sysprep.inf и файл должен лежать в директории C :SYSPREP. 
    5. Всё, что будем делать дальше, начиная с этого пункта и до момента записи образа на компакт диск или на другой раздел надо делать без перезагрузки системы! 
    5.1. Самой большой проблемой, при переносе Windows на другой компьютер, является драйвер контролера диска. Как правило, почти все платы, поддерживают стандартный IDE контролер. Поэтому, нам нужно установить драйвер стандартного IDE. В диспетчере устройств в ветке IDE controllers меняем наш контроллер (обновить драйвер) на Standart ide controller… на предложение перезагрузиться ответить отмена.
    5.2. Теперь стирам из регистре ключик HKEY_LOCAL_MACHINE/SYSTEM/MountedDevices/и тем самым мы избежим проблем с сопоставлением сигнатур разделов. 
    6. Как многие из Вас знают, Windows XP разделяет все компьютеры на несколько типов: "Standart PC", на "ACPI PC" и на "ACPI Uniprocessor PC " и т.д. Для того чтобы загрузиться в момент первой и второй загрузки нужно сделать следующее:
    6.1. Копируем все что находится в папке Hal в папку c:/windows/system32 если там такие файлы есть рекомендуется оставить более поздние версии.
    6.2. Также надо немного подкорректировать boot.ini. После изменений, он должен быть похож на этот: 
    [boot loader] 
    timeout=10 
    default=multi(0)disk(0)rdisk(0)partition(1)WINDOWS 
    [operating systems] 
    multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Microsoft Windows XP Professional" /fastdetect 
    multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Standart PC" /fastdetect /hal=hal.dll 
    multi(0)disk(0)rdisk(0)partition(1)WINDOWS="ACPI PC" /fastdetect /hal=halacpi.dll 
    multi(0)disk(0)rdisk(0)partition(1)WINDOWS="ACPI Multiprocessor PC " /fastdetect /hal= Halmacpi.dll 
    multi(0)disk(0)rdisk(0)partition(1)WINDOWS="ACPI Uniprocessor PC " /fastdetect /hal= Halaacpi.dll
    
    Это меню поможет при первой и второй загрузке на вашем компьютере при обнаружении устройст. если в момент выбора меню компьютер выпал в серый экран или завис - вы неправильно выбрали тип вашего PC. Для продолжения перегрузите аппарат и повторите операцию выбора.
    
    7. Переходим к конечной стадии. Выполните команду (ПУСК-ВЫПОЛНИТЬ): c:/sysprep/sysprep –pnp -mini. В появившемся окне меняем "shutdown mode" на "quit" и нажимаем "Reseal". Главное не допустить перезагрузки. И проверьте сейчас Boot.ini, там надо подправить timeout, поставьте 10.
    8. На этом можно сказать закончили. Осталось самая мелочь, сделать имидж диска.
    9. Как только Вы открываете это образ на новый компьютер (или на новый диск) запускается Мини- Setup . Происходит поиск нового железа. 
    10. После установки рекомендуется наш Standart ide controller заменить на родной (обновить драйвер, и дать ему тот который идет на компакт диске с материнской платой)
    11. Настраиваем наши сетевые установки (если сеть конечно же есть)
    12. После нескольких перезагрузок (по мойму после 3-й) можно выбрать при загрузке Microsoft Windows XP Professional если все пойдет как надо и аппарат загрузится то по умолчанию поставить Microsoft Windows XP Professional" /fastdetect
    


    Файл ответов для Windows XP намного проще, чем в Windows 7 (там используется xml), поэтому здесь я решил заморочиться.
    В итоге у меня получился такой файл sysprep.inf:

    ;SetupMgrTag
    [Unattended]
        OemSkipEula=Yes
        InstallFilesPath=C:\sysprep\i386
        TargetPath=\WINDOWS
        KeepPageFile=0
    
    [GuiUnattended]
        AdminPassword=* // УСТАНОВЛЕННЫЙ ПАРОЛЬ АДМИНИСТРАТОРА НЕ ТРОГАЕМ
        EncryptedAdminPassword=No
        AutoLogon=No  
        AutoLogonCount=0
        OEMSkipRegional=1
        OEMDuplicatorstring=Duplicate_XP_SP3 // ДОБАВЛЯЕМ ИНФОРМАЦИЮ О ТОМ, ЧТО ЭТО КЛОНИРОВАННАЯ КОПИЯ
        TimeZone=180 // ДЛЯ ЕКАТЕРИНБУРГА
        OemSkipWelcome=1
    
    [UserData]
        ProductKey=ВАШ, ПОТОМ ЕГО МОЖНО СМЕНИТЬ!
        FullName="WS"
        OrgName="HOME"
        ComputerName=*
    
    [RegionalSettings]
        LanguageGroup=5
    
    [Identification]
        JoinWorkgroup=WORKGROUP
    
    [Networking]
        InstallDefaultComponents=Yes
    
    [WindowsFirewall]
        Profiles=WindowsFirewall.TurnOffFirewall
    
    [WindowsFirewall.TurnOffFirewall]
        Mode=0
    
    [Sysprep]
        BuildMassStorageSection=Yes
    


    Вы можете поменять этот файл, если загрузите его через исполняемый файл setupmgr.exe, который идет в пакете deploy.cab.
    Смысл этих опций понятен из названия, остальные комментарии есть по третьей ссылке.
    Я добавлю свои замечания:
    — AdminPassword=* я поставил именно так, потому что когда я пробовал ставить свой пароль, то в процессе развертывания получал ошибку «не могу поменять пароль». Соответственно, не зная пароль включать AutoLogon смысла нет, хотя в первый запуск это было бы удобно.
    — Если у вас домен, то можно компьютер сразу включать в домен (смотрите 4-ю ссылку и опцию JoinDomain), правда при этом учтите, что имя компьютера должно быть уникальным, а, значит, должно быть (ComputerName=*). У нас есть домен, на самом деле, единственная причина по которой я не стал использовать эту опцию — чтобы самому ставить уникальное осмысленное имя компьютера до включения в домен (эх, если бы имя компьютера в Windows можно было менять не выводя из домена!)
    На этом всё.
    — папка sysprep после mini-setup удаляется, т.е. в клонированной системе её не будет, поэтому, по идее, можно не бояться в sysprep.inf файле писать пароли в открытом виде.

    4. Как происходит разворачивание/создание образа.


    Если как такового образа еще нет, то нужно зайти в раздел Image management и и создать прототип нового образа.

    Первое, что нужно сделать — произвести регистрацию хоста на FOG. Для этого есть спец. пункт меню при загрузке по сети.
    После того, как вы это сделаете, зайдите в раздел Hosts management, найдите там ваш хост (по MAC-адресу и по времени создания регистрации).

    Поставьте нужную ОС и выберите прототип образа.


    Далее вы можете выбирать — или использовать этот хост в качестве основы образа или накатывать в этот хост уже существующий образ.
    Для этого зайдите в режиме редактирования хоста в basic tasks.
    Дальше будет основной выбор (там есть и другие задач) — накатывать (deploy) или использовать образ в качестве эталонного (upload).

    Подтверждаем.

    Кстати, если у компьютера включен режим WakeUpOnLAN, то можно использовать планировщик FOG без физического доступа к компьютеру.

    Очень важно! При разворачивании образа FOG удаляет все партиции и создает свое разбиение. Возможно, можно как то управлять этим поведением — напишите в комментариях, если кто-то знает.
    Вы можете увидеть запланированные задания в Task Management.

    Если хосту назначено задание, то при загрузке по сети оно будет выполняться без всякого отображения меню. Кроме того, разработчики организовали обратную связь — т.е. через админку можно наблюдать индикатор выполнения текущего задания.

    Напоследок скажу о том, что есть возможность ставить клиента на Windows, через который можно управлять поведением хоста (выполнять задачи). См. последнюю ссылку.

    5. Ссылки

    Официальная документация FOG
    www.fogproject.org/wiki/index.php?title=FOGUserGuide
    Видеоинструкции от разработчиков
    www.fogproject.org/?q=node/5
    Развернутая инструкция настройки FOG на английском языке
    www.petri.co.il/windows-image-deployment-with-fog.htm
    Видео по установке FOG service на Windows-клиенты
    freeghost.sourceforge.net/videotutorials/FogServiceInstall.swf.html
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 17

      +3
      IMHO, куча не относяйщейся к статье инфы про подготовку образа винды. За новую для меня прогу спасибо, но на данном этапе я пользуюсь clonezilla и более чем доволен.
        +1
        и вам спасибо за clonezilla.
        принципиально, чем мне не нравится FOG — у меня не получилось сделать сохранение текущих данных (например, вторая, не системная партиция). CloneZilla умеет использовать текущее разбиение хоста с «растягиванием» восстанавливаемого образа?
          +1
          Clonezilla по большому счету создает\разворачивает копию диска\разделов. Сам он ничего не устанавливает. в связке с drbl получается практически то что вы описали в статье.
            0
            Именно в такой связке он и используется — по крайней мере CloneZilla Server.
            0
            Насчет адаптирования образа в случае другого размера жесткого диска я хз, у меня не было пока таких ситуаций…
            0
            А вам спасибо за новый для меня софт. Я как-то не слышал о clonezilla, по ходу это то, что мне нужно :) С dd у меня как-то не вяжутся отношения. :)
              0
              dd — совсем не для этого создан, я когда-то тоже извращался с dump/restore+netcat (ну или в случае форточек — ntfsclone+netcat), НО ЭТО ИЗВРАТ.
                0
                А в CloneZilla разве не dd в итоге используется?
                  0
                  Нет, там на выбор, но в самом худшем случае, если ни чего не сработает он поюзает dd, у меня так как я снимал образа с windows клиентов он юзает ntfsclone (и ему это удаётся).
          • UFO just landed and posted this here
              0
              прочел заголовок, подумал, что будет написано про github.com/geemus/fog
                0
                Простите, а образ Вы как и какой программой создаете?
                  0
                  Это и делает FOG.
                  +1
                  Прочитал, софт понравился.
                  Правда появилось стойкое чувство что автор использует его не по назначению.
                    0
                    Но это, согласитесь, проблемы сугубо автора =)
                    +1
                    > эх, если бы имя компьютера в Windows можно было менять не выводя из домена!
                    Кто вам такое сказал?

                    NETDOM RENAMECOMPUTER — переименование компьютера. Если компьютер присоединен к
                    домену, то объект компьютера в домене также переименовывается. Некоторые
                    службы, такие как центр сертификации, работают только с постоянным именем
                    компьютера. Если какие-либо службы этого типа запущены на целевом компьютере,
                    то изменение имени компьютера будет иметь неблагоприятные последствия. Эту
                    команду не следует использовать для переименования контроллера домена.


                    Через GUI тоже всё отлично работает.
                      0
                      Супер! Спасибо за информацию.

                    Only users with full accounts can post comments. Log in, please.