Rose debug info
---------------

PXE сервер на FreeBSD

В конфиг dnsmasq добавляем

dhcp-option-force=66,192.168.0.1   # ip сервера
dhcp-option-force=67,gpxelinux.0   # загрузчик

Перезапускаем dnsmasq

service dnsmasq restart

Создаем каталог для pxe

mkdir /usr/local/pxe
mkdir /usr/local/pxe/pxelinux.cfg

Устанавливаем tftp

pkg install tftp-hpa

В /etc/inetd.conf добавляем

tftp  dgram  udp  wait  root  /usr/local/libexec/in.tftpd  in.tftpd -p -s /usr/local/pxe

Вписываем

echo 'inetd_enable="YES"' >> /etc/rc.conf

Запускаем inetd

/etc/rc.d/inetd start

Скачиваем и распаковываем syslinux

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

Копируем файлы

cd syslinux-4.05
cp gpxe/gpxelinux.0 /usr/local/pxe/
cp com32/menu/menu.c32 /usr/local/pxe/
cp com32/menu/vesamenu.c32 /usr/local/pxe/
cp com32/modules/reboot.c32 /usr/local/pxe/
cp com32/modules/chain.c32 /usr/local/pxe/
cp memdisk/memdisk /usr/local/pxe/

Образы будем грузить по http, т.к tftp очень медленный. Ставим nginx.

pkg install nginx

Создаем каталог с образами и симлинк на него в nginx

mkdir  /usr/local/pxe/images/
ln -s /usr/local/pxe/images/ /usr/local/www/nginx/images

Вписываем

echo 'nginx_enable="YES"' >> /etc/rc.conf

И стартуем

service nginx start

Заливаем наши образы в /usr/local/pxe/images/

В файле /usr/local/pxe/pxelinux.cfg/default создаем конфиг меню с нашими образами. У меня получился такой

ui menu.c32
menu title PXE Boot Menu

label boothdd
  menu label Boot from Hard Drive
  localboot 0
 
label memtest
  menu label memtest
  kernel memdisk
  initrd http://192.168.0.1/images/Memtest86-4.3.7.iso
  append iso raw

label mfsbsd
  menu label mfsbsd
  kernel memdisk
  initrd http://192.168.0.1/images/mfsbsd-12.0-RELEASE-amd64.iso
  append iso raw

label debian-10
  menu label debian-10
  kernel http://192.168.0.1/images/debian10/linux
  append vga=normal initrd=http://192.168.0.1/images/debian10/initrd.gz  --

label rescue
  menu label rescue
  kernel http://192.168.0.1/images/debian10/linux
  append vga=normal initrd=http://192.168.0.1/images/debian10/initrd.gz  rescue/enable=true --

linux и initrd.gz для установщика debian можно взять тут
Теперь можно пробовать грузится с PXE, если все сделали правильно то появится меню с выбором загружаемого образа.

Поделиться
Отправить
2019   Freebsd   pxe   tftp
3 комментария
Сергей Гайдук 2023

Не вышел каменный цветок, в htop видно что все сервисы работают, но клиент не хочет по dhcp ничего получать. Вероятно что-то не так делаю, в сети уже есть роутер который раздаёт dhcp на адресе 192.168.1.1, в первую строку прописывал и его, и уже данный роутером ip для сервера. А так хотелось собрать PXE именно на FreeBSD

Сергей Гайдук 2023

sockstat -4l | grep 67 собственно вот, грепалка ничего не выводит по 67 порту

Сергей Гайдук 2023

Разобрался с конфигом dnsmasq и пришлось выключить dhcp в роутере, теперь работает. Но dhcp в роутере нужен. Хотелось бы чтоб автор чутка подсобил в настройке.

Петр Аникин 2023

DHCP должен отдавать dnsmasq иначе ваши конечные устройства никак не узнают о существовании PXE и не пойдут за ним на тачку с freebsd. Либо ищите как указать вот это в вашем роутере

dhcp-option-force=66,192.168.0.1   # ip сервера
dhcp-option-force=67,gpxelinux.0   # загрузчик