Date: Sat, 19 Jun 2004 13:01:35 +0200 (CEST) From: Dirk-Willem van Gulik <dirkx@webweaving.org> To: FreeBSD-gnats-submit@FreeBSD.org Cc: Dirk-Willem van Gulik <dirkx@apache.org> Subject: conf/68108: Adding mac-address /conf selector to diskless boot Message-ID: <200406191101.i5JB1Zin041637@webweaving.org> Resent-Message-ID: <200406191140.i5JBe6a5060275@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>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@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:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200406191101.i5JB1Zin041637>