Загрузка ERD Commander по сети

Стандарт PXE и общие принципы загрузки по сети.




    Стандарт 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 предполагается использоваться с автоматическим запуском без входа пользователя в систему.

На странице загрузки имеются ссылки для скачивания аналогичных продуктов для 64-разрядных версий Windows (tftpd64. . . )





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




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

- ERD Commander 5.0
- Victoria For DOS v 3.52

Довольно подробно об использовании универсального загрузчика grub я уже рассказывал в статье Создание загрузочной USB флешки ERD Commander . В качестве одного из примеров, в статье рассматривался вариант создания мультизагрузочной флешки, позволяющей выполнить загрузку нескольких версий 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 на экран будет выведено основное окно программы:

TFTPD32 основное окно программы

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

TFTPD32 основное окно программы

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



TFTPD32 - конфигурирование TFTP сервера

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

TFTPD32 - конфигурирование TFTP сервера

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 , и т.п.)

Установка приоритетов устройств загрузки в BIOS

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

Приглашение загрузчика 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 я собрал в архив Скачать 80Мб. Список содержащихся в нем файлов:

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 и примеры дополнительных пунктов в загрузочном меню можно найти в упомянутой выше статье Создание загрузочной USB флешки ERD Commander







В начало страницы     |     На главную страницу сайта.


Рейтинг@Mail.ru