conf/68108: Adding mac-address /conf selector to diskless boot
Dirk-Willem van Gulik
dirkx at webweaving.org
Sat Jun 19 11:40:15 GMT 2004
>Number: 68108
>Category: conf
>Synopsis: Adding mac-address /conf selector to diskless boot
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Sat Jun 19 11:40:06 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator: Charlie &
>Release: FreeBSD 5.2.1-RELEASE i386
>Organization:
>Environment:
System: FreeBSD webweaving.org 5.2.1-RELEASE FreeBSD 5.2.1-RELEASE #2: Fri Mar 19 06:56:16 CET 2004 dirkx at webweaving.org:/usr/src/sys/i386/compile/GENERIC i386
Diskless machines, booting with pxeboot et.al.
under 5.2.1 and above.
>Description:
Right now during a diskless boot /conf/default, /conf/b-cast
and /conf/ip address is checked for system specific configs.
As some configs are very tied to HW, rather than to the subnet
the HW happens to be used with - it can be useful to tie certain
configs to the mac address.
The patch below add this facilities very much along the
lines of that supported by Solaris.
>How-To-Repeat:
Patch, reboot diskless machine.
>Fix:
*** /tmp/initdiskless Sat Jun 19 12:51:53 2004
--- initdiskless Sat Jun 19 12:55:53 2004
***************
*** 40,45 ****
--- 40,46 ----
#
# /conf/base universal base
# /conf/default modified by a secondary universal base
+ # /conf/${macaddress} modified by the mac address of the physical machine.
# /conf/${ipba} modified based on the assigned broadcast IP
# /conf/${ip} modified based on the machine's assigned IP
#
***************
*** 132,137 ****
--- 133,142 ----
bootp_ipbca=""
iflist=`ifconfig -l`
for i in ${iflist} ; do
+ set `ifconfig ${i} | grep ether | sed -e 's/://g'`
+ if [ "x$1" = "ether" ]; then
+ boot_mac=$2
+ fi
set `ifconfig ${i}`
while [ $# -ge 1 ] ; do
if [ "${bootp_ifc}" = "" -a "$1" = "inet" ] ; then
***************
*** 146,152 ****
break
fi
done
! echo "Interface ${bootp_ifc} IP-Address ${bootp_ipa} Broadcast ${bootp_ipbca}"
# Figure out our NFS root path
#
--- 151,157 ----
break
fi
done
! echo "Interface ${boot_mac} ${bootp_ifc} IP-Address ${bootp_ipa} Broadcast ${bootp_ipbca}"
# Figure out our NFS root path
#
***************
*** 159,167 ****
shift
done
! # Resolve templates in /conf/base, /conf/default, /conf/${bootp_ipbca},
! # and /conf/${bootp_ipa}. For each subdirectory found within these
! # directories:
#
# - calculate memory filesystem sizes. If the subdirectory (prior to
# NFS remounting) contains the file 'md_size', the contents specified
--- 164,172 ----
shift
done
! # Resolve templates in /conf/base, /conf/default, /conf/${boot_mac},
! # /conf/${bootp_ipbca} # and /conf/${bootp_ipa}. For each subdirectory
! # found within these directories:
#
# - calculate memory filesystem sizes. If the subdirectory (prior to
# NFS remounting) contains the file 'md_size', the contents specified
***************
*** 179,185 ****
# it before attemping to the remount. This allows the root to be
# relocated without needing to change the remount files.
#
! for i in base default ${bootp_ipbca} ${bootp_ipa} ; do
for j in /conf/$i/* ; do
# memory filesystem size specification
#
--- 184,190 ----
# it before attemping to the remount. This allows the root to be
# relocated without needing to change the remount files.
#
! for i in base default ${boot_mac} ${bootp_ipbca} ${bootp_ipa} ; do
for j in /conf/$i/* ; do
# memory filesystem size specification
#
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list