Загрузка PXE для разных платформ тонких клиентов
В больших организациях часто встречается зоопарк различных аппаратных платформ тонких клиентов. Даже у одного производителя система может базироваться и на VIA чипсете и на Geode и на NVidia, а собрать универсальный образ загрузки не всегда получается - либо очень большой, либо модули или пакеты несовместимы.
Короче рассмотрим варианты загрузки разных образов для разных машин, а вариантов этих я знаю пока четыре штуки:
- Правильный, и работающий на Windiws и Linux DHCP серверах - выбрать самый многочисленный класс одинаковых клиентов и отдать им дефолтную загрузку PXE, а остальные прописать по MAC-адресам в DHCP и назначить каждой опцию 67 равную папка/pxelinux.0 (filename "папка/pxelinux.0";), разместив эти файлы по разным папкам на TFTP сервере, в зависимости от железа или софта.
Но это затратное по времени мероприятие - собрать маки и забить их в DHCP. - Второй способ - через конфигурацию загрузки pxelinux.cfg, находящуюся на сервере TFTP.
При получении файла конфигурации от TFTP сервера клиент ищет подходящую для себя в следующем порядке:
pxelinux.cfg - сама папка с файлами конфигурации, 01-88-99-aa-bb-cc-dd - файл с названием МАС-адрес клиента, в нижнем регистре, разделенный тире, с префиксом 01-.
А дальше - это IP-адрес, который клиент получил, в шестнадцатеричном формате. Т.е. C0A800FE = 192.168.0.254. Получается, что для привязки машины к образу нам нужен MAC-адрес или IP клиента и файлы (содержание посмотреть в файле pxelinux.cfg/default, только в пути до vmlinuz и initrd дописать свою папку или переименовать их, например в vmlinuz-depo и initrd-depo и прописать в конфиг) с именем "01-мак-ад-рес" или с именем "IPклиента" переведённом в HEX формат (здесь онлайн) или в консоли linux: echo $(printf '%02X' 192 168 0 254), и находиться они должны в папке pxelinux.cfg. В общем телодвижений ещё больше, чем в первом варианте. - Третий способ - выбор образа загрузки через меню.
Делаем меню загрузки для разных конфигураций. Для начала нужно привести файл pxelinux.cfg/default примерно к следующему виду:
Если нужны ещё пункты - добавляем их по образу и подобию.
Сразу после загрузки клиента получим вот такое меню:
Для отображения меню по русски нам нужно сохранить файл в кодировке CP-866 и положить в папку файл шрифта font 866_8x16.psf. (архив в конце статьи)
А если немного настроить меню под себя - то можно получить вот такую красоту:
Недостаток такого метода в том, что придётся объяснить пользователям в какой пункт меню заходить, в зависимости от начинки клиента.
- И наконец самый лёгкий путь, к сожалению я не знаю как его реализовать в Windows сервере, это прописать условие в конфигурационном файле Linux сервера dhcpd.conf в описание subnet следующие настроики:
Здесь прописываются начальные, одинаковые для определённого производителя, значения MAC-адреса и если условие совпадает с началом мака клиента - то ему назначается определённый в условии файл начальной загрузки из соответствующей папки на TFTP сервера.
Важно отметить, что в «переменной» hardware для сетевых карт идет лидирующий блок: «01:», так что приходится его учитывать. Также важно, что, если часть MAC-адреса начинается с нуля, то он при переводе отбрасывается. Таким образом, MAC-адрес с началом «00:03:EF» преобразуется в «1:0:3:ef».
Ещё проще в dnsmasq
Выбор способа за Вами.
Обсудить на форуме (комментариев 3).