# portinstall isc-dhcp3-server (из опций указывем только WITH_DHCP_PARANOIA)
В /etc/rc.conf добавляем:
# for PXE dhcpd_enable="YES" dhcpd_ifaces="em0" dhcpd_chroot_enable="YES"
В /usr/local/etc/dhcpd.conf пишем
option domain-name “example.ru”; option domain-name-servers 192.168.1.2, 192.168.1.3; authoritative; ddns-update-style none; log-facility local4; subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.1; use-host-decl-names on; option subnet-mask 255.255.255.0; range dynamic-bootp 192.168.1.100 192.168.1.200; # адрес сервера на котором работает инсталлятор next-server 192.168.1.5; filename "pxeboot"; option root-path "192.168.1.5:/spool/pxe"; }
В /etc/syslog.conf добавляем
local4.* /var/log/dhcpd.log
В /etc/newsyslog.conf
/var/log/dhcpd.log 644 3 900 * JC
/etc/rc.d/syslogd reload
mdconfig -a -f /path/to/dist.iso mount_cd9660 /dev/md0 /mnt/cdrom/ cp -r /mnt/cdrom/ /spool/pxe
mkdir /var/tftproot cp /spool/pxe/boot/pxeboot /var/tftpboot chown nobody /var/tftpboot chmod 640 /var/tftpboot
В /etc/hosts.allow пишем
# tftp server for remote install tftpd: 192.168.1.0/255.255.255.0 : allow tftpd: ALL : deny
В /etc/inetd.conf пишем
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /var/tftpboot -u nobody
/etc/rc.d/inetd reload
В /etc/exports пишем
/spool/pxe -ro -network=192.168.1.0 -mask=255.255.255.0
В /etc/rc.conf
nfs_server_enable="YES" rpcbind_enable="YES"
И запускаем все это
rpcbind nfsd -u -t -n 4 mountd -r
# showmount -e Exports list on localhost: /spool/pxe 192.168.1.0
Примерно так:
# cat > /spool/pxe/boot/loader.conf mfsroot_load="YES" mfsroot_type="mfs_root" mfsroot_name="/boot/mfsroot" autoboot_delay="5" vfs.root.mountfrom="ufs:/dev/md0c"
Ключевым моментом является наличие последней строчки.
В принципе после всего этого можно уже ставить систему.
Для того, чтобы не отвечать вручную на все вопросы sysinstall это можно автоматизировать составив файл install.cfg
Файл install.cfg должен находиться внутри mfsroot.gz, скопировать его туда можно так:
cd /spool/pxe gzip -d boot/mfsroot.gz mdconfig -a -t vnode -f boot/mfsroot -u 9 mount /dev/md9 /mnt/tmp cp install.cfg /mnt/tmp umount /mnt/tmp mdconfig -d -u 9 gzip boot/mfsroot
(этот набор команд лучше оформить в виде Makefile)
Пример install.cfg
Чтобы при установке ставилися набор пакетов их нужно создать:
cd /spool/pxe/packages/All/ pkg_crete -b bash-3.1.10 pkg_crete -b sudo-1.6.8.12_1 pkg_crete -b smartmontools-5.33_5
И прописать из в INDEX, например таким скриптом:
#!/bin/sh dir=/spool/pxe/packages cd $dir/All rm $dir/INDEX for file in *; do echo ${file%.tgz} egrep ^${file%.tgz} /usr/ports/INDEX-6 >> $dir/INDEX done