Copy this script in your /etc/rc.d/rc.dhcpd file
########################################################################################
#!/bin/sh
#
# /etc/rc.d/rc.dhcpd
#
# Start/stop/restart the DHCP daemon.
#
# To make dhcpd start automatically at boot, make this
# file executable: chmod 755 /etc/rc.d/rc.dhcpd
#
#############################################
CONFIGFILE=”/etc/dhcpd.conf”
LEASEFILE=”/var/state/dhcp/dhcpd.leases”
INTERFACES=”eth0”
OPTIONS=”-q”
#############################################
dhcpd_start() {
if [ -x /usr/sbin/dhcpd -a -r $CONFIGFILE ]; then
echo “Starting DHCPD..”
/usr/sbin/dhcpd -cf $CONFIGFILE -lf $LEASEFILE $OPTIONS $INTERFACES
# /usr/sbin/dhcpd -q $INTERFACES
fi
}
dhcpd_stop() {
killall dhcpd
}
dhcpd_restart() {
dhcpd_stop
sleep 2
dhcpd_start
}
case “$1” in
‘start’)
dhcpd_start
;;
‘stop’)
echo “Stopping DHCPD..”
dhcpd_stop
;;
‘restart’)
dhcpd_restart
;;
*)
# Default is ‘start’, for backwards compatibility with previous
# Slackware versions. This may change to a .usage. error someday.
dhcpd_start
esac
########################################################################################
Copy this configuration to /etc/dhcpd.conf
# dhcpd.conf
#
# Configuration file for ISC dhcpd (see ‘man dhcpd.conf’)
#
allow booting;
allow bootp;
# Standard configuration directives…
default-lease-time 172800;
max-lease-time 604800;
subnet 10.10.10.0 netmask 255.255.255.0 {
range 10.10.10.2 10.10.10.254;
option subnet-mask 255.255.255.0;
option broadcast-address 10.10.10.255;
option domain-name “your.net.suffix”;
option domain-name-servers 10.2.127.228, 10.2.127.196;
option routers 10.10.10.1; #your gateway/router
}
# Group the PXE bootable hosts together
group {
# PXE-specific configuration directives…
next-server 10.10.10.100;
filename “pxelinux.0”;
# You need an entry like this for every host
# unless you’re using dynamic addresses
host moon {
hardware ethernet ff:14:4f:16:b1:4f;
fixed-address 10.10.10.150;
}
}
Set permissions and start the DHCPD
touch /var/state/dhcp/dhclient.leases
chmod 755 /etc/rc.d/rc.dhcpd
/etc/rc.d/rc.dhcpd start
Next download syslinux
wget https://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.02.tar.bz2
Extract the file contents
tar -jxvf syslinux-6.02.tar.bz2
cd syslinux-6.02
make all | tee mylog.txt
Edit your /etc/inet.conf and uncomment this line below.
tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot -r blksize
mkdir /tftpboot
cd /tftpboot
cp ${HOME}/syslinux-6.02/bios/core/pxelinux.0 .
cp ${HOME}/syslinux-6.02/bios/com32/elflink/ldlinux/ldlinux.c32 .
cp ${HOME}/syslinux-6.02/bios/com32/menu/menu.c32 .
cp ${HOME}/syslinux-6.02/bios/memdisk/memdisk .
mkdir /tftpboot/pxelinux.cfg
touch /tftpboot/pxelinux.cfg/default
Now you can customize your default file.Follow the example below
# Default boot option to use
DEFAULT menu.c32
# Prompt user for selection
PROMPT 0
# Menu Configuration
MENU WIDTH 80
MENU MARGIN 10
MENU PASSWORDMARGIN 3
MENU ROWS 12
MENU TABMSGROW 18
MENU CMDLINEROW 18
MENU ENDROW 24
MENU PASSWORDROW 11
MENU TIMEOUTROW 20
MENU TITLE Main Menu
# Menus
# x64
LABEL x64
MENU LABEL Redhat 64Bit (x64)
KERNEL menu.c32
LINUX memdisk
LINUX rh64/images/pxeboot/vmlinuz
APPEND initrd=rh64/images/pxeboot/initrd.img
# SWx64
LABEL swx64
MENU LABEL Slackware 64Bit (x64)
KERNEL menu.c32
LINUX memdisk
LINUX slaxx64/kernels/huge.s/bzImage
APPEND initrd=slaxx64/isolinux/initrd.img
# LiveXP
LABEL LiveXP
MENU LABEL LiveXP
LINUX memdisk
APPEND raw iso initrd=livexp.iso
Note: please don’t load live ISO files larger than your RAM
mount your ISO images in the /tftpboot/ directory. Follow the example below.
mount -t iso9660 /images/SLAXx64.iso /tftpboot/slaxx64/
Set permissions and start the RPC
chmod 755 /etc/rc.d/rc.rpc
/etc/rc.d/rc.rpc start
Finally setup the NFS server
edit /etc/export and add the example paths
/tftpboot/rh64 *(ro,nohide,no_subtree_check,sync)
/tftpboot/slaxx64 *(ro,nohide,no_subtree_check,sync)
Set permissions and start NFS
chmod 755 /etc/rc.d/rc.nfsd
/etc/rc.d/rc.nfsd start
On the client machine you can mount the NFS exports to install via NFS
mount servername:/slaxx64 /mnt/nfsexport