Содержание статьи
Что ж, пришло время продолжить загрузить по сети еще что-нибудь интересное и, самое главное, полезное. В первой части мы рассмотрели запуск программ Acronis, установку Debian/Ubuntu Linux, загрузку маленьких ISO и запуск готовых WIM-образов.
Итак, планы на сегодня!
- Установка Windows в ручном и автоматическом режимах.
- Сборка WIM-образа.
- Подготовка файла ответов.
- Запуск ERD Commander (MSDaRT).
- Загрузка Kaspersky Rescue.
- Бонусом реализуем запуск установки Debian с дальнейшей установкой по SSH.
Начнем с Windows
На эту тему на просторах Сети можно найти довольно много статей. За основу я взял статью с Хабра «Установка Windows Server 2008 по сети с Linux PXE сервера. Кастомизация образа WinPE».
WARNING
Все дальнейшие действия, связанные с подготовкой Windows, выполняются в среде Windows.
Первым делом необходимо подготовить среду WinPE, с которой и будем запускать установки различных систем семейства Windows. Для этого нам потребуется пакет Windows AIK, скачать который можно бесплатно с официального сайта Microsoft.
Хакер #202. Скажи нет большому брату!
После установки пакета 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» выполняем правый клик — выбрать образ Windows. Затем необходимо выбрать подготовленный install.wim
.
Далее система может ругнуться на то, что для этого образа не удается открыть файл каталога, связанного с ним, и попросит создать новый. После согласия система будет какое-то время копошиться, создавая все необходимое, тут каждому придется запастись долей терпения. В зависимости от железа, на котором все действо происходит.
Когда комп отпустит и образ загрузится в программу, в разделе «Файл ответов» выполняем правый клик — «Новый файл ответов». Берем пробирки, начинаем химичить. В ходе установки с обычного диска без использования файла ответов программа установки операционной системы задает обычно следующие вопросы: страна и регион, время и валюта, указание часового пояса, раскладка клавиатуры, язык системы (опционально), имя создаваемого пользователя, имя компьютера, пароль создаваемого пользователя, ключ продукта, принятие лицензионного соглашения, вопрос об активации 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