Что ж, пришло время продолжить загрузить по сети еще что-нибудь интересное и, самое главное, полезное. В первой части мы рассмотрели запуск программ Acronis, установку Debian/Ubuntu Linux, загрузку маленьких ISO и запуск готовых WIM-образов.

 

Итак, планы на сегодня!

  1. Установка Windows в ручном и автоматическом режимах.
    1. Сборка WIM-образа.
    2. Подготовка файла ответов.
  2. Запуск ERD Commander (MSDaRT).
  3. Загрузка Kaspersky Rescue.
  4. Бонусом реализуем запуск установки Debian с дальнейшей установкой по SSH.
 

Начнем с Windows

На эту тему на просторах Сети можно найти довольно много статей. За основу я взял статью с Хабра «Установка Windows Server 2008 по сети с Linux PXE сервера. Кастомизация образа WinPE».

WARNING


Все дальнейшие действия, связанные с подготовкой Windows, выполняются в среде Windows.

Первым делом необходимо подготовить среду WinPE, с которой и будем запускать установки различных систем семейства Windows. Для этого нам потребуется пакет Windows AIK, скачать который можно бесплатно с официального сайта Microsoft.

Запуск средств развертывания Windows PE
Запуск средств развертывания Windows PE

После установки пакета Windows AIK открываем консоль «Командная строка средств развертывания». Скопируем WIM-образ и загрузчик и смонтируем его в систему:

copype.cmd amd64 c:\winpe
mkdir c:\pe\win\boot
imagex /mountrw winpe.wim 1 mount
xcopy c:\winpe\mount\windows\boot\pxe\pxeboot.n12 c:\npe\win
xcopy c:\winpe\mount\windows\boot\pxe\bootmgr.exe c:\pe\win
xcopy c:\winpe\iso\boot\boot.sdi c:\pe\win\boot

Скрипт с меню WinPE запускается файлом startnet.cmd. Для корректного отображения кириллицы надо сменить кодировку этого файла на CP866. Следующим шагом нужно поправить по необходимости файл скрипта.

 

Добавляем параметры в меню PXE-сервера

Меню готово. Как видно из параметров в скрипте, на каждом этапе подключается некая сетевая папка. На PXE-сервере, установка и запуск которого были описаны в предыдущей статье, через Samba нужно опубликовать папку, которая будет доступна только для чтения (иначе установщик может стремиться что-нибудь туда запихнуть или перезаписать).

Далее для автоустановок надо подготовить файлы ответов. Забегая вперед, скажу, что благодаря этим самым файлам можно добиться абсолютно любого результата, например реализовать автоустановку с разбивкой первого диска 40/60% с подключением к домену, и дальше все необходимое программное обеспечение можно уже доставить групповыми политиками домена (но это уже совсем другая история).

Меню подготовили, дальше нужно все запаковать назад в WIM-образ:

imagex.exe /unmount /commit mount

Полученный образ WinPE — winpe.wim копируем на PXE-сервер. Далее в меню загрузки PXE, созданного в первой статье, /var/lib/tftpboot/pxelinux.cfg/default подключаем дочерний файл, в котором будет раздел windows.

 label Install Windows
    menu passwd qwerty
    menu label Install/Boot Windows
    kernel  boot/vesamenu.c32
    append  pxelinux.cfg/windows

Загрузка WIM-образов описана в первой статье. Поэтому привожу только секцию запуска:

menu label WinPE Install Windows All
    menu passwd my_password
    com32 linux.c32 boot/wimboot
    APPEND initrdfile=/images/windows/bootmgr.exe,/images/windows/boot/BCD,/images/windows/boot/boot.sdi,/images/windows/boot/winpe.wim
 

Подготовка файла ответов

Начнем с Windows 7 Pro. Для подготовки файла ответов потребуется файл install.wim, который можно взять на установочном диске Windows 7 в папке source. Хватаем его, копируем в удобное доступное место. Далее запускаем Windows System Image Manager.

Запуск Windows System Image Manager
Запуск Windows System Image Manager

В секции «Образ Windows» выполняем правый клик — выбрать образ Windows. Затем необходимо выбрать подготовленный install.wim.

Выбор образа Windows
Выбор образа Windows

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

Процесс создания файла каталога
Процесс создания файла каталога

Когда комп отпустит и образ загрузится в программу, в разделе «Файл ответов» выполняем правый клик — «Новый файл ответов». Берем пробирки, начинаем химичить. В ходе установки с обычного диска без использования файла ответов программа установки операционной системы задает обычно следующие вопросы: страна и регион, время и валюта, указание часового пояса, раскладка клавиатуры, язык системы (опционально), имя создаваемого пользователя, имя компьютера, пароль создаваемого пользователя, ключ продукта, принятие лицензионного соглашения, вопрос об активации Windows, вопрос о выборе режима работы автоматических обновлений. Чтобы система устанавливалась целиком автопилотом, большинство этих параметров необходимо задать в файле ответов.

Сначала подготовим разметку диска компьютера. Для этого в разделе «Образ Windows» раскрываем список и правым кликом добавляем amd64_Microsoft-Windowsl-Setup*/DiskConfiguration в группу 1 файла ответов windowsPE. Раскроем раздел amd_Microsoft-Windows-Setup_neutral в поле «Файл ответов», правым кликом на разделе DiskConfiguration сделаем разметку для диска. На созданном разделе Disk поля «Файл ответов» для DiskID выбираем 0, поскольку под систему используется, как правило, первый диск в компьютере. Параметр WillWipeDisk говорит о форматировании жесткого диска и переразметке всех существующих на нем разделов.

Разметка диска
Разметка диска

Раскроем раздел Disk. Будет доступно два подраздела: CreatePartitions и ModifyPartitions. Первым параметром задается, на какие части разбивать жесткий диск.

Разметка диска
Разметка диска

Вторым — как именно это делать, какую файловую систему создавать при форматировании и каким он будет помечен флагом. Первый диск разбиваем на 100 Мбайт, второй я сделал на 50 000 Мбайт. При этом вторым параметром задаем форматирование второго раздела в NTFS, помечаем имя раздела как system.

Форматирование раздела
Форматирование раздела

Параметром PartitionID указывается, какой раздел жесткого диска компьютера обрабатывать, Order определяет, в каком порядке. Параметр Letter задает букву диска. Следующим шагом из поля «Образ Windows» правым кликом amdMicrosoft-Windows-Setup*/WindowsDeploymentServices добавляем параметр для прохода 1 windowsPE.

Добавление учетных данных
Добавление учетных данных

В секции ImageSelection поле ImageGroup отвечает за название группы, в которой находится установочный образ, а поле ImageName — собственно за имя самого образа. В полях DiskID и PartitionID пункта InstallTo указываем номера раздела и диска, на которые будет производиться установка. Для ввода учетных данных пользователей из поля «Образ Windows» amd64Microsoft-Windows-Shell-Setup* добавляем секцию UserAccounts. Здесь же можно ввести временную зону и другие параметры.

Создание локального пользователя
Создание локального пользователя

Для проверки на наличие ошибок файла ответов выбираем в панели меню «Сервис -> Проверка файла ответов».

Проверка файла ответов
Проверка файла ответов

Добавим параметры: имя компьютера, ключ продукта, владелец операционной системы, название организации, параметры зоны времени и так далее. Для этого добавим целиком секцию amd_Microsoft-Windows-Shell-Setup*.

Другие параметры
Другие параметры

Для языковых параметров необходимо использовать секцию amd64_Microsoft-Windows-International-Core_neutral. После всех манипуляций сохраняем файл ответов, например win7.xml, в каталог с дистрибутивом Windows 7, опубликованный на PXE-сервере через samba. Для Windows 8 и Windows Server 2012 файл ответов можно создать аналогичным образом или отредактировать полученную XML и сохранить в каталогах дистрибутивов под соответствующими именами.

 

Запуск диагностических утилит

С Windows вроде закончили, переходим к различным мелким полезным штуковинам. Тут все просто: если программа идет небольшим ISO- или IMA-образом, то проще всего ее запустить memdisk’ом, примеры есть в первой статье.

 

Запуск Kaspersky Rescue Disk

С Касперским дела обстоят немного интереснее. Собрать ядро и образ ФС (rescue и rescue.igz) для использования в PXE очень просто. Однако, как оказалось, собрать — это полбеды. А вот как организовать обновление без пересборки образа постоянно? Кто-то настраивает пересборку образов скриптами. Я решил попробовать пойти по пути наименьшего сопротивления — реализовать через NFS. Складывать в каталог, который подключен по NFS, пересобрать файлы загрузки так, чтобы каталог системы с базами монтировался как NFS-каталог с базами. Либо монтировать каталог с базами куда-нибудь в систему и через символьную ссылку подключать к каталогу системы, в котором базы должны находиться. О результатах напишу в комментариях к статье. Пока запуск выполняю вот так:

label Kaspersky Rescue Disk v 10
    menu label Kaspersky Rescue Disk v10
    linux kav/boot/rescue
    append initrd=kav/boot/rescue.igz root=/dev/nfs netboot=nfs nfsroot=192.168.181.4:/var/lib/tftpboot/kav initrd=kav/boot/rescue.igz
 

Установка Debian

Запускает установку Debian с заданными параметрами файл preseed.cfg, подтянуть который можно по HTTP. Для этого поднимаем легенький веб-сервер (по счастливому случаю у меня уже установлен Apache 2, поэтому я буду публиковать файл там). Публикуем каталог debian на веб-сервере, создаем там файл preseed.cfg, убеждаемся, что он доступен (проверить можно браузером). В параметры загрузки PXE добавляем:

label debian_testing64gtkauto
    menu label Debian Testing x64 Auto Remoute Install
    kernel  images/linux/debian/testing/debian-installer/amd64/linux auto=true priority=critical vga=788 locale=ru_RU console-keymaps-at/keymap=us netcfg/choose_interface=eth0 netcfg/get_hostname=debian netcfg/get_domain=local url=http://192.168.181.4/debian/preseed.cfg --- quiet
    initrd  images/linux/debian/testing/debian-installer/amd64/initrd.gz

Файл preseed.cfg, если проводить аналогию с вариантами автоматизации установки Windows, является файлом ответов = файлом конфигурации установки системы. Задавать можно любые параметры, которые хотим автоматизировать, в нашем случае следующие: язык в установленной системе, страна нахождения сервера, часовой пояс, синхронизация времени с заданного NTP-сервера, параметры раскладки клавиатуры, зеркало архива, каталог архива, использование прокси. Включаем SSH-сервер внутри установщика для продолжения установки по SSH с паролем qwerty (логин для подключения будет installer), в процессе установки системы установить сразу пакеты: openssh-server, sudo, screen и byobu. И последним параметром указываем выполнить полное обновление:

d-i debian-installer/locale string ru_RU.UTF-8
d-i mirror/country          string RU
d-i time/zone         string Asia/Yekaterinburg
d-i clock-setup/ntp-server     string 192.168.1.1
d-i keymap             select us
d-i mirror/http/hostname    string mirror.yandex.ru
d-i mirror/http/directory   string /debian
d-i mirror/http/proxy       string

d-i network-console/password             password        qwerty
d-i network-console/password-again       password        qwerty
d-i preseed/early_command                string          anna-install network-console
d-i anna/choose_modules                  string          network-console

tasksel tasksel/first multiselect none
d-i pkgsel/include string openssh-server sudo screen byobu
d-i pkgsel/upgrade select full-upgrade

Также можно задать настройки HDD: куда ставить систему, как разбивать, сколько выделять под swap:

d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-auto/choose_recipe select atomic
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

Можно задать параметры установки пароля root:

d-i passwd/root-password password qwerty
d-i passwd/root-password-again password qwerty

Отключить последнее сообщение о завершении установки системы:

d-i finish-install/reboot_in_progress note

Выключение хоста после завершения установки:

d-i debian-installer/exit/poweroff boolean true

Таким образом можно задать любой другой параметр. Использовать для еще большего удобства можно в комбинации с Puppet. Доставляя клиент Puppet при установке и передавая управление системе контроля конфигурациями Puppet, получаем готовый, заточенный под конкретную задачу сервер. 🙂

 

Заключение

Как показала практика, все оказалось гораздо проще, чем выглядело на первый взгляд. Если использовать PXE в паре, например, с Docker, Puppet, WPI, с системного администратора снимается около 40% задач. Освободившееся время лучше потратить с пользой ;). Всем удачи!

P. S. В ходе эксплуатации возникла проблема с запуском установки Windows, а именно: при некоторых конфигурациях драйверы на сетевую карту не находились, в результате чего не подключалась директория с дистрибутивом Windows. Решение подсказал Sosed213. Необходимо добавить драйверы на сетевые карты, для этого опять монтируем winpe.wim. Добавляем драйверы сразу паком, предварительно распаковав их:

Dism /image:%ua%\winpe_x86\mount /Add-Driver /Driver:"\!Driver_x86" /Recurse

1 комментарий

  1. Аватар

    Silverheart

    14.02.2017 в 10:15

    Доброго времени суток.
    Подскажите, плиз, в статье, наверное, пропущен кусок текста. После той врезки где приведены команды по монтированию winpe.wim и копированию оттуда файлов в Командной строке средств развертывания, сразу идет упоминание про скрипт startnet.cmd: «Скрипт с меню WinPE запускается файлом startnet.cmd. Для корректного отображения…» и далее в следующем разделе снова идет важная ссылка на этот скрипт: «…Как видно из параметров в скрипте, на каждом этапе подключается некая сетевая папка…». Возможно какая-то часть статьи выпала, не скопировалась или еще что-то? Очень прошу, помогите. А то у меня никак не удается запустить wim образ с pxe. Все лезут ошибки на этапе разворачивания образа уже на клиентской машине. Заранее благодарен.

Оставить мнение