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, если все сделали правильно то появится меню с выбором загружаемого образа.
Не вышел каменный цветок, в htop видно что все сервисы работают, но клиент не хочет по dhcp ничего получать. Вероятно что-то не так делаю, в сети уже есть роутер который раздаёт dhcp на адресе 192.168.1.1, в первую строку прописывал и его, и уже данный роутером ip для сервера. А так хотелось собрать PXE именно на FreeBSD
sockstat -4l | grep 67 собственно вот, грепалка ничего не выводит по 67 порту
Разобрался с конфигом dnsmasq и пришлось выключить dhcp в роутере, теперь работает. Но dhcp в роутере нужен. Хотелось бы чтоб автор чутка подсобил в настройке.
DHCP должен отдавать dnsmasq иначе ваши конечные устройства никак не узнают о существовании PXE и не пойдут за ним на тачку с freebsd. Либо ищите как указать вот это в вашем роутере