MAC based Booting PXE
Jump to navigation
Jump to search
MAC Based booting
Installing with PXE and FAI MAC Address based.
With this hooks and some small changes in dhcpd.conf (based on FAI-CD) every computer that boots fai become a MAC based config file in the pxelinux.cfg/ dir. May be in the future a GUI can use/change this information.
File dhcpd.conf
.... # deny unknown-clients .... subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.200 192.168.1.249; ....
If you press <shift> key during pxe booting you can get a prompt.
Possible commands are:
mkboot HOST=local mkboot HOST=remove ..... mkboot HOST=demohost .....
Hook mkboot
#! /bin/bash # hook mkboot for fai. # If you start this script on a fai client it copy, create or delete a pxe bootfile. It use the ethernet mac # address of the fai client. cd /tmp TFTPCONFDIR="/boot/fai/pxelinux.cfg" SSHUSER=fai TFTPSERVER=faiserver HOSTNAME="default" if [ "$HOST" != "" ]; then HOSTNAME=$HOST; fi ; BOOTMAC=`/sbin/ifconfig "$netdevices_up" |grep HWaddr|cut -d " " -f11|tr ':' '-'|tr '[:upper:]' '[:lower:]'` BOOTMAC="01-"$BOOTMAC echo Next Boot will boot or install: $HOSTNAME on $BOOTMAC. echo "!!! OK - Press ctrl-c to interrupt FAI and to get a shell" case $HOSTNAME in disable) ssh $SSHUSER@$TFTPSERVER "mv $TFTPCONFDIR/$BOOTMAC $TFTPCONFDIR/$BOOTMAC\.disable" ;; local) ssh $SSHUSER@$TFTPSERVER "mv $TFTPCONFDIR/$BOOTMAC $TFTPCONFDIR/$BOOTMAC\.disable ; cp $TFTPCONFDIR/local $TFTPCONFDIR/$BOOTMAC " ;; enable) ssh $SSHUSER@$TFTPSERVER "mv $TFTPCONFDIR/$BOOTMAC\.disable $TFTPCONFDIR/$BOOTMAC" ;; remove) ssh $SSHUSER@$TFTPSERVER "rm $TFTPCONFDIR/$BOOTMAC" ;; *) ssh $SSHUSER@$TFTPSERVER "cp $TFTPCONFDIR/$HOSTNAME $TFTPCONFDIR/$BOOTMAC" ;; esac task_faiend # End of mkboot
Hook chboot.default
#! /bin/sh # hook for fai. Set boot to local set -xv SCRIPTNAME=`basename $0` skiptask=`echo $SCRIPTNAME | sed "s/\..*$//"` cd /tmp TFTPCONFDIR="/boot/fai/pxelinux.cfg" SSHUSER=fai TFTPSERVER=faiserver HOSTNAME="local" BOOTMAC=`/sbin/ifconfig "$netdevices_up" |grep HWaddr|cut -d " " -f11|tr ':' '-'|tr '[:upper:]' '[:lower:]'` BOOTMAC="01-"$BOOTMAC echo Next Boot will boot or install: $HOSTNAME on $BOOTMAC. case $HOSTNAME in local) ssh $SSHUSER@$TFTPSERVER "mv $TFTPCONFDIR/$BOOTMAC $TFTPCONFDIR/$BOOTMAC\.disable ; cp $TFTPCONFDIR/local $TFTPCONFDIR/$BOOTMAC " ;; *) ssh $SSHUSER@$TFTPSERVER "cp $TFTPCONFDIR/$HOSTNAME $TFTPCONFDIR/$BOOTMAC" ;; esac skiptask $skiptask # End of hook chboot.DEFAULT
File: /boot/fai/pxelinux.cfg/default
default sysinfo label sysinfo kernel vmlinuz-install append ip=dhcp devfs=nomount FAI_ACTION=mkboot HOST=sysinfo root=/dev/nfs nfsroot=/usr/lib/fai/nfsroot,v2,rsize=32768,wsize=32768 FAI_FLAGS=verbose,sshd,createvt,reboot label mkboot kernel vmlinuz-install append ip=dhcp devfs=nomount FAI_ACTION=mkboot root=/dev/nfs nfsroot=/usr/lib/fai/nfsroot,v2,rsize=32768,wsize=32768 FAI_FLAGS=verbose,sshd,createvt,reboot
File: /boot/fai/pxelinux.cfg/local
default local label local localboot 0 label mkboot kernel vmlinuz-install append ip=dhcp devfs=nomount FAI_ACTION=mkboot root=/dev/nfs nfsroot=/usr/lib/fai/nfsroot,v2,rsize=32768,wsize=32768 FAI_FLAGS=verbose,sshd,createvt,reboot
File: /boot/fai/pxelinux.cfg/demohost
default demohost label demohost kernel vmlinuz-install append ip=dhcp devfs=nomount FAI_ACTION=install HOST=demohost root=/dev/nfs nfsroot=/usr/lib/fai/nfsroot,v2,rsize=32768,wsize=32768 FAI_FLAGS=verbose,sshd,createvt label mkboot kernel vmlinuz-install append ip=dhcp devfs=nomount FAI_ACTION=mkboot root=/dev/nfs nfsroot=/usr/lib/fai/nfsroot,v2,rsize=32768,wsize=32768 FAI_FLAGS=verbose,sshd,createvt,reboot
File: /boot/fai/pxelinux.cfg/sysinfo
default sysinfo label sysinfo kernel vmlinuz-install append ip=dhcp devfs=nomount FAI_ACTION=sysinfo root=/dev/nfs nfsroot=/usr/lib/fai/nfsroot,v2,rsize=32768,wsize=32768 FAI_FLAGS=verbose,sshd,createvt label mkboot kernel vmlinuz-install append ip=dhcp devfs=nomount FAI_ACTION=mkboot root=/dev/nfs nfsroot=/usr/lib/fai/nfsroot,v2,rsize=32768,wsize=32768 FAI_FLAGS=verbose,sshd,createvt,reboot