Пользователь
0,0
рейтинг
10 марта 2013 в 01:05

Добавляем WDS универсальности tutorial

Добрый день, уважаемые хабра-жители!

Целью данной статьи является написание небольшого обзора возможностей по развертыванию различных систем через WDS (Windows Deployment Services)
В статье будут приводиться краткие инструкции для развертывания Windows 7 x64, Windows XP x86, Ubuntu x64 и добавление таких полезных инструментов в загрузку по сети как Memtest и Gparted.
История будет рассказывать в порядке приходящих мне в голову идей. И начиналось все с Microsoft…

А теперь сама история:
Не так давно мне пришла в голову здравая идея разворачивать на работе системы с помощью WDS. Если за нас кто-то делает работу, это приятно. А если при этом мы узнаем что-то новое — это приятно в двойне. Не буду очень подробно останавливаться на описании установки роли WDS — Microsoft все сводит к Далее-Далее-Далее и статей на эту тему — горы. И кратко расскажу про работу с образами Windows с остановкой на тех моментах, которые вызвали у меня затруднения. Боле подробно будут описаны системы не от Microsoft (ради чего статья и затевалась).
Приступим.
Сервер, который будет выступать в роли хранилища образов и координатора действий имеет Windows Server 2008 R2 на борту. Для корректной работы этой службы необходимы такие роли как DHCP и DNS. Ну и AD — для ввода машинок в домен. (Все эти роли не обязательно держать на одной машине, они могут быть размазаны по всей структуре. Главное, чтобы корректно работали)
1. Настройка WDS

Добавляем необходимые роли и быстренько лезем в консольку WDS, инициализируем наш сервер и видим следующее:

  • Install Images — образы установки. Настроенные, красивые системы, которые мы и будем накатывать. Для удобства можно добавить несколько групп по типу систем: Windows 7, XP или по типу задач — IT Dept, Client Dept, Servers
  • Boot Images — образы загрузки. То, что грузится на машину в первую очередь и позволяет совершать с ней всякие действия. Самым первым образом туда идет тот, что находится на установочном диске (для Windows 7 — это папка sources и файлики install.wim или boot.wim.
    А вот дальше из них можно делать всякое интересное:
    • Образ захвата или образ записи — наш основной инструмент, позволяет делать копию настроенной системы, которая была предворительно обработана sysprep и является нашим шаблоном.
    • Образ обнаружения — позволяет заливать на компьютеры, не поддерживающие загрузку по сети, образы настроенных систем.

  • Pending Devices — устройства, ожидающие одобрения администратора на установку. Мы же хотим знать, кто ставит нашу прелесть себе на компьютер.
  • Multicast Transmissions — многоадрессная рассылка. Используется для установки одного образа большому числу клиентов.
  • Drivers — драйвера. Помогают добавить к образам на сервере необходимые драйвера и избежать подобного рода ошибок:

    После добавления драйверов на сервер WDS их необходимо добавить в нужный образ загрузки.

Да, и еще — под каждую разрядность системы нужно делать свои загрузчики и установщики. За разнообразие в зоопарке приходится платить.
По сути, наш WDS уже готов. Мы можем загрузиться по сети с машины и увидеть окошко выбора с нашими образами загрузки.
Не буду описывать все этапы подготовки идеального образа, а лишь оставлю ссылку на статью, по которой делал сам: Тыц для Windows 7 ( у меня была почему-то установлена старая версия WAIK — 6.1.7100.0, в ней нельзя было создавать файл ответов для Windows 7 SP1. Нужна самая последняя на данный момент — 6.1.7600.16385)
И вот еще инструкция по подготовке Windows XP для WDS. Тоже не будем подробно писать — самое интересное у нас во второй части!
2. Универсальный загрузчик

Это здорово, что у нас теперь есть такая система. Пользоваться ей — одно удовольствие. Но нельзя ли как-то еще больше облегчить себе жизнь?
Хочу ставить через нее Linux!
Прежде всего, как многие из вас помнят — установка параллельно винды и убунты ничем хорошим для виндового загрузчика не заканчивается. Его вытесняет универсальный GRUB.
Тут так же. Нам нужен универсальный загрузчик, знакомьтесь — это PXELINUX
1) Скачиваем последнюю версию (на момент написания статьи это 5.01
Нас интересуют эти файлы:
core\pxelinux.0
com32\menu\vesamenu.c32 ( можно брать menu.c32 для текстового интерфейса при загрузке)
com32\chain\chain.c32
Во всех руководствах по использованию этого загрузчика говорят, что с этими тремя все работает. Мне пришлось добавить еще ldlinux.c32, libcom.c32 и libutil_com.c32. Можно поступить так — скопировать рекомендуемые и запустить. На какой файл будет ругаться — тот копировать в папку.
Еще нам для загрузки iso необходим файл memdisk. Тоже кладем его в эту папку
2)Кладем их в папку, где у вас хранятся все образы WDS. А именно сюда — RemoteInstall\Boot\x64\ (у нас будет только устанавливаться только 64, для 86 поместите такие же файлы и в ту папку тоже.)
3)Переименуйте pxelinux.0 в pxelinux.com
4) Создадим папку pxelinux.cfg для файла с конфигурацией и сам файл (уже внутри этой папки естественно) — default (без расширения!) следующего содержания:
DEFAULT vesamenu.c32
PROMPT 0
NOESCAPE 0
ALLOWOPTIONS 0
# Timeout in units of 1/10 s
TIMEOUT 300
MENU MARGIN 10
MENU ROWS 16
MENU TABMSGROW 21
MENU TIMEOUTROW 26
MENU COLOR BORDER 30;44 #20ffffff #00000000 none
MENU COLOR SCROLLBAR 30;44 #20ffffff #00000000 none
MENU COLOR TITLE 0 #ffffffff #00000000 none
MENU COLOR SEL 30;47 #40000000 #20ffffff
MENU BACKGROUND pxelinux.cfg/picture.jpg #picture 640x480 for background
MENU TITLE Choose your destiny!

LABEL wds
MENU LABEL Windows Deployment Services (7, XP, Boot images)
KERNEL pxeboot.0

LABEL local
MENU DEFAULT
MENU LABEL Boot from Harddisk
LOCALBOOT 0
Type 0x80

5) Сделаем копию файла pxeboot.n12 и назовем ее pxeboot.0
6) После этого необходимо научить наш WDS грузиться именно с универсального загрузчика. В 2008 это делалось через GUI, в 2008 R2 — через командную строчку. Открываем и вводим:
  • wdsutil /set-server /bootprogram:boot\x64\pxelinux.com /architecture:x64
  • wdsutil /set-server /N12bootprogram:boot\x64\pxelinux.com /architecture:x64

Вывод командной строки:

Все, грузимся и видим вожделенный экран:

Это базовый конфиг, его можно подправить под свои требования (логотип компании, порядок загрузки и прочее. Пока он умеет только передавать управление WDSу и грузиться опять с жесткого диска. Давайте научим его грузить Ubuntu!
3. Обучаем орленка летать

Что нам нужно там было? Ubuntu, Gparted? Добавим еще memtest для порядка.
Начнем с самого простого:
Memtest

Создадим в папке Boot/x64 WDSа отдельную папку для линуксовых файлов, например Distr. И подпапки в ней для наших соответствующих систем:

Скачиваем iso mtmtest и добавляем в наш конфи загрузки (файл default) следующие строчки:
label MemTest
menu label MemTest86+
Kernel memdisk iso raw
initrd Linux/mt420.iso

Этим мы загрузим наш небольшой образ в память и оттуда же запустим. К сожжалению, с большими образами такое у меня не сработало.

Gaprted

Скачиваем последнюю версию, распаковываем iso образ и берем три файлика — /live/vmlinuz, /live/initrd.img и /live/filesystem.squashfs
Что же это за файлы? (Могу ошибаться в формулировках, большая просьба к читателям поправить если я ошибусь)
  • vmlinuz (чаще можно увидеть vmlinux) — сжатый файл ядра
  • initrd.img — образ корневой файловой системы (необходимый минимум для загрузки)
  • filesystem.squashfs — сами файлы, используемые в процессе работы

Помещаем первые два файла в папку для загрузки (в моем случае это Boot\x64\Distr\Gparted) а третий — на IIS сервер (благо он уже поднят для WSUSa).
Лирическое отступление — к сожалению, прием с загрузкой iso образа в memdisk с большими дистрибутивами мне не удался. Если вдруг вы знаете секрет успеха — это будет прекрасное решение, которое позволит быстро грузить любую систему из iso образа.
Добавляем filesystem.squashfs на IIS, чтобы его можно было прочитать по сети (не забудьте добавить MIME метку для этого расширения

Теперь добавляем запись в наш pxelinux.cfg/default:
LABEL GParted Live
MENU LABEL GParted Live
KERNEL Distr/Gparted/vmlinuz
APPEND initrd=Distr/Gparted/initrg.img boot=live config union=aufs noswap nopromt vga=788 fetch=http://192.168.10.10/Distr/Gparted/filesystem.squashfs

Проверяем — работает!
Ubuntu 12.04

Я добавил два возможных варианта установки — полностью автоматическую (спасибо пользователю Malamut за статью и в ручном режиме)
Скачиваем файлик с alternate установкой и выдираем оттуда (как раньше) два файла — initrd.gz и linux и кладем их в Distr/Ubuntu
Добавляем в наш pxelinux.cfg/default строчки
для полностью ручной установки
LABEL Ubuntu
KERNEL Distr/Ubuntu/linux
APPEND priority=low vga=normal initrd=Distr/Ubuntu/initrd.gz

А вот для автоматической установки необходим файлик с настройками ответов ( почитать можно тут) и положим мы его на наш web-сервер. У меня строчка в загрузчике выглядит так:
LABEL Ubuntu Auto Install
KERNEL Distr/Ubuntu/linux
APPEND initrd=Distr/Ubuntu/initrd.gz ksdevice=eth0 locale=ru_RU.UTF-8 console-setup/layoutcode=ru url=http://192.168.10.10/Distr/Ubuntu/preseed.txt

Полезность на будущее

Просматривая материал по теме и ища ответы на свои вопросы, была обнаружена замечательнейшая статья от Alexander_Erofeev с описанием загрузки Kaspersky Rescue Disk по сети. К сожалению, у меня не взлетело. Но инструмент действительно полезный (нет-нет, да схватят особенно рьяные пользователи чего-нибудь эдакого… Полезно иметь такой инструмент под рукой)

Заключение

Данная статья представляет из себя обзор возможностей, которые предоставляет для вас роль WDS от Microsoft. Когда я затевал эту статью — планы были грандиозные: подробнейшее HOWTO о всех аспектах загрузки представленных выше систем… Но когда стал накапливаться материал только по самому WDSу — нить повествования заводила меня в какие-то глубины, с которыми никто и не столкнется, наверно… Поэтому было принято решении поделиться краткими сведениями о том, что можно и, по возможности, ссылками на хорошие статьи. Если читателям будет интересно читать, или мне вдруг захочется славы и денег пополнить копилку Хабрахабра статьями — можно более подробно останавливаться на каждом из этапов настройки многоцелевого WDS сервера.
Хочется еще раз поблагодарить авторов Alexander_Erofeev и Malamut за их материал, который будет интересен всем без исключения.
На Хабре естественно уже были статьи по этой же тематике, я постарался осветить вопрос с другой точки зрения или дополнить его: Раз и два, но не было опубликовано
Спасибо за внимание.
Слава роботам!
Сухарев Петр @Ingtar
карма
16,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (9)

  • 0
    Волшебно.
  • 0
    Насколько я помню, службе wds нет необходимости иметь на ЭТОМ же сервере DHCP и DNS. А статья полезная, спасибо! Хотя я sccm пользуюсь.
    • 0
      Да, можно эти роли разносить. Просто так на работе настроено.
  • 0
    Зачем вы для .squashfs ставите text/plain?! Чем вам binary то не угодил?
    • 0
      Потому что в этом примере именно text/plain
      • 0
        The original version of SquashFS used gzip compression, although Linux kernel 2.6.34 added support for LZMA[1] and LZO compression,[2] and Linux kernel 2.6.38 added support for xz compression.[3]

        Всё-таки это бинарный формат, возможно у вас не сложилось с KAV именно из-за этого.
        Попробуйте поменять.
        • 0
          Спасибо, попробуем.
  • 0
    Кстати возник вопрос по поводу одновременной работы WDS и терминалок.
    В сети есть WDS и tftp32 откуда терминалки тянут образ zxpe для загрузки. В параметрах области DHCP в 066 указан сервер, где стоит tftp32, а в 067 значение thinstation.nbi.zpxe чтобы терминалки стягивали нужный образ.
    Так вот если я на WDS (размещен на другом серваке, отдельном от DHCP и tftp) ставлю чтобы он откликался всем компьютерам, то если ребутнуть терминалку, она будет автоматом пытаться тянуть образ win с WDS сервера и разумеется не загрузиться, т.к. образ не ее.

    Как можно ограничить доступ к нему, чтобы когда он был активный терминалки не пытались с него грузиться, а продолжали тянуть нужный им образ с tftp?
    Сейчас по факту просто отключаем отклик PXE на WDS, чтобы он не мешался, а когда надо включаем на время установки.
  • 0
    Получилось ли у кого EFI загрузка по сети?

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.