Мультизагрузочный PXE-реаниматор. Как загрузить компьютеры с помощью ISO по локальной сети. Настройка DHCP и TFTP серверов для удаленной загрузки с использованием стандарта PXE

AOMEI PXE Boot представляет собой свободное программное обеспечение для загрузки компьютеров с ISO по локальной сети. Будучи очень простой в использовании, эта программа позволяет использовать загрузочный образ диска (ISO) для удаленной загрузки нескольких компьютеров, при условии, что они подключены к одной локальной сети. Это делает AOMEI PXE Boot чрезвычайно полезным инструментом для таких задач, как удаленное развертывание и сопровождение приложений, особенно на предприятиях.

Работать с AOMEI PXE Boot довольно просто: вы устанавливаете программу на систему, которая будет использоваться в качестве сервера, монтируете ISO и ждете загрузки клиентских машин. И лучшая часть заключается в том, что AOMEI PXE Boot поддерживает синхронную загрузку нескольких компьютеров одновременно. Давайте узнаем больше об этой замечательной программе, и выясним, как вы можете использовать ее для загрузки компьютеров с ISO по проводной локальной сети.

AOMEI PXE Boot: основное назначение и несколько слов о Windows PE

Важно отметить, что AOMEI PXE Boot в первую очередь предназначен для устранения проблем с компьютерами в сети. Вы можете использовать программу для загрузки нефункционирующей системы в ограниченной среде. Для этой цели AOMEI PXE Boot лучше всего работает с загрузочными образами дисков Linux, или Windows PE. Последняя является операционной системой с ограниченными службами, которая используется для загрузки компьютера в восстановительных или установочных целях. Основанная на ядре Vista, Windows PE не является полноценной операционной системой. Вместо этого она предоставляет безопасную среду для устранения неполадок с компьютером и восстановления его рабочего состояния.

Нет абсолютно никаких оснований полагать, что AOMEI PXE Boot не будет работать с любым другим образом диска. Во время тестирования я смог удаленно загрузить на клиентской системе Damn Small Linux (DSL), используя загрузочный ISO-образ.

Как загрузить компьютеры с помощью ISO по локальной сети

Теперь, когда вы знаете о AOMEI PXE Boot достаточно много, пришло время увидеть, как эта штука работает. Процесс, по сути, состоит из двух этапов. Первая часть включает в себя настройку клиентского компьютера для загрузки по сети, а вторая состоит из настройки и запуска приложения на системе, действующей в качестве сервера.

Обратите внимание, что оба компьютера должны быть подключены к одной сети. В моем случае сервер был подключен к сети по беспроводному каналу, но клиентская машина была подключена проводом.

Часть 1: Настройка клиентского компьютера(ов) для сетевой загрузки

Как и предполагает название, первое, что необходимо сделать, это настроить клиентский компьютер или компьютеры для загрузки через проводную сеть. Чтобы сделать это, вам нужно получить доступ к меню BIOS компьютера. Ниже говорится о том, как это сделать (процесс более или менее такой же, независимо от производителя компьютера):

1. Включите клиентский компьютер и нажмите клавишу для доступа к меню BIOS (обычно Del, Esc, F8 или F12). В BIOS перейдите в подменю «Boot» и в разделе «Boot Options Priorities» выберите «PXE» (на некоторых компьютерах «Legacy LAN», «Realtek PXE B02 D00», «Network boot from Intel» и т.д.) в качестве первого загрузочного устройства. Вам также может потребоваться включить опцию PXE ROM, если она отключена.

2. AOMEI PXE Boot поддерживает только режим загрузки Legacy, поэтому вам также нужно отключить опцию UEFI Boot, если она поддерживается материнской платой компьютера. Эта опция может быть найдена в подменю Boot.

Это все, что нужно сделать на клиентском компьютере. Не забудьте сохранить изменения, внесенные в конфигурацию BIOS. Теперь давайте перейдем к серверу.

Часть 2: Загрузка ISO и запуск приложения на компьютере-сервере

Эта часть на самом деле еще проще. Для начала, скачайте и установите AOMEI PXE Boot (около 5 МБ) на компьютер, который будет использоваться в качестве сервера. В дополнение к этому вы также должны скачать загрузочный образ диска для загрузки клиентского компьютера или компьютеров. Шаги ниже объясняют, что от вас требуется:

1. Запустите AOMEI PXE Boot. На первом экране программы выберите опцию «Boot from custom image file» и перейдите к вашему ISO-файлу (вы также можете использовать другой вариант для загрузки Windows PE или Linux ISO с сайта компании AOMEI, если вы хотите). Когда образ будет выбран, нажмите на кнопку «Start Service», чтобы запустить службу.

2. Теперь в окне AOMEI PXE Boot будет отображаться информация об активности, происходящей на сервере и клиентских компьютерах. Больше на сервере делать ничего не нужно. Чтобы увидеть реальные действия, давайте переместимся дальше. И, само собой разумеется, приложение и, конечно, сервер, должны быть запущены.

Вам только остается запустить клиентский компьютер и дождаться, пока он загрузится по сети, используя ISO-образ, который был выбран вами через AOMEI PXE Boot на компьютере-сервере. Вот полностью рабочий дистрибутив Damn Small Linux, работающий на клиентском компьютере:

Заключительные слова

Если вы администратор сети, и ищите простой и эффективный способ (и без излишеств) для удаленного развертывания и управления ОС, AOMEI PXE Boot может быть именно тем, что вам нужно. Это качественный инструмент, который до смешного прост в настройке и работает на удивление хорошо.

Отличного Вам дня!

Напоминаем, что попытки повторить действия автора могут привести к потере гарантии на оборудование и даже к выходу его из строя. Материал приведен исключительно в ознакомительных целях. Если же вы собираетесь воспроизводить действия, описанные ниже, настоятельно советуем внимательно прочитать статью до конца хотя бы один раз. Редакция 3DNews не несет никакой ответственности за любые возможные последствия.

Помните, мы когда-то рассматривали создание универсальной USB-«аптечки» для экстренной починки компьютера? В последней статье мы познакомились с загрузкой по сети и программой DRBL . Ну а в этот раз мы займёмся созданием аналога мультизагрузочного носителя, только загружаться мы будем не с флешки, а по сети — с помощью PXE. Делается это довольно просто. Как обычно, нам понадобится машина под управлением Ubuntu Server 11.10 с двумя сетевыми картами, которая будет исполнять роль сервера. В BIOS клиентских машин должна быть включена поддержка сетевой загрузки.

Дабы упростить себе задачу и не возиться по отдельности с установкой и настройкой различных сетевых служб вроде DHCP- и TFTP-сервера, мы воспользуемся более универсальным решением — dnsmasq. Это лёгкий DNS/DHCP/TFTP-сервер, который прекрасно подходит для сетевой загрузки машин. Как и в прошлый раз, договоримся, что сетевой интерфейс eth0 автоматически получает IP-адрес от роутера и имеет доступ в Интернет. В свою очередь eth1 смотрит во внутреннюю сеть и имеет статический IP-адрес 192.168.0.1. Отредактируйте сетевые настройки в файле /etc/network/interfaces с помощью текстового редактора nano, если вы этого ещё не сделали.

Sudo nano /etc/network/interfaces

В конце файла добавим настройки интерфейса eth1 и сохраним его (F2, Y, Enter).

Auto eth1 iface eth1 inet static address 192.168.0.1 netmask 255.255.255.0

Если необходимо дать доступ в Сеть для локальных клиентов, то придётся сделать ещё кое-что. Во-первых, раскомментировать (убрать # в начале) строчку net.ipv4.ip_forward=1 в файле /etc/sysctl.conf. Во-вторых, выполнить пару команд. Последнюю команду надо добавить в конец файла /etc/rc.local перед строчкой exit 0 , чтобы проброс Сети запускался при старте.

Sudo sysctl -p sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Теперь надо установить dnsmasq, а также несколько утилит для облегчения работы — файловый менеджер Midnight Commander и утилиты для распаковки ISO-образов и архивов ZIP/RAR/7ZIP.

Sudo apt-get install dnsmasq mc genisoimage unzip unrar p7zip-full

Приступаем к настройке dnsmasq.

Sudo nano /etc/dnsmasq.conf

Добавляем в самом конце следующие строки:

Interface=eth1 dhcp-range=192.168.0.10,192.168.0.100,255.255.255.0,24h server=8.8.8.8 enable-tftp tftp-root=/pxe dhcp-boot=pxelinux.0

Что есть что? Параметр interface указывает на то, с каким сетевым интерфейсом будет работать dnsmasq. В dhcp-range первые два параметра указывают начало и конец диапазона выдаваемых клиентским компьютерам адресов, затем идёт маска подсети и время аренды адресов. В поле server указываются IP-адреса вышестоящих DNS-серверов (например, провайдера), но при желании можно воспользоваться Google DNS или OpenDNS. Директива enable-tftp включает встроенный TFTP-сервер, а в tftp-root указывается корневой каталог для него. Наконец, в dhcp-boot прописывается загрузчик, который будет отдаваться по сети.

Сохраним настройки и перезапустим сервер, а также создадим необходимые папки и запустим Midnight Commander (mc), где и продолжим основную работу. В /pxe/images/ будут храниться образы утилит или дистрибутивов, которые будут загружаться через локальную сеть. Каталог /pxe/pxelinux.cfg предназначен для хранения настроек PXE.

Sudo mkdir -p /pxe/images/ sudo mkdir /pxe/pxelinux.cfg sudo service dnsmasq restart sudo mc

Первым делом надо получить загрузочные программы из проекта syslinux . Скачайте наиболее свежий архив в домашнюю папку. Команды можно набирать прямо в mc или для удобства переключаться между консолью и панелями сочетанием клавиш Ctrl+O. Качать файлы удобнее всего программой wget. Например, вот так:

Wget http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-4.05.tar.gz

Входим в скачанный архив, просто переместив выделение к нему и нажав Enter. Из него в директорию /pxe надо скопировать несколько файлов — pxelinux.0 из папки /core, menu.c32 из /com32/menu и memdisk из одноимённого каталога.

Начинаем потихоньку заполнять настройки по умолчанию pxelinux.

Sudo nano /pxe/pxelinux.cfg/default

Добавим в этот файл следующие строки:

DEFAULT menu.c32 TIMEOUT 600 MENU TITLE PXE BOOT MENU LABEL HDDBoot MENU LABEL Local Boot MENU DEFAULT LOCALBOOT 0

Вообще вся документация по формированию параметров загрузчиков syslinux, и загрузочного меню PXE в частности, находится в текстовых файлах каталога docs архива syslinux. Разберём те параметры, которые мы только что использовали. По умолчанию запускается файл menu.c32, который и отображает наше PXE-меню. В TIMEOUT указывается время ожидания (в 1/10 с), после которого будет произведена загрузка пункта по умолчанию. В MENU TITLE содержится заголовок нашего меню. Туда можно вписать всё, что душе угодно.

Затем идёт описание первого пункта меню. Каждому пункту для удобства обращения с ним присваивается метка (LABEL). В MENU LABEL имя метки, которое пользователь увидит при загрузке. MENU DEFAULT означает, что этот пункт из текущего меню будет запущен по умолчанию. Ну а директива LOCALBOOT 0 указывает на то, что надо завершить работу PXE и вернуться к обычной загрузке компьютера. Лучше оставить этот пункт для запуска по умолчанию.

Разнообразим наш мультизагрузчик некоторыми утилитами. Возьмём, к примеру, известнейшую программу для тестирования памяти Memtest86+ . Скачиваем с сайта архив с Pre-Compiled Bootable Binary. Сохраняем из него файл memtest.bin как memtest (без расширения!) в папку /pxe/images. Здесь мы сталкиваемся сразу с двумя особенностями. Во-первых, для набора syslinux ряд файлов (.0, .bin, .bs и так далее) должны иметь строго определённый формат. Тот же.bin для isolinux читается как загрузочный сектор CD, а memtest.bin таковым не является. Во-вторых, этот файл напрямую поддерживает загрузку с помощью syslinux, поэтому мы можем смело указать его в качестве запускаемого «ядра».

LABEL Memtest86+ MENU LABEL Memtest86+ KERNEL images/memtest

Ещё один полезный вариант загрузки — использование memdisk . В этом случае носитель (iso-образ, raw-образ дискеты, образ HDD) полностью копируется в оперативную память компьютера и дальнейшая загрузка происходит с него. Вот пример для запуска KolibriOS . Из архива с дистрибутивом надо скопировать файл kolibri.img в папку /pxe/images, а в /pxe/pxelinux.cfg/default дописать нижеследующие строки.

LABEL Kolibri MENU LABEL KolibriOS KERNEL memdisk APPEND initrd=images/kolibri.img


Можно поступить «суровее» — поставить в загрузку Hiren"s Boot CD . Уже можно догадаться, что iso-образ надо сохранить как /pxe/images/hirens.iso. На клиентской машине придётся подождать минуту-другую, пока полугигабайтный iso скопируется в память. Естественно, что на самом ПК должен быть хотя бы один гигабайт RAM. Зато после загрузки работа с Hiren"s Boot CD крайне быстра. Впрочем, таких экстремальных вариантов лучше, наверное, избегать.

LABEL Hirens MENU LABEL Hiren"s Boot CD KERNEL memdisk APPEND iso initrd=images/hirens.iso


Возьмём пример посложнее — загрузим Clonezilla Live через PXE. Создаём папку /pxe/images/clonezilla. Туда надо будет скопировать все файлы из папки /live, которая лежит в ISO-образе. В настройках мы указываем загрузку ядра Linux (vmlinuz), а в APPEND передаём ему параметры. Их можно подсмотреть в файле isolinux/isolinux.cfg внутри ISO-образа (ключи ocs_* относятся непосредственно к Clonezilla, а не ядру как таковому). В нашем случае отличия от него будет немного — надо только указать, что файл с образом системы в Squashfs следует забрать при загрузке с TFTP-сервера.

LABEL Clonezilla MENU LABEL Clonezilla KERNEL images/clonezilla/vmlinuz APPEND initrd=images/clonezilla/initrd.img boot=live config noprompt noswap nomodeset nolocales/nosplash edd=on vga=788 ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_keymap="" ocs_live_bash="no" ocs_lang="" fetch=tftp://192.168.0.1/images/clonezilla/filesystem.squashfs TEXT HELP Clonezilla Live — Boot to RAM ENDTEXT

Внимание! Всё, что находится после APPEND, является одной-единственной строкой без переносов. Текст между директивами TEXT HELP и ENDTEXT будет показан в качестве подсказки при выборе соответствующего пункта загрузочного меню. Аналогичным образом добавляются в загрузку и другие дистрибутивы или утилиты на основе Linux. Попробуйте в качестве разминки прописать настройки для легковесного дистрибутива SliTaz .

LABEL Slitaz MENU LABEL SliTaz Linux KERNEL /boot/bzImage APPEND initrd=/boot/rootfs4.gz,/boot/rootfs3.gz,/boot/rootfs2.gz,/boot/rootfs1.gz rw root=/dev/null vga=normal autologin


Как видите, всё довольно просто и достаточно гибко настраивается. Для дальнейшего изучения PXE-загрузки на базе Ubuntu Server неплохо было бы ознакомиться с wiki syslinux и документацией, которая прилагается в архиве к этой утилите. Из интересных решений с использованием PXE можно почитать, к примеру, про сетевую установку Windows 7 без применения RIS/WDS. А из полезных дополнений стоит присмотреться к дистрибутиву Thinstation для создания тонких клиентов, а также к менеджеру загрузки Plop . Несомненно, пригодятся утилиты для тестирования «железа» и диагностики проблем, для восстановления данных и создания бекапов, для… В общем, дело за вами. Удачи!

    Стандарт PXE (Preboot Execution Environment) позволяет реализовать процедуру начальной загрузки системы с использованием локальной сети (удаленную загрузку Remote Boot). Разработку данного стандарта начала компания Intel, в 1999 году, а потом к разработке присоединились другие крупные разработчики сетевого оборудования как 3Com, HP, Dell, Compaq. В результате, появился довольно хорошо продуманный и реализованный стандарт, позволяющий выполнить сетевую загрузку любой операционной системы. На сегодняшний день, сетевая загрузка используется для установки операционных систем, работы бездисковых рабочих станций, в системах резервного копирования и восстановления и т.п. .

После включения питания компьютера, управление передается прошитой в постоянном запоминающем устройстве (ПЗУ) подпрограмме базовой системы ввода-вывода. (BIOS). Сначала выполняются тесты и начальная инициализация основного оборудования компьютера и, после их успешного завершения, в случае загрузки по сети, управление передается в подпрограмму, прошитую в ПЗУ сетевой карты (BootROM) и реализующую функции PXE-клиента. Подпрограмма должна выполнить инициализацию оборудования собственной сетевой платы, настроить средства протокола IP, найти в сети PXE-сервер, с которого будет выполняться начальная загрузка и, собственно, выполнить процедуру считывания загружаемых данных в оперативную память и передачу им управления. Для сетевых настроек используется DHCP - сервер а для обмена данными используется протокол прикладного уровня TFTP (Trivial File Transfer Protocol). В общем виде, процесс сетевой загрузки выглядит следующим образом:

PXE-клиент выполняет запрос на получение IP-адреса от DHCP-сервера.
- DHCP - сервер выдает клиенту свободный IP-адрес, а также IP-адрес TFTP-сервера (PXE-сервера) и имя загружаемого файла
- PXE-клиент подключается к PXE-серверу и отправляет запрос на получение указанного файла.
- Если запрошенный файл имеется на TFTP-сервере, он передается PXE-клиенту.
- PXE - клиент загружает полученный по сети файл, в оперативную память компьютера и передает ему управление. Дальнейшая процедура загрузки будет выполняться загруженной подпрограммой и зависит от ее конкретной разновидности.

Таким образом, удаленная загрузка с использованием стандарта PXE требует наличия в загружаемом компьютере сетевой платы с ПЗУ удаленной загрузки (BootROM) поддерживающим PXE, и присутствия в локальной сети соответственным образом настроенных DHCP и TFTP серверов, являющихся стандартными компонентами серверных операционных систем Microsoft. Однако, для небольших сетей, установка дорогостоящего сервера для реализации технологии PXE не имеет смысла и, как правило, в таких случаях применяется программное обеспечение сторонних производителей. В частности, в операционных системах семейства Linux эти компоненты бесплатны, легко устанавливаются и настраиваются. В среде Windows можно воспользоваться также бесплатным продуктом с открытым кодом (Open Source) TFTPD32 , позволяющим реализовать оба сервера (DHCP и TFTP) как на одном компьютере, так и на разных. Скачать tftpd32 можно на странице загрузки проекта . Доступны различные варианты инсталлятора tftpd32:

Tftpd32 standard edition (zip) - архив с программой, документацией на английском языке, и файлом настроек. Можно использовать как обычное пользовательское приложение без инсталляции.

Tftpd32 standard edition (installer) - исполняемый файл инсталлятора tftpd32 для стандартной редакции, когда сервер устанавливается в качестве приложения.

Tftpd32 service edition (installer) - инсталлятор tftpd32 для установки в качестве системной службы. Требуется в случаях, когда TFTP32 предполагается использоваться с автоматическим запуском без входа пользователя в систему.

Настройка DHCP и TFTP серверов для удаленной загрузки с использованием стандарта PXE.

    В качестве примера, реализуем удаленную мультизагрузку с помощью загрузчика GRUB сразу нескольких операционных систем с программами для тестирования оборудования и восстановления работоспособности Windows:

ERD Commander 5.0
- Victoria For DOS v 3.52

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

Вкратце, алгоритм загрузки с использованием GRUB следующий:

Выполняется загрузка в оперативную память файла grldr и передача ему управления. Стандартно, такая загрузка выполняется с дискового носителя (HDD,CD, USB HDD и т.п), но возможна и по локальной сети.
- начальный загрузчик grldr выполняет поиск и считывание специального файла конфигурации menu.lst Меню загрузки выводится на экран дисплея.
- пользователь выбирает нужный пункт меню, и загрузчик выполняет определенный набор внутренних команд, обеспечивая загрузку соответствующей операционной системы.

Одной из особенной загрузчика GRUB является возможность выполнения загрузки из файлов образов системы (.iso, .ima и т.п). В упоминаемой статье использовался именно такой способ и каждому варианту загрузки соответствовал свой файл образа и последовательность команд в секции файла menu.lst.

Условно, процесс удаленной загрузки можно разделить на 2 этапа:

Начальная загрузка под управлением подпрограммы удаленной загрузки, прошитой в ПЗУ сетевой карты.
- продолжение загрузки загрузчиком grldr, получившим управление по завершению первого этапа.

Таким образом, для решения задачи нужно установить и настроить серверы DHCP и TFTP, а также скопировать в корневой каталог сервера файлы, необходимые для удаленной загрузки - grldr, menu.lst и файлы загрузочных образов. Нужно также создать необходимые пункты меню для выбора вариантов загрузки в файле menu.lst (если такой файл не найден, то активируется командный режим загрузчика). Файл menu.lst может находиться не только на устройстве загрузки, но и на любом другом диске. Если файлов menu.lst несколько (на разных дисках) первым загруженным menu.lst будет файл на загрузочном устройстве . Если файл найден на одном из жестких дисков, то файлы на сменных носителях игнорируются. В случае загрузки по локальной сети, файл menu.lst должен находиться в корневом каталоге TFTP - сервера, там же, где и файл загрузчика grldr . Корневой каталог сервера, в данном случае, является аналогом корневого каталога жесткого диска, с которого выполняется начальная загрузка.

Настройки tftpd32 не составляют особой сложности. Например, для стандартной версии в режиме приложения, распаковываем архив с программой tftpd32.400.zip в папку C:\TFTPD . Создаем в ней подкаталог BOOT . Этот подкаталог будет использоваться в качестве корневого каталога TFTP-сервера. Такие имена и пути вовсе не обязательны, и рассматриваются всего лишь в качестве простого примера.

После запуска исполняемого файла tftpd32.exe на экран будет выведено основное окно программы:

Для настройки серверов нужно нажать на кнопку Settings в нижней части окна. Откроется окно общих настроек Globals

Галочками отмечаются нужные компоненты tftpd32 - DHCP Server и TFTP Server . После чего выполняется настройка каждого из них. Вкладка TFTP используется для настроек TFTP сервера.

Base Directory определяет корневой каталог сервера.
TFTP Security и TFTP configuration можно оставить без изменений.
Advanced TFTP Options определяет расширенные настройки сервера. Обязательно нужно включить опцию PXE Compability (в настройках по умолчанию она выключена). Остальные настройки можно оставить без изменений, учитывая тот факт, что при наличии нескольких сетевых интерфейсов нужно явно указать тот, который доступен со стороны PXE - клиента и обеспечивает прохождение широковещательных пакетов между клиентом и сервером (опция Bind TFTP to this address ) . После чего нужно настроить DHCP сервер, переключившись на вкладку DHCP

IP pool starting address - начальный IP- адрес из области раздаваемой клиентам.
Size of pool - размер области IP-адресов. Начальный адрес и размер задают диапазон адресов, которые будут выдаваться в аренду клиентам. Как обычно, область адресов должна исключать адрес самого сервера и прочие статически назначаемые IP .
Boot File - имя файла, который будет использоваться для удаленной загрузки PXE-клиентом.
Остальные значения можно оставить без изменений, кроме маски сети (Mask ) - она должна соответствовать сетевой конфигурации. В примере - 255.255.255.0

При наличии нескольких сетевых интерфейсов можно, как и в предыдущем случае, явно задать конкретный, включив опцию Bind DHCP to this address

Вкладка Syslog предназначена для определения параметров журналов программы. При настройках по умолчанию диагностические сообщения в журнал не записываются, но отображаются в окне программы на вкладке Log viewer

На этом настройки завершены. Изменение некоторых настроек может потребовать перезапуск tftpd32.exe, о чем пользователю будет выдано соответствующее сообщение.

Для проверки правильности настроек серверов и возможности выполнения первого этапа (загрузка PXE-клиентом файла загрузчика grldr) можно скопировать в корневой каталог сервера TFTP файл grldr и запустить tftpd32.exe . Затем выполнить удаленную загрузку. Обычно, для обеспечения загрузки по сети достаточно в настройках BIOS материнской платы включить опцию, разрешающую использование ПЗУ удаленной загрузки (Enable BootROM , Network Boot и т.п - название зависит от версии BIOS) и в качестве устройства загрузки выбрать сеть (Network Boot Agent, PXE , и т.п.)

Если все правильно настроено, то на загружаемом компьютере появится командная строка с приглашением загрузчика grub:

Если же появится сообщение об ошибке (ARP timeout, TFTP cannot open connection, System not found и т.п.) - проверьте правильность настроек DHCP и TFTP, а также отсутствие блокировок трафика брандмауэрами. При запущенном TFTPD32 на сервере должны слушаться (ожидать входящих соединений) UDP порты 67 и 69. Проверить, слушаются ли указанные порты, можно с помощью команды netstat . Например:

netstat -nab - отобразить статистику всех соединений (параметр a ) с выводом номеров портов в числовом виде (параметр n ) и отображением имен программных модулей, участвующих в создании соединения (параметр b ).

netstat -nab | more - то же, что и в предыдущем случае, но с режимом постраничного отображения информации.

    В нашем примере, загрузка началась, но завершилась на начальном этапе приглашением к вводу команд загрузчика GRUB. Приглашение командной строки загрузчика выводится в случае, когда программа grldr не смогла обнаружить файл menu.lst, в котором должны находиться директивы, обеспечивающие дальнейшую загрузку системы. Как уже упоминалось, этот файл может находиться не только на устройстве загрузки, но и на любом другом диске, а в случае загрузки по локальной сети, он должен быть в корневом каталоге TFTP - сервера, там же, где и файл загрузчика grldr. Корневой каталог сервера, в данном случае, является аналогом корневого каталога жесткого диска, с которого выполняется начальная загрузка.
Таким образом, для выполнения задачи сетевой загрузки, осталось скопировать в корневой каталог сервера TFTP файлы загрузочных образов и сформировать меню загрузки в файле menu.lst

Копирование необходимых файлов и настройка меню загрузки GRUB.

Для удобства, все файлы, которые нужно поместить в корневой каталог сервера TFTP я собрал в архив . Список содержащихся в нем файлов:

Grldr - загрузчик GRUB.
menu.lst - файл меню загрузчика
erdpxe - графическая оболочка меню.
erd50.iso - образ загрузочного компакт-диска ERD Commander 5.0
vcr352.ima - образ загрузочной дискеты с программой тестирования жестких дисков Victoria For DOS v 3.52
Состав файлов образов и содержание файла меню загрузчика можно изменить по Вашему желанию.

Содержимое файла menu.lst:

default 0
gfxmenu /erdpxe
title ERD Commander 5.0 for Windows XP / Windows 2003
map --mem /erd50.iso (0xff)
map --hook
chainloader (0xff)
boot

Title Victoria for DOS ver 3.52
map --mem /vcr352.ima (fd0)
map -hook
chainloader (fd0)+1
rootnoverify (fd0)
map --floppies=1
boot

Title Reboot PC
reboot
title Shutdown PC
halt

default 0 - номер пункта меню, который выбирается автоматически (нумерация пунктов начинается с нуля).

gfxmenu /erdpxe - использовать в качестве графического стиля меню файл erdpxe . Если файл отсутствует или этот параметр не задан, то меню отображается в стиле обычной командной строки. Файл графического стиля представляет собой zip-архив, обычно содержащий фоновый рисунок, файл шрифтов и конфигурационные файлы, позволяющие изменять некоторые параметры отображения меню (размер шрифта, цвет текста, цвет фона и т.п.).

title ERD Commander 5.0 for Windows XP / Windows 2003 - это название пункта меню загрузки. За ним следует последовательность команд, обеспечивающих выполнение процедуры загрузки ERD Commander

map --mem /erd50.iso (0xff) - команда map в данном случае используется для эмуляции компакт диска в оперативной памяти (параметр -mem) из файла образа erd50.iso на устройство загрузки 0xFF. При загрузке по сети нужно учитывать, что образы большого размера могут загружаться довольно длительное время.

map -hook - выполнить маппинг немедленно. Последовательно вводимые команды map не выполняются сразу, а ставятся в очередь на выполнение. Для отмены изменений эмуляции дисковых устройств используется map -unhook

chainloader (0xff) - GRUB будет использовать полученное при маппинге устройство 0xff в качестве устройства загрузки.

boot - выполнить подготовленную предыдущими командами процедуру загрузки.

Последние два пункта меню загрузчика используются для перезагрузки (Reboot PC) и выключения компьютера (Shutdown PC).

После выбора конкретного варианта меню, будет выполняться загрузка ERD Commander или DOS с программой Victoria.

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

Более подробную информацию об использовании команд загрузчика GRUB и примеры дополнительных пунктов в загрузочном меню можно найти в упомянутой выше статье

Описание настройки собственного PXE сервера на основе TFTPD32 для загрузки WinPE или BartPE.

PXE и процесс загрузки по сети

Стандарт PXE (Preboot Execution Environment) позволяет превратить сетевую карту в одно из устройств, с которого может загрузиться компьютер. Разработку данного стандарта начала компания Intel, еще 1999 году, а потом к разработке присоединились такие гиганты компьютерной индустрии, как 3Com, HP, Dell, Compaq. Стандарт прижился. И сейчас, пожалуй, не возможно, найти современной сетевой платы без поддержки PXE.
Конечно для того, чтобы компьютер смог загрузиться по сети одного PXE не достаточно. Нужно еще наличие в сети серверов TFTP и DHCP.

Процесс загрузки по сети можно упрощенно описать примерно так.

При включении компьютера, начинает работать PXE загрузчик, который находится в памяти (boot ROM) сетевого адаптера. Сетевая карта отправляет запрос к серверу DHCP для получения IP адреса. Получив запрос, DHCP сообщает сетевой плате IP адрес, маску сети, адрес TFTP сервера и имя загрузочного файла. После обработке полученных данных PXE обращается к серверу TFTP и загружает файл. Получив файл, PXE прекращает свою работу и передает управление загруженной программе.

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

Создадим каталог для сетевой установки C:\PXE. Внутри создадим каталог, например WinPE.
Сетевая загрузка WinPE делится на два этапа. На первом этапе происходит загрузка файлов по протоколу TFTP. А на втором этапе файлы загружаются по протоколу CIFS (старое название SMB). Протокол CIFS более известен, как общий доступ к файлам и принтерам сети.
Поэтому для второго этапа загрузки нужно:

  • Сделать каталог C:\PXE доступным по сети (расшарить) для группы "Everyone (Все)" с правами только чтения.
  • Также необходимо убедиться, что учетная запись "Guest (Гость)" активирована.

Для этого нажимаем, правую клавишу мыши на "My Computer (Мой компьютер)" и выбираем "Manage (Управление)". Раскрываем "System Tools (Служебные программы)", "Local Users and Groups (Локальные пользователи и группы)". Выбираем "Users (Пользователи)". В правой части экрана нажимаем правую клавишу мыши на "Guest (Гость)" и выбираем "Properties (Свойства)". В появившемся окне убираем флажок с "Account is disabled (Отключить учетную запись)" и нажимаем кнопку OK

  • Если директория C:\PXE\WinPE находится на разделе с файловой системой NTFS, то необходимо в свойствах этого каталога в "Security (Безопасность)" также добавить группу "Everyone (Все)". Этой группе необходимо разрешить чтение.
  • Также следует убедиться, что не запрещен доступ пользователя "Guest (Гость)" по сети в групповой политике.

Для этого нажимаем "Start (Пуск)", выбираем "Control Panel (Панель управление)", "Administrative Tools (Администрирование)". В появившемся окне выбираем "Local Security Policy (Локальная политика безопасности)". После загрузки оснастки "Local Security Settings (Локальные параметры безопасности)", разворачиваем "Local Policies (Локальные политики)" и выбираем "User Rights Assignments (Назначение прав пользователя)". В правой части нажимаем дважды левую клавишу мыши на "Deny access to this computer from the network (Отказ в доступе к компьютеру по сети)". В появившемся списке отмечаем "Guest (Гость)" и нажимаем кнопку "Remove (Удалить)". Для подтверждения изменений нажимаем кнопку удалить.

Подготовка сборки WinPE для загрузки по сети

Копируем содержимое сборки(каталоги I386 и Programs) в каталог C:\PXE\WinPE
Копируем из каталога C:\PXE\WinPE\I386 файл ntdetect.com в каталог C:\PXE
Разархивируем файлы (из дистрибутива Windows XP/Windows 2003) setupldr.ex_ и startrom.n1_ в каталог C:\PXE. Сделать это можно с помощью архиватора 7-zip или команд:
expand D:\WINXP\I386\setupldr.ex_ С:\PXE\WinPE\ntldr
expand D:\WINXP\I386\startrom.n1_ С:\PXE\WinPE\startrom.n12
Следует переименовать startrom.n12 в startrom.0
При работе с локализированной сборкой рекомендуется копировать файл bootfont.bin из каталога C:\PXE\WinPE в C:\PXE.
Распаковываем каталоги tftpd32, infparser и файл binlsrv.exe в C:\PXE

Настройка TFTP сервера (TFTPD32)

Сначала для удобства следует отключить не нужные сервисы, оставив только "TFTP Server" и "DHCP Server". Затем следует указать каталог, в котором TFTP сервер будет искать файлы. За это отвечает параметр "Base Directory". В нашем случае это C:\PXE. Также следует включить "Option negotiation", "Allow "\" As virtual root" и "Translate Unix file names". Остальные опции выключены.

Настройке DHCP сервера (TFTPD32)

Для загрузки по сети DHCP должен присвоить IP адрес и указать имя загружаемого файла.
Предположим на компьютере, который выступает в роли PXE сервера, присвоен IP адрес 192.168.0.1 с маской сети 255.255.255.0. Параметр "IP Pool starting address" указывает начальный IP адрес, с которого DHCP будет начинаться выдавать адреса. Установим значение в 192.168.0.10. Параметр "Size of pool" указывает, сколько компьютеров могут получить IP адреса от TFTPD32. Установим значение в 10. Параметр "Boot File" указывает, какой файл необходимо загрузить. В нашем случае это startrom.0. Если на компьютере несколько сетевых подключений, тогда рекомендуется включить опцию "Bind DHCP to this address" и указать наш IP 192.168.0.1.

Настройка программы RIS-LINUX от Sherpya

Во время загрузки WinPE должна получить информацию, какой драйвер для сетевой платы она должна использовать. Эту информация предоставляет служба BINL. В качестве службы BINL будет использоватся программа ris-linux. Эта программа написана на языке Python, но мы будем использовать портированную под Windows версию.
Для работы BINL требуется создать базу данных сетевых драйверов следующей командой:
C:\PXE\infparser\infparser.exe C:\PXE\WinPE\I386\inf

Подготовка файла winnt.sif

Для загрузки WinPE также потребуется файл C:\PXE\winnt.sif такого содержимого:


OsLoadOptions = "/noguiboot /fastdetect /minint"
SetupSourceDevice = "\Device\LanmanRedirector\192.168.0.1\PXE\WinPE"
ComputerName = *

Завершение

Чтобы наконец заработал наш PXE сервер, достаточно запустить binlsrv.exe и перезапустить tftpd32.

В ходе написание статьи были использованы материалы с сайта http://unattendedxp.com/ , а также собственные наработки. Вроде ничего не забыл. Сильно не пинайте.

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

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

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

Начнем с Windows

WARNING

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

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


После установки пакета 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% с подключением к домену, и дальше все необходимое программное обеспечение можно уже доставить групповыми политиками домена (но это уже совсем другая история).

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

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.

Продолжение доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

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