PXE загрузка компьютеров с использованием DHCP CISCO
Когда в организации степень лени администратора не позволяет записывать CD или USB для загрузки компьютеров, то на помощь приходит загрузка операционной системы по сети. На самом деле, тут вопрос не лени, а оптимизации рабочего процесса. С использовнием PXE можно загружать тонкие клиенты, установочные диски, реанимационные и тестовые пакеты. О том, как это работает можно ознакомиться в различной литературе. Так же хочу заметить, что в организациях у которых сеть развёрнута на Актив директори или в качестве шлюза используются Линуксы или FreeBSD, то у них уже есть DHCP на основе которого можно поднять точно такую же систему. Я хочу затронуть тему развёртывания PXE в небольшой сети в которой стоит один роутер Cisco и нет возможности развернуть DHCP на Windows, Linux, FreeBSD или иной экзотической системы.
Для реализации PXE нам понадобится TFTP-сервер и роутер Cisco. TFTP-сервер можно поднять на любом компьютере с установленной операционной системой Windows, Linux или FreeBSD. Например, TFTP-сервер можно поднять на любом Windows с запущенной программой Tftpd64.
Запуск TFTP-сервера
Скачиваем программу Tftpd64 себе на компьютер. Устанавливаем сервер себе на компьютер, далее устанавливаем настройки как на картинках.
Tftpd64 Настройки GLOBAL
Tftpd64 Настройки TFTP
Можно настроить имеющийся TFTP-сервер в серверных версиях Windows, но он там сильно «обрезанный». Плюс придётся совершить пару шаманских действий для запуска.
Настройка DHCP на CISCO
С этой стороны всё обстоит довольно интересно. Для того, чтобы вся система заработала необходимо настроить BOOTP, точнее DHCP, который будет объяснять компьютерам о необходимости загрузиться с TFTP-сервера.
Вот тут начинается самое интересное. Почитав мануалы и различные инструкции всё выглядело очень просто. Необходимо прописать две строчки и всё должно заработать. И действительно, в DHCP на Windows данная процедура выглядит аналогично. Но, в моём случае, подобная настройка ни к чему не привела. Вот так выглядит настройка рекомендуемая подавляющим большинством сайтов и на форумах:
ip dhcp pool LAN ... option 66 ip 192.168.30.3 option 67 ascii "pxelinux.0" ...
Может быть проблема была в том, что на моеём роутере Cisco ISR 2821 установлен IOS 15, но как бы я не модифицировал данные опции у меня ничего не хотело работать. Углубившись в техническую документацию я нашел, что Cisco может передавать данные совместимые с BOOTP, а на форумах посвященных настройке FreeBSD узнал, какие параметры можно передать в DHCP совместимые с BOOTP. В результате, дополнительные строчки, необходимые для загрузки PXE превратились вот в такой вариант.
ip dhcp pool LAN ... bootfile pxelinux.0 next-server 192.168.30.3 ...
Данные записи полностью удовлетворили имеющиеся компьютеры. Загрузились компьютеры с сетевыми карточками: D-Link, Intel, Broadcom и виртуальной сетевой карточкой VMWare. Как было указано в инструкция по DHCP/BOOTP на FreeBSD по умолчанию в качестве адреса TFTP-сервера передаётся адрес шлюза. А вот параметр next-server передаёт информацию о следующем TFTP-сервере в сети. На мой взгляд, совершенно не логичное описание параметра, содержащего адрес TFTP-сервера.
С настроками софта работающего на серверных площадках разобрались. Осталось разобраться, что записать на TFTP-сервер и, что будет отдано PXE-клиенту.
Файлы необходимые для работы PXE клиента
Теперь мы добрались до самого интересного. Теоретически, через PXE можно отправить всё, что угодно. Но у меня стояла задача следующего плана:
- Загрузка образов установки Windows,
- загрузка образов установки Linux,
- загрузка образа memtest86+,
- загрузка образа антивируса,
- загрузка образа WinPE (LiveCD).
Для полноценной системы развёртывания и подготовки образов операционных систем я рекомендую использовать WDS, а для небольших компаний подойдёт описываемый мной метод. Так как он не заставляет приобретать Windows Server, под которым запускается служба WDS.
Я решил использовать образ системы Syslinux. Последний образ можно скачать с сервера: www.kernel.org. Из образа необходимо всего несколько файлов:
- chain.c32
- ldlinux.c32
- libcom32.c32
- libutil.c32
- memdisk
- pxechn.c32
- pxelinux.0
- vesamenu.c32
Так же необходимо создать два каталога. Один каталог называется pxelinux.cfg в котором будет расположен файл default с настройками и меню. Второй каталог можно обозвать как угодно, например, ISO и записать в него необходимые для загрузки образы.
Для работоспособности данной системы надо настроить меню. Дабы не описывать всю систему меню я просто покажу как оно оформлено у меня.
Я использую небольшие красивости, то есть графический режим монитора. Для реализации графики я подключаю модуль vesamenu.c32 и файл настроек меню. В качестве подложки используется картинка из файла background.png, расположенного в корне TFTP-сервера. Далее никаких дополнительных вопросов возникать не должно. Я использую загрузку ISO-образов в память и передаю им управление. Дальше всё зависит от компьютера и образа.
Содержимое файла default:
DEFAULT vesamenu.c32 PROMPT 0 timeout 80 TOTALTIMEOUT 9000 MENU TITLE ORCINUS ORCA PXE Boot MENU INCLUDE pxelinux.cfg/graphics.conf MENU AUTOBOOT Starting Local System in 8 seconds LABEL bootlocal menu label Boot Local menu default localboot 0x80 label windows menu label Setup Windows kernel memdisk append iso raw initrd=isowindows.iso label linux menu label Setup Linux kernel memdisk append iso raw initrd=iso\linux.iso label memtest menu label Memtest86+ kernel memdisk append iso raw initrd=iso\memtest86.iso label drweb menu label Antivirus DrWeb kernel memdisk append iso raw initrd=iso\drweb.iso label winpe menu label Windows LiveCD kernel memdisk append iso raw initrd=iso\live.iso
Содержимое файла graphics.conf:
MENU MARGIN 10 MENU ROWS 16 MENU TABMSGROW 21 MENU TIMEOUTROW 26 MENU COLOR BORDER 30;44 #00000000 #00000000 none MENU COLOR SCROLLBAR 30;44 #00000000 #00000000 none MENU COLOR TITLE 0 #ffffffff #00000000 none MENU COLOR SEL 30;47 #40000000 #20ffffff MENU BACKGROUND background.png NOESCAPE 0 ALLOWOPTIONS 0
Можно делать вложенные меню. Но это в том случае, если необходимо делать большие списки загрузки. Но для небольшой конторы в больших списках нет необходимости.
Для ссылки на вложенное меню необходимо делать ссылку в виде следующего элемента меню:
label unixlist menu label UNIX setup list kernel vesamenu.c32 append pxelinux.cfg/unixlist.conf
В качестве примера можно предложить вот такое меню в файле pxelinux.cfg/unixlist.conf.
DEFAULT vesamenu.c32 PROMPT 0 MENU TITLE UNIX Setup list MENU INCLUDE pxelinux.cfg/graphics.conf label main menu menu label Return to main menu kernel vesamenu.c32 append pxelinux.cfg/default label ubuntu menu label Ubuntu kernel memdisk append iso raw initrd=iso\ubuntu.iso label slackware menu label Slackware kernel memdisk append iso raw initrd=iso\slackware.iso label freebsd menu label FreeBSD kernel memdisk append iso raw initrd=iso\freebsd.iso label debian menu label Debian kernel memdisk append iso raw initrd=iso\debian.iso
Итоги
Для большой компании лучше использовать специализированные инструменты для развёртывания операционных систем. Так же подобные системы могут использоваться для загрузки тонких клиентов. Хотя специализированные системы уже содержат в себе инструменты развёртывания тонких клиентов.
Для средних компаний вполне позволительно подобное не традиционное использование роутера, чтобы подсказать компьютерам о наличии системы сетевой загрузки ОС.
Для мелкой компании в подобной системе нет смысла. Разве, что для экспериментов.
Отредактировано:2022-09-16 06:26:42