Загрузка сетевого обозревателя (PXE boot) через локальную сеть
Добавлено: 27 мар 2024, 16:31
Если делаешь только то, что умеешь, то никогда не сможешь превзойти самого себя
https://de.hardprivate.com/
Код: Выделить всё
# ... другие настройки DHCP ...
# Интерфейс, на котором нужно раздавать адреса DHCP и PXE
interface eth0 {
option routers 192.168.1.1;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
# Определяем опции для PXE
option bootfile-name "pxelinux.0";
option root-path "/tftpboot/"; # Путь к директории TFTP
filename "pxelinux.0";
# Важно: указываем опцию для PXE boot server
option tftp-server-name "192.168.1.1"; # IP-адрес вашего TFTP-сервера
# Обязательно укажите хост-имя, которое будет использовать PXE
host example {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.100;
}
# ... другие хосты ...
# Поддержка PXE
next-server 192.168.1.1; # IP-адрес вашего TFTP-сервера
filename "pxelinux.0"; # Путь к загрузчику PXE на TFTP-сервере
}
}Код: Выделить всё
service isc-dhcp-server statusКод: Выделить всё
ps aux | grep dhcpdКод: Выделить всё
default menu.c32
timeout 30
prompt 0
label menu
menu "PXE Menu"
kernel /vmlinuz-image-name args="root=/dev/sda1 ro"
initrd /initrd-image-name
boot
title Boot failed
returnКод: Выделить всё
pgrep -lf tftpdКод: Выделить всё
apt install grub-imagebootКод: Выделить всё
/var/lib/tftpboot/
├── pxelinux.0
├── menu.c32 (опционально, для меню)
├── ldlinux.c32 (опционально)
├── configs/
│ └── default
└── images/ (если нужны образы или ISO)Код: Выделить всё
apt install genisoimageКод: Выделить всё
# Пример использования mkisofs (Linux)
mkisofs -o boot.iso -b pxelinux.0 -no-emul-boot -boot-load-size 4096 -record-errors -v boot/Код: Выделить всё
apt-get install isolinux syslinux-common syslinux syslinux-utils xorriso nfs-kernel-serverКод: Выделить всё
# Экспортируем директорию для Alpine
/os/alpine-standard-3.22.1-x86_64 *(rw,sync,no_subtree_check)
# Экспортируем директорию для Devuan
/os/devuan_daedalus_5.0.1_amd64_netinstall *(rw,sync,no_subtree_check)Код: Выделить всё
sudo exportfs -raКод: Выделить всё
exportfs -rКод: Выделить всё
sudo systemctl restart nfs-kernel-serverКод: Выделить всё
sudo exportfs -vКод: Выделить всё
# Убедитесь, что каталог принадлежит подходящему пользователю и группе:
sudo chown -R nfsuser:nfsgroup /srv/tftp/os/alpine-standard-3.22.1-x86_64
# Установите права доступа:
sudo chmod -R 755 /srv/tftp/os/alpine-standard-3.22.1-x86_64Код: Выделить всё
chown -R nobody:nogroup /srv/tftp/os/alpine-standard-3.22.1-x86_64Код: Выделить всё
/usr/lib/ISOLINUX/isolinux.bin
/usr/lib/ISOLINUX/boot.catКод: Выделить всё
/usr/share/syslinux/isolinux.bin
/usr/share/syslinux/boot.cat
Код: Выделить всё
genisoimage -o output.iso -b /boot/isolinux/isolinux.bin -c /boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -V "CustomISO" .Код: Выделить всё
xorriso -as mkisofs -o output.iso -b /boot/isolinux/isolinux.bin -c /boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .Код: Выделить всё
isohybrid filename-hybrid.isoКод: Выделить всё
sudo systemctl enable nfs-kernel-server
sudo systemctl start nfs-kernel-server
Код: Выделить всё
systemctl status rpcbind
systemctl status nfs-kernel-server
Код: Выделить всё
sudo ss -ltnp | grep rpcbind
sudo ss -ltnp | grep nfsКод: Выделить всё
rpcinfo -pКод: Выделить всё
/usr/sbin/rpc.mountdКод: Выделить всё
showmount -e localhost