Практика
Итак, сегодня наша задача - поднять сервер сетевой загрузки PXE на базе FreeBSD. Для чего:
На самом деле данная статья описывает только 1й и 2й пункты. Установку Windows 7 и других ОС через PXE - я напишу чуточку позже (ибо это по объему еще столько же).
Использовать для PXE-сервера мы будем пакет syslinux, в купе с местным же DHCP.
Следует сделать вставку нотиса (поди ж кто-то не знает). Машина, которая хочет загрузиться по PXE (т.е. через сеть) получает сетевые реквизиты через DHCP. Это означает как минимум то, что сервер DHCP должен находиться в той же сети, что и загружающийся компьютер - т.е. ДО первого роутера.
1) Первое: нам необходим DHCP сервер для того, чтобы клиенты смогли получить реквизиты. Как такой сервер поднять на FreeBSD - вот ссылка.
После того, как сервер мы поднимем - нужно в его конфиге добавить следующие строчки (в описании зоны):
где вместо 192.168.0.1 - укажите IP-адрес сервера PXE.
А также изменить вид объявления диапазона:
т.е. добавить опцию "dynamic-bootp".
получим что-то вроде этого (это только пример):
И, наконец, перезапускаем сервер DHCP:
2) Устанавливаем TFTP сервер.
Для работы PXE сервера понадобится TFTP. Причем не важно - будете ли Вы в дальнейшем раздавать файлы через HTTP (что быстрее в разы), или так-же через TFTP (что проще) - все равно оно нам надо.
Использовать будем tftp-hpa, т.к. в будущем Вам может понадобиться применять правила замен, чего штатный демон не умеет.
Теперь создаем директорию для PXE сервера.
Последняя директория (да-да, я не ошибся - это не файл) - это папка для файлов конфигурации syslinux. Директории перед последней - созданы для удобства - чтобы разнести файлы утилит, образов LiveCD и установочных образов, дабы не было свалено оно в одну кучу.
Далее, открываем файл /etc/inetd.conf и приводим строчку tftp к такому виду:
И перезапускаем inetd:
Логи сервера можно глядеть в /etc/xferlog
3) Устанавливаем syslinux.
Не спешите бежать в порты - да, syslinux есть в портах, но оно нам оттуда не надо! Cкачиваем его отдельно по пути: ссылка
Распаковываем и копируем нужные файлы:
4) Данный пункт не обязателен, но очень желателен. Дело в том, что передача больших файлов через TFTP - дело долгое. Зато syslinux умеет использовать HTTP протокол для того же самого - что намного быстрее.
Таким образом мы организуем такую схему:
Поэтому поднимаем HTTP-сервер (если у Вас еще не поднят он). Описание установки оного я здесь не буду. Пример установки Apache 2.2 - можно почитать здесь.
После установки Apache - добавляем в его файл конфигурации следующую запись:
где вместо 192.168.0.0/16 - указывайте свою рабочую подсеть или набор подсетей.
Теперь делаем симлинк на нашу директорию PXE в рабочую директорию сервера Apache:
и перезапускаем Apache:
Если же Вы используете не Apache - то, соответственно, настраивайте сервер подобным образом.
5) Создаем файл конфигурации для syslinux. Создадим мы его на примере использования LiveCD от MfsBSD. Это практически самое простое, что можно сделать.
5а) Скачиваем MfsBSD ISO и ложим в нужное место.
Обратите внимание - ссылка может быть другой - проект MfsBSD не стоит на месте. Лучше посетить их сайт (ссылка) и скачать последний образ для нужной архитектуры (я рекомендую x86, как универсальную).
5б) Теперь создаем файл конфигурации syslinux.
/usr/local/pxe/pxelinux.cfg/default:
Здесь мы задали:
Сохраняем файл.
PS. Если HTTP сервер Вы решили таки не использовать - то файл будет выглядеть вот так:
6) Теперь попробуйте загрузить машинку через PXE. Если Вы все делали правильно - она загрузится.
7) Далее меню PXE можно расширять. Ниже я приведу пример своего чернового конфига.
Т.к. syslinux позволяет создавать подменю - мой пример конфига содержит несколько файлов.
default:
utils.menu:
livecd.menu:
os.menu:
Как видно - файлы конфигурации содержат в себе самые разнообразные виды запуска утилит. Например, если мы хотим просто загрузить в память машины некий ISO и считать его, как будто это компакт-диск, вставленный в привод - то используем ядро memdisk (кстати, не надо пробовать подсунуть ему ISO размером в пару гигов - это не вариант, поверьте).
Сами файлики я выкладывать не буду (по крайней мере пока) - рекомендую расковырять такие диски, как Hiren, Infra и т.п. - на них есть некоторое количество утилит, которые подходят для нас (да те же MemTest и MHDD). Открыв эти диски можно так-же найти примерно - как оно должно запускаться.
LiveCD образы Windows я брал готовыми ISO - и работает. То же самое касается и LiveCD FreeBSD. Linux для LiveCD нужно подбирать - чтобы заработал - запускается не все.
PS. В следующих статьях я расскажу - как разворачивать через сеть Windows 7 и Linux. На самом деле не так оно все очевидно и просто - мне пришлось собирать установку Windows 7 через PXE syslinux, буквально говоря, из ТРЕХ разных статей на разных языках с разных ресурсов.
Актуально для: FreeBSD 8.x+
Комментарии
Оставить комментарий
Компьютерные сети
Термины: Компьютерные сети