mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-10-31 03:12:30 +00:00 
			
		
		
		
	Add tree for teh overlay package
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@14587 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
		
							
								
								
									
										15
									
								
								xCAT-genesis-scripts/bin/allowcred.awk
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										15
									
								
								xCAT-genesis-scripts/bin/allowcred.awk
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| #!/usr/bin/awk -f | ||||
| BEGIN { | ||||
|         listener = "/inet/tcp/300/0/0" | ||||
|         quit = "no" | ||||
|  | ||||
|  | ||||
|        while (match(quit,"no")) { | ||||
|          while ((listener |& getline) > 0) { | ||||
|                  if (match($0,"CREDOKBYYOU?")) { | ||||
|                          print "CREDOKBYME" |& listener | ||||
|                    } | ||||
|          } | ||||
|          close(listener) | ||||
|       } | ||||
| } | ||||
							
								
								
									
										348
									
								
								xCAT-genesis-scripts/bin/bmcsetup
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										348
									
								
								xCAT-genesis-scripts/bin/bmcsetup
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,348 @@ | ||||
| # IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html | ||||
| # | ||||
| # Raw commands to set BMCs to defaults | ||||
| #   dx320 | ||||
| #     0x2e 0x10 0x4d 0x4f 0x00 0xff | ||||
| # | ||||
| #   dx340  | ||||
| #     0x30 0x13 0xff 0x00 0x00 0x00 | ||||
| # | ||||
| #   dx360/x3450 | ||||
| #     0x30 0x02 0x43 0x4c 0x52 0xaa | ||||
| #     0x08 0x00 0x49 0x4e 0x54 0x45 0x4c | ||||
| #     0x08 0x04 | ||||
| # | ||||
| allowcred.awk & | ||||
| CREDPID=$! | ||||
| sleep 5 | ||||
| modprobe ipmi_si | ||||
| modprobe ipmi_devintf | ||||
| IPCFGMETHOD=static | ||||
| while [ -z "$BMCIP" -a $IPCFGMETHOD="static" ]; do | ||||
|     while ! getipmi | ||||
|     do | ||||
|         echo "Retrying retrieval of IPMI settings from server" | ||||
|     done | ||||
|     TIMEOUT=15 | ||||
|     BMCIP=`grep bmcip /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'` | ||||
|     BMCVLAN=`grep taggedvlan /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'` | ||||
|     if [ -z "$BMCVLAN" ]; then BMCVLAN=off; fi | ||||
|     BMCGW=`grep gateway /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'` | ||||
|     BMCNM=`grep netmask /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'` | ||||
|     BMCUS=`grep username /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'` | ||||
|     BMCPW=`grep password /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'` | ||||
|     IPCFGMETHOD=`grep ipcfgmethod /tmp/ipmicfg.xml|awk -F\> '{print $2}'|awk -F\< '{print $1}'` | ||||
|     if [ -z "$IPCFGMETHOD" ]; then | ||||
| 	IPCFGMETHOD="static" | ||||
|     fi | ||||
|     if [ -z "$BMCIP" -a $IPCFGMETHOD="static" ]; then | ||||
|         echo "FAILED TO RETRIEVE SETTINGS, RETRYING in 15 seconds" | ||||
|         sleep 15 | ||||
|     fi | ||||
| done | ||||
| kill $CREDPID | ||||
| NUMBMCS=`grep bmcip /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'|wc -l` | ||||
| IPMIVER=`ipmitool mc info|grep ^IPMI|awk  '{print $4}'` | ||||
| IPMIMFG=`ipmitool mc info|grep "^Manufacturer ID"|awk  '{print $4}'` | ||||
| if [ "$IPMIMFG" == 2 ]; then #IBM | ||||
|     XPROD=`ipmitool mc info|grep "^Product ID"|awk '{print $4}'` | ||||
|     if [ "$XPROD" == "220" ]; then | ||||
|         LOCKEDUSERS=1 | ||||
|         BMCPORT=`grep bmcport /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'` | ||||
|         if [ ! -z "$BMCPORT" ]; then | ||||
| 	    let idev=NUMBMCS-1 | ||||
| 	    for p in $BMCPORT; do | ||||
|             	ipmitool -d $idev raw 0xc 1 1 0xc0 $p > /dev/null | ||||
|             	ipmitool -d $idev raw 0x04 0x12 0x09 0x01 0x18 0x${p}1 0x00 > /dev/null | ||||
| 	    	let idev=idev-1 | ||||
| 	    done | ||||
|         fi | ||||
|     elif [ "$XPROD" == "291" ]; then | ||||
|         LOCKEDUSERS=1 | ||||
|     else | ||||
|         IBMFAM=`ipmitool raw 0x3a 0x50 |head -n 1| awk '{print $1 $2 $3 $4}'` | ||||
|         if [ "$IBMFAM" == "59554f4f" ]; then | ||||
|             BMCPORT=`grep bmcport /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'` | ||||
|             if [ ! -z "$BMCPORT" ]; then | ||||
| 	    	let idev=NUMBMCS-1 | ||||
| 		    for p in $BMCPORT; do | ||||
| 	            	ipmitool -d $idev raw 0xc 1 1 0xc0 $BMCPORT > /dev/null | ||||
| 		    	let idev=idev-1 | ||||
| 		    done | ||||
|             fi | ||||
|         fi | ||||
|     fi | ||||
| elif [ "$IPMIMFG" == 20301 ] ; then | ||||
|     XPROD=`ipmitool mc info|grep "^Product ID"|awk '{print $4}'` | ||||
|     IBMVPDV=`ipmitool raw 0x3a 0xb 2 0 16 1` | ||||
|     if [ $IBMVPDV -eq 2 ]; then | ||||
| 	ISITE=1; | ||||
|     fi | ||||
|         LOCKEDUSERS=1 | ||||
|         BMCPORT=`grep bmcport /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'` | ||||
|         if [ ! -z "$BMCPORT" ]; then | ||||
| 	    	let idev=NUMBMCS-1 | ||||
| 		    for p in $BMCPORT; do | ||||
| 	            	ipmitool -d $idev raw 0xc 1 1 0xc0 $BMCPORT > /dev/null | ||||
| 		        NEWPORT=`ipmitool -d $idev raw 0xc 2 1 0xc0 0 0|awk '{print $2}'` | ||||
| 			sleep 10  | ||||
|  | ||||
| 		    	let idev=idev-1 | ||||
| 		    done | ||||
|         fi | ||||
| fi | ||||
| echo -n "Auto detecting LAN channel..." | ||||
|  | ||||
| for LANCHAN in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do  | ||||
|    if ipmitool channel info $LANCHAN 2> /dev/null | grep 802.3 > /dev/null 2>&1 && ipmitool raw 0xc 2 $LANCHAN 5 0 0 > /dev/null 2>&1;  | ||||
|      then break;  | ||||
|    fi;  | ||||
|    echo -n "." | ||||
| done | ||||
| echo "Detected LAN channel $LANCHAN" | ||||
|          | ||||
| let idev=NUMBMCS | ||||
| if [ $IPCFGMETHOD="static" ]; then | ||||
| 	while [ $idev -gt 0 ]; do | ||||
| 		let idev=idev-1 | ||||
| 		TRIES=0 | ||||
| 		while ! ipmitool -d $idev lan set $LANCHAN ipsrc static; do | ||||
| 		    sleep 1 | ||||
| 		    let TRIES=TRIES+1 | ||||
| 		    if [ $TRIES -gt $TIMEOUT ]; then break; fi | ||||
| 		done | ||||
| 	done | ||||
| 	let idev=NUMBMCS-1 | ||||
| 	for b in $BMCIP; do | ||||
| 		TRIES=0 | ||||
| 		while ! ipmitool -d $idev lan set $LANCHAN ipaddr $b; do | ||||
| 		    sleep 1 | ||||
| 		    let TRIES=TRIES+1 | ||||
| 		    if [ $TRIES -gt $TIMEOUT ]; then break; fi | ||||
| 		done | ||||
| 		let idev=idev-1 | ||||
| 	done | ||||
| 	let idev=NUMBMCS-1 | ||||
| 	for m in $BMCNM; do | ||||
| 		TRIES=0 | ||||
| 		while ! ipmitool -d $idev lan set $LANCHAN netmask $m; do | ||||
| 		    sleep 1 | ||||
| 		    let TRIES=TRIES+1 | ||||
| 		    if [ $TRIES -gt $TIMEOUT ]; then break; fi | ||||
| 		done | ||||
| 		let idev=idev-1 | ||||
| 	done | ||||
| 	TRIES=0 | ||||
| 	if [ ! -z "$BMCGW" ]; then | ||||
| 	    let idev=NUMBMCS-1 | ||||
| 	    for g in $BMCGW; do | ||||
| 	    	TRIES=0 | ||||
| 		    while ! ipmitool -d $idev lan set $LANCHAN defgw ipaddr $g; do | ||||
| 		        sleep 1 | ||||
| 		        let TRIES=TRIES+1 | ||||
| 		        if [ $TRIES -gt $TIMEOUT ]; then break; fi | ||||
| 		    done | ||||
| 	            let idev=idev-1 | ||||
| 	    done | ||||
| 	    TRIES=0 | ||||
| 	fi | ||||
| else | ||||
| 	 let idev=NUMBMCS | ||||
| 	 while [ $idev -gt 0 ]; do | ||||
|                 let idev=idev-1 | ||||
|                 TRIES=0 | ||||
|                 while ! ipmitool -d $idev lan set $LANCHAN ipsrc $IPCFGMETHOD; do | ||||
|                     sleep 1 | ||||
|                     let TRIES=TRIES+1 | ||||
|                     if [ $TRIES -gt $TIMEOUT ]; then break; fi | ||||
|                 done | ||||
|         done | ||||
| fi | ||||
|  | ||||
| let idev=NUMBMCS | ||||
| while [ $idev -gt 0 ]; do | ||||
|       let idev=idev-1 | ||||
|       TRIES=0 | ||||
|       ipmitool -d $idev lan set $LANCHAN vlan id $BMCVLAN | ||||
| done | ||||
|  | ||||
| let idev=NUMBMCS-1 | ||||
| for bmcu in $BMCUS; do | ||||
|     if [ "$bmcu" = "" ]; then continue; fi | ||||
| DISABLEUSERS="1 2 3 4" | ||||
| if [ ! -z "$LOCKEDUSERS" ]; then | ||||
|     USERSLOT=`ipmitool -d $idev user list $LANCHAN |grep -v ^ID|awk '{print $1 " " $2}'|grep " $BMCUS"|awk '{print $1}'` | ||||
|     if [ -z "$USERSLOT" ]; then | ||||
|         USERSLOT=4 | ||||
|     fi | ||||
| else | ||||
|     USERSLOT=2 | ||||
| fi | ||||
| if [ "$ISITE" = 1 ]; then | ||||
|     while ! remoteimmsetup | ||||
|     do | ||||
|         echo "Waiting for xCAT remote configuration of service processor via CMM.." | ||||
|     done | ||||
| fi | ||||
| CURRENTUSER=`ipmitool -d $idev user list $LANCHAN|grep ^$USERSLOT|awk '{print $2}'` | ||||
| DISABLEUSERS=`echo 1 2 3 4|sed -e s/$USERSLOT//` | ||||
| for user in $DISABLEUSERS; do | ||||
|     while ! ipmitool -d $idev user disable $user; do | ||||
|         sleep 1 | ||||
|         let TRIES=TRIES+1 | ||||
|         if [ $TRIES -gt $TIMEOUT ]; then break; fi | ||||
|     done | ||||
|     TRIES=0 | ||||
| done | ||||
| TRIES=0 | ||||
| while ! ipmitool -d $idev user enable $USERSLOT; do | ||||
|     sleep 1 | ||||
|     let TRIES=TRIES+1 | ||||
|     if [ $TRIES -gt $TIMEOUT ]; then break; fi | ||||
| done | ||||
| TRIES=0 | ||||
| # Last param in ipmitool user priv is the channel to set it on. | ||||
| # Penguin boxes are all channel 2 | ||||
| CURRPRIV=`ipmitool -d $idev user list 1|grep ^$USERSLOT|awk '{print $6}'` | ||||
| if [ "$CURRPRIV" != "ADMINISTRATOR" ]; then  | ||||
|     while ! ipmitool -d $idev user priv $USERSLOT 4 $LANCHAN; do | ||||
|         sleep 1 | ||||
|         let TRIES=TRIES+1 | ||||
|     if [ $TRIES -gt $TIMEOUT ]; then break; fi | ||||
|     done | ||||
|     TRIES=0 | ||||
| fi | ||||
| TRIES=0 | ||||
| while ! ipmitool -d $idev channel setaccess $LANCHAN $USERSLOT link=on; do | ||||
|     sleep 1 | ||||
|     let TRIES=TRIES+1 | ||||
|     if [ $TRIES -gt $TIMEOUT ]; then break; fi | ||||
| done | ||||
| TRIES=0 | ||||
| if [ "$CURRENTUSER" != "$bmcu" ]; then | ||||
|     while ! ipmitool -d $idev user set name $USERSLOT $bmcu; do | ||||
|         sleep 1 | ||||
|         let TRIES=TRIES+1 | ||||
|         if [ $TRIES -gt $TIMEOUT ]; then break; fi | ||||
|     done | ||||
| fi | ||||
| let idev=idev-1 | ||||
| done | ||||
| let idev=NUMBMCS-1 | ||||
| for bmcp in $BMCPW; do | ||||
|     if [ "$bmcp" = "" ]; then continue; fi | ||||
| TRIES=0 | ||||
| while ! ipmitool -d $idev user set password $USERSLOT $bmcp; do | ||||
|     sleep 1 | ||||
|     let TRIES=TRIES+1 | ||||
|     if [ $TRIES -gt $TIMEOUT ]; then break; fi | ||||
| done | ||||
| TRIES=0 | ||||
| echo "Set up following user table: " | ||||
| ipmitool -d $idev user list $LANCHAN | ||||
| let idev=idev-1 | ||||
| done | ||||
|  | ||||
| let idev=NUMBMCS | ||||
| while [ $idev -gt 0 ]; do | ||||
| let idev=idev-1 | ||||
|  | ||||
|  | ||||
| echo -n "Enabling Channel $LANCHAN: " | ||||
| while ! ipmitool -d $idev raw 0x6 0x40 $LANCHAN 0x42 0x44 > /dev/null; do | ||||
|     sleep 1 | ||||
|     let TRIES=TRIES+1 | ||||
|     if [ $TRIES -gt $TIMEOUT ]; then break; fi | ||||
| done | ||||
| TRIES=0 | ||||
| while ! ipmitool -d $idev raw 0x6 0x40 $LANCHAN 0x82 0x84 > /dev/null; do | ||||
|     sleep 1 | ||||
|     let TRIES=TRIES+1 | ||||
|     if [ $TRIES -gt $TIMEOUT ]; then break; fi | ||||
| done | ||||
| if [ $TRIES -gt $TIMEOUT ]; then echo "ERROR"; else echo "OK"; fi | ||||
| TRIES=0 | ||||
|  | ||||
| echo -n "Enabling ARP responses: " | ||||
| while ! ipmitool -d $idev lan set $LANCHAN arp respond on > /dev/null; do | ||||
|     sleep 1 | ||||
|     let TRIES=TRIES+1 | ||||
|     echo -n . | ||||
|     if [ $TRIES -gt $TIMEOUT ]; then break; fi | ||||
| done | ||||
| if [ $TRIES -gt $TIMEOUT ]; then echo "ERROR"; else echo "OK"; fi | ||||
| TRIES=0 | ||||
|  | ||||
| echo -n "Enabling IPMI v 1.5 MD5 LAN access:" | ||||
| while ! ipmitool -d $idev lan set $LANCHAN auth admin md5 > /dev/null; do | ||||
|     sleep 1 | ||||
|     let TRIES=TRIES+1 | ||||
|     if [ $TRIES -gt $TIMEOUT ]; then break; fi | ||||
| done | ||||
| if [ $TRIES -gt $TIMEOUT ]; then echo "ERROR"; else echo "OK"; fi | ||||
| TRIES=0 | ||||
| if [ ! "$IPMIVER" == "1.5"  ]; then  | ||||
|     echo -n "Enabling IPMI v 2.0 LAN access: " | ||||
|     #two goals here, make sure cipher suite 0 does not work as it is insecure | ||||
|     #mae sure cipher suite 3 does work because we will use it | ||||
|     #leave every thing else alone. | ||||
|     ACCESS=`ipmitool raw 0xc 2 1 24 0 0 ` | ||||
|     NEWACCESS="" | ||||
|     i=0 | ||||
|     for elem in $ACCESS; do | ||||
| 	if [ $i = 2 ]; then | ||||
| 		NEWACCESS=`printf "$NEWACCESS 0x%02x" $((0x$elem&0xf0))` | ||||
| 	elif [ $i = 3 ]; then | ||||
| 		NEWACCESS=`printf "$NEWACCESS 0x%02x" $((0x$elem|0x44))` | ||||
| 	elif [ $i != 0 ]; then | ||||
| 		NEWACCESS="$NEWACCESS 0x$elem" | ||||
| 	fi | ||||
| 	i=$((i+1)) | ||||
|     done | ||||
|     if ipmitool raw 0xc 1 1 24 $NEWACCESS > /dev/null; then | ||||
| 		echo OK | ||||
|     else | ||||
| 		echo ERROR | ||||
|     fi | ||||
| 	 | ||||
| 	 | ||||
|     TRIES=0 | ||||
|  | ||||
|     echo -n "Enabling SOL for channel $LANCHAN:" | ||||
|     while ! ipmitool -d $idev raw 0xc 0x21 $LANCHAN 0x1 0x1 > /dev/null; do | ||||
|         sleep 1 | ||||
|         let TRIES=TRIES+1 | ||||
|         if [ $TRIES -gt $TIMEOUT ]; then break; fi | ||||
|     done | ||||
|     if [ $TRIES -gt $TIMEOUT ]; then echo "ERROR"; else echo "OK"; fi | ||||
|     TRIES=0 | ||||
|      | ||||
|     echo -n "Enabling SOL for $BMCUS:" | ||||
|     while ! ipmitool -d $idev raw 6 0x4c $LANCHAN $USERSLOT 2 0 0 0 > /dev/null; do | ||||
|         sleep 1 | ||||
|         let TRIES=TRIES+1 | ||||
|         if [ $TRIES -gt $TIMEOUT ]; then break; fi | ||||
|     done | ||||
|     if [ $TRIES -gt $TIMEOUT ]; then echo "ERROR"; else echo "OK"; fi | ||||
|     echo -n "Putting SOL on channel $LANCHAN:" | ||||
|     while ! OUTPUT=`ipmitool -d $idev raw 0xc 0x21 $LANCHAN 7 $LANCHAN 2>&1 > /dev/null`; do | ||||
| 	if echo $OUTPUT|grep "Unknown (0x80)" > /dev/null; then | ||||
| 		echo "Not Needed" | ||||
| 		break | ||||
|         fi | ||||
|         sleep 1 | ||||
|         let TRIES=TRIES+1 | ||||
|         if [ $TRIES -gt $TIMEOUT ]; then break; fi | ||||
|     done | ||||
|     if [ $TRIES -gt $TIMEOUT ]; then echo "ERROR"; else echo "OK"; fi | ||||
| fi | ||||
|  | ||||
| #frume.awk | ||||
|  | ||||
| echo "Lighting Identify Light" | ||||
| while : | ||||
|     do ipmitool -d $idev raw 0 4 10 > /dev/null | ||||
|     sleep 7 | ||||
| done & | ||||
| done | ||||
|  | ||||
							
								
								
									
										127
									
								
								xCAT-genesis-scripts/bin/dodiscovery
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										127
									
								
								xCAT-genesis-scripts/bin/dodiscovery
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,127 @@ | ||||
| #!/bin/sh | ||||
| minixcatd.awk & | ||||
| PUBKEY=`openssl rsa -in /etc/xcat/privkey.pem -pubout 2> /dev/null|grep -v "PUBLIC KEY"` | ||||
| PUBKEY=`echo $PUBKEY|sed -e 's/ //g'` | ||||
| export PUBKEY | ||||
|  | ||||
| echo "Beginning node discovery process" | ||||
| waitforlink=100 | ||||
| while [ ! -z "$NICSTOBRINGUP" -a $waitforlink -gt 0 ]; do | ||||
| 	NICSTOBRINGUP=`ip link|grep mtu|grep -v LOOPBACK|grep -v usb|grep -v ,LOWER_UP|awk -F: '{print $2}'` | ||||
| 	waitforlink=$((waitforlink - 1)) | ||||
| 	sleep 0.1 | ||||
| 	if [ $waitforlink = 1 ]; then | ||||
| 		echo "No link detected on $NICSTOBRINGUP" | ||||
| 	fi | ||||
| done | ||||
| NICSGETTINGADDR=`ip link|grep mtu|grep -v LOOPBACK|grep -v usb|grep ,LOWER_UP|awk -F: '{print $2}'` | ||||
| timewaiting=0 | ||||
| echo "Waiting for nics to get addresses" | ||||
| while [ ! -z "$NICSGETTINGADDR" -a $timewaiting != 700 ]; do | ||||
| 	NEWNICSGETTINGADDR="" | ||||
| 	for nic in $NICSGETTINGADDR; do | ||||
| 		if ! ip addr show dev $nic |grep -v inet6|grep inet >/dev/null;  then | ||||
| 			NEWNICSGETTINGADDR="$NEWNICSGETTINGADDR $nic" | ||||
| 		else | ||||
| 			echo -n "$nic|" | ||||
| 			ip addr show dev $nic |grep -v inet6|grep inet|sed -e s/\\/.*//|awk '{print $2}' | ||||
| 		fi | ||||
| 	done | ||||
| 	sleep 0.1 | ||||
| 	timewaiting=$((timewaiting+1)) | ||||
| 	if [ $timewaiting = 699 ]; then | ||||
| 		echo "No DHCP answer for $nic, ignoring interface" | ||||
| 	fi | ||||
| 	NICSGETTINGADDR=$NEWNICSGETTINGADDR | ||||
| done | ||||
| if [ $timewaiting != 700 -a $timewaiting -gt 450 ]; then | ||||
| 	echo "Got an address, but it took inordinately long, you may want to check spanning tree configuration" | ||||
| fi | ||||
| echo "Network configuration complete, commencing transmit of discovery packets" | ||||
| XCATPORT=3001 | ||||
| export XCATPORT | ||||
| for parm in `cat /proc/cmdline`; do | ||||
| 	key=`echo $parm|awk -F= '{print $1}'` | ||||
| 	if [ "$key" = "xcatd" ]; then | ||||
| 		XCATMASTER=`echo $parm|awk -F= '{print $2}'|awk -F: '{print $1}'` | ||||
| 		XCATPORT=`echo $parm|awk -F= '{print $2}'|awk -F: '{print $2}'` | ||||
| 	fi | ||||
| done | ||||
| 	 | ||||
| 	 | ||||
| #time to make our packet... | ||||
| MTM=unknown | ||||
| SERIAL=unknown | ||||
| ARCH=unknown | ||||
| ARCH=`uname -m` #32-bit only is old news | ||||
| if [ -r /sys/devices/virtual/dmi/id/product_name ]; then  #x86 | ||||
| 	PRODNAME=`cat /sys/devices/virtual/dmi/id/product_name` | ||||
| 	IAMAVM=0 | ||||
| 	if [ "$PRODNAME" = "KVM" ]; then  | ||||
| 		IAMAVM=1 | ||||
| 		MTM=KVM | ||||
| 	elif [ "$PRODNAME" = "VMware Virtual Platform" ]; then | ||||
| 		IAMAVM=1 | ||||
| 		MTM=VMware | ||||
| 	else  | ||||
| 		MTM=`cat /sys/devices/virtual/dmi/id/product_name|awk -F'[' '{print $2}'|awk -F']' '{print $1}'` | ||||
| 		SERIAL=`cat /sys/devices/virtual/dmi/id/product_serial` | ||||
| 	fi | ||||
| elif [ -r /proc/device-tree/model ]; then #POWER | ||||
| 	MTM=`cat /proc/device-tree/model |awk -F, '{print $2}'` | ||||
| fi | ||||
| CPUCOUNT=`cat /proc/cpuinfo |grep "model name"|wc -l` | ||||
| MEMORY=`cat /proc/meminfo |grep MemTotal|awk '{print $2}'` | ||||
| UUID=`sed -e 's/\(..\)\(..\)\(..\)\(..\)-\(..\)\(..\)-\(..\)\(..\)/\4\3\2\1-\6\5-\8\7/' /sys/devices/virtual/dmi/id/product_uuid` | ||||
| grep "model name" /proc/cpuinfo | while read line; do #to avoid pulling in tail, we do a goofy thing | ||||
| 	echo $line > /tmp/cpumod | ||||
| done | ||||
| CPUTYPE=`cat /tmp/cpumod|awk -F':' '{print $2}'|sed -e 's/^ //'` | ||||
| echo '<xcatrequest>' > /tmp/discopacket | ||||
| echo "<command>findme</command>" >> /tmp/discopacket | ||||
| echo "<arch>$ARCH</arch>" >> /tmp/discopacket | ||||
| if [ "$IAMAVM" = 1 ]; then | ||||
| 	echo "<nodetype>virtual</nodetype>" >> /tmp/discopacket | ||||
| fi | ||||
| echo "<cpucount>$CPUCOUNT</cpucount>" >> /tmp/discopacket | ||||
| echo "<cputype>$CPUTYPE</cputype>" >> /tmp/discopacket | ||||
| echo "<memory>$MEMORY</memory>" >> /tmp/discopacket | ||||
| echo "<uuid>$UUID</uuid>" >> /tmp/discopacket | ||||
| if [ "$MTM" != "unknown" ]; then | ||||
| 	echo "<mtm>$MTM</mtm>" >> /tmp/discopacket | ||||
| fi | ||||
| if [ "$SERIAL" != "unknown" ]; then | ||||
| 	echo "<serial>$SERIAL</serial>" >> /tmp/discopacket | ||||
| fi | ||||
| for dev in `ip link|grep -B1 ether|grep UP|awk '{print $2}'|sed -e s/://`; do | ||||
| 	DRIVER=`grep DRIVER /sys/class/net/$dev/device/uevent|awk -F= '{print $2}'` | ||||
| 	ADDRESS=`ip address show dev $dev|grep "inet "|grep global|awk '{print $2}'` | ||||
| 	MAC=`ip link show dev $dev|grep ether|awk '{print $2}'| tr /a-f/ /A-F/` | ||||
| 	echo "<mac>$DRIVER|$dev|$MAC|$ADDRESS</mac>" >> /tmp/discopacket | ||||
| done | ||||
| echo "<xcatpubkey>$PUBKEY</xcatpubkey>" >> /tmp/discopacket #this is not secure to use by itself, switch sourced pubkey for security | ||||
| echo "<sha512sig>" >> /tmp/discopacket | ||||
| echo "</sha512sig>" >> /tmp/discopacket | ||||
| echo "</xcatrequest>" >> /tmp/discopacket | ||||
| openssl dgst -sha512 -out /tmp/discopacket.sha512 -sign /etc/xcat/privkey.pem /tmp/discopacket | ||||
| openssl enc -e -a -in /tmp/discopacket.sha512  > /tmp/discopacket.b64sig | ||||
| cat /tmp/discopacket |while read line; do | ||||
| 	if [ "$line" = "</sha512sig>" ]; then | ||||
| 		cat /tmp/discopacket.b64sig >> /tmp/discopacket.new | ||||
| 	fi | ||||
| 	echo $line >> /tmp/discopacket.new | ||||
| done | ||||
| mv /tmp/discopacket.new /tmp/discopacket | ||||
|  | ||||
|  | ||||
| while [ ! -r /restart ]; do | ||||
| 	if [ ! -z "$XCATMASTER" ]; then | ||||
| 		(cat /tmp/discopacket | udpcat.awk $XCATMASTER $XCATPORT ) & | ||||
| 	fi | ||||
| 	for dhcps in `grep dhcp-server /var/lib/dhclient/dhclient.leases|awk '{print $4}'|sed -s 's/;//'`; do | ||||
| 		(cat /tmp/discopacket | udpcat.awk $dhcps $XCATPORT ) & | ||||
| 	done | ||||
| 	#cat /tmp/discopacket | ||||
| 	sleep 5 | ||||
| done | ||||
| /bin/restart | ||||
							
								
								
									
										173
									
								
								xCAT-genesis-scripts/bin/doxcat
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										173
									
								
								xCAT-genesis-scripts/bin/doxcat
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,173 @@ | ||||
| if [ ! -z "$BOOTIF" ]; then | ||||
| 	BOOTIF=`echo $BOOTIF|sed -e s/01-// -e s/-/:/g` | ||||
| 	echo -n "Waiting for device with address $BOOTIF to appear.." | ||||
| 	gripeiter=6000 | ||||
| 	while [ -z "$bootnic" ]; do  | ||||
| 		bootnic=`ip link show|grep -B1 $BOOTIF|grep mtu|awk '{print $2}'|sed -e 's/:$//'` | ||||
| 		sleep 0.1 | ||||
| 		if [ $gripeiter = 0 ]; then | ||||
| 			echo "ERROR" | ||||
| 			echo "Unable to find boot device (maybe the nbroot is missing the driver for your nic?)" | ||||
| 			while :; do sleep 365d; done | ||||
| 		fi | ||||
| 		gripeiter=$((gripeiter-1)) | ||||
| 	done | ||||
| fi | ||||
| echo "Done" | ||||
| if [ -z "$bootnic" ]; then | ||||
| 	echo "ERROR: BOOTIF missing, can't detect boot nic" | ||||
| fi | ||||
|  | ||||
| if [ -r /sys/devices/virtual/dmi/id/product_uuid ]; then | ||||
| 	duid='default-duid "\\000\\004'; | ||||
| 	#product_uuid in sysfs fails to cope with endianness of SMBIOS 2.6, unconditionnaly swap.  Technically leads to incorrect DUID in 'older' systems but matches MS behavior | ||||
| 	for i in `sed -e 's/\(..\)\(..\)\(..\)\(..\)-\(..\)\(..\)-\(..\)\(..\)/\4\3\2\1-\6\5-\8\7/;s/-//g;s/\(..\)/\1 /g' /sys/devices/virtual/dmi/id/product_uuid`; do | ||||
| 		octnum="\\"`printf "\\%03o" 0x$i` | ||||
| 		duid=$duid$octnum | ||||
| 	done | ||||
| 	duid=$duid'";' | ||||
| 	echo $duid > /var/lib/dhclient/dhclient6.leases | ||||
| fi | ||||
| rpcbind | ||||
| rpc.statd | ||||
| ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -C '' -N '' | ||||
| ssh-keygen -q -t dsa -f /etc/ssh/ssh_host_dsa_key -C '' -N '' | ||||
| echo 'Protocol 2' >> /etc/ssh/sshd_config | ||||
| /usr/sbin/sshd | ||||
| mkdir -p /etc/xcat | ||||
| mkdir -p /etc/pki/tls | ||||
| echo "[ req ] | ||||
| distinguished_name = nodedn | ||||
|  | ||||
| [ nodedn ]" > /etc/pki/tls/openssl.cnf | ||||
| echo -n "Generating private key..." | ||||
| openssl genrsa -out /etc/xcat/privkey.pem 1024 >& /dev/null | ||||
| echo "Done" | ||||
| PUBKEY=`openssl rsa -in /etc/xcat/privkey.pem -pubout 2> /dev/null|grep -v "PUBLIC KEY"` | ||||
| PUBKEY=`echo $PUBKEY|sed -e 's/ //g'` | ||||
| export PUBKEY | ||||
| /sbin/rsyslogd -c4 | ||||
| mkdir -p /var/lib/lldpad | ||||
| echo 'lldp :' >> /var/lib/lldpad/lldpad.conf | ||||
| echo '{' >> /var/lib/lldpad/lldpad.conf | ||||
| for iface in `ip link |grep -v '^ '|awk '{print $2}'|sed -e 's/:$//'|grep -v lo`; do | ||||
| echo "$iface :" >> /var/lib/lldpad/lldpad.conf | ||||
| echo "{" >> /var/lib/lldpad/lldpad.conf | ||||
| 	echo  "tlvid00000006 :" >> /var/lib/lldpad/lldpad.conf | ||||
| 	echo "{" >> /var/lib/lldpad/lldpad.conf | ||||
| 	echo info = '"'$PUBKEY'";' >> /var/lib/lldpad/lldpad.conf | ||||
| 	echo 'enableTx = true;' >> /var/lib/lldpad/lldpad.conf | ||||
| 	echo '};' >> /var/lib/lldpad/lldpad.conf | ||||
| 	echo 'adminStatus = 3;' >> /var/lib/lldpad/lldpad.conf | ||||
| echo '};' >> /var/lib/lldpad/lldpad.conf | ||||
| done | ||||
| echo '};' >> /var/lib/lldpad/lldpad.conf | ||||
| lldpad -d | ||||
| dhclient -cf /etc/dhclient.conf -pf /var/run/dhclient.$bootnic.pid $bootnic & | ||||
| #we'll kick of IPv6 and IPv4 on all nics, but not wait for them to come up unless doing discovery, to reduce | ||||
| #chances that we'll perform a partial discovery | ||||
| #in other scenarios where downed non-bootnics cause issues, will rely on retries to fix things up | ||||
| dhclient -6 -pf /var/run/dhclient6.$bootnic.pid $bootnic -lf /var/lib/dhclient/dhclient6.leases & | ||||
| NICSTOBRINGUP=`ip link|grep mtu|grep -v LOOPBACK|grep -v $bootnic|grep -v usb|grep -v ,UP|awk -F: '{print $2}'` | ||||
| export NICSTOBRINGUP | ||||
| for nic in $NICSTOBRINGUP; do | ||||
| 	dhclient -cf /etc/dhclient.conf -pf /var/run/dhclient.$nic.pid $nic & | ||||
| 	dhclient -cf /etc/dhclient.conf -6 -pf /var/run/dhclient6.$nic.pid -lf var/lib/dhclient/dhclient6.leases $nic & | ||||
| done | ||||
| openssl genrsa -out /etc/xcat/certkey.pem 4096 > /dev/null 2>&1 & | ||||
|  | ||||
| 	 | ||||
| 	 | ||||
|  | ||||
| gripeiter=101 | ||||
| echo -n "Acquiring network addresses.." | ||||
| while ! ip addr show dev $bootnic|grep -v 'scope link'|grep -v 'dynamic'|grep -v  inet6|grep inet > /dev/null; do | ||||
| 	sleep 0.1 | ||||
| 	if [ $gripeiter = 1 ]; then | ||||
| 		echo | ||||
| 		echo "It seems to be taking a while to acquire an IPv4 address, you may want to check spanning tree..." | ||||
| 	fi | ||||
| 	gripeiter=$((gripeiter-1)) | ||||
| done | ||||
| echo -n "Acquired IPv4 address on $bootnic: " | ||||
| ip addr show dev $bootnic|grep -v 'scope link'|grep -v 'dynamic'|grep -v  inet6|grep inet|awk '{print $2}' | ||||
| ntpd -g -x | ||||
| (while ! ntpq -c "rv 0 state"|grep 'state=4' > /dev/null; do sleep 1; done; hwclock --systohc) & | ||||
| if dmidecode|grep IPMI > /dev/null; then | ||||
| 	modprobe ipmi_si | ||||
| 	modprobe ipmi_devintf | ||||
| fi | ||||
| XCATPORT=3001 | ||||
| export XCATPORT | ||||
| for parm in `cat /proc/cmdline`; do | ||||
|         key=`echo $parm|awk -F= '{print $1}'` | ||||
|         if [ "$key" = "xcatd" ]; then | ||||
|                 XCATMASTER=`echo $parm|awk -F= '{print $2}'|awk -F: '{print $1}'` | ||||
|                 XCATPORT=`echo $parm|awk -F= '{print $2}'|awk -F: '{print $2}'` | ||||
|         fi | ||||
| done | ||||
| if [ "$destiny" != "discover" ]; then #we aren't discoverying, we probably can and should get a cert | ||||
| 	/bin/getcert $XCATMASTER:$XCATPORT | ||||
| fi | ||||
| while :; do | ||||
| 	if [ -z "$destiny" ]; then | ||||
| 		destiny=`getdestiny $XCATMASTER:$XCATPORT` | ||||
| 	fi | ||||
| 	destparameter=`echo $destiny|awk -F= '{print $2}'` | ||||
| 	destiny=`echo $destiny|awk -F= '{print $1}'` | ||||
|         dest=`echo $destiny|awk '{print $1}'` #could probably use bash but oh well | ||||
| 	if [ "$dest" = "discover" ]; then #skip a query to xCAT when /proc/cmdline will do | ||||
| 		/bin/dodiscovery | ||||
| 		/bin/getcert $XCATMASTER:$XCATPORT | ||||
| 		destiny='' | ||||
| 		dest='' | ||||
| 	elif [ "$dest" = shell ]; then | ||||
| 		echo "Dropping to debug shell, exit to check for further action" | ||||
| 		destiny='' | ||||
| 		dest='' | ||||
| 		/bin/bash | ||||
| 	elif [ "$dest" = runcmd ]; then | ||||
| 		destiny=`/bin/nextdestiny $XCATMASTER:$XCATPORT` | ||||
| 		dest=`echo $destiny|awk -F= '{print $1}'` | ||||
| 		$destparameter | ||||
| 	elif [ "$dest" = runimage ]; then | ||||
| 		destiny=`/bin/nextdestiny $XCATMASTER:$XCATPORT` | ||||
| 		dest=`echo $destiny|awk -F= '{print $1}'` | ||||
| 		mkdir /tmp/`basename $destparameter` | ||||
| 		cd /tmp/`basename $destparameter` | ||||
| 		ERROR=`wget $destparameter 2>&1` | ||||
| 		while [ $? == 1 ] && echo $ERROR|grep -v 416; do | ||||
| 			sleep 10 | ||||
| 			ERROR=`wget -c $destparameter 2>&1` | ||||
| 		done | ||||
| 		tar xvf `basename $destparameter` | ||||
| 		./runme.sh | ||||
| 		cd - | ||||
| 	elif [ "$dest" = "reboot" -o "$dest" = "boot" ]; then | ||||
| 		/bin/nextdestiny $XCATMASTER:$XCATPORT | ||||
| 		reboot -f | ||||
| 	elif [ "$dest" = "install" -o "$dest" = "netboot" ]; then | ||||
| 		reboot -f | ||||
| 	elif [ "$dest" = standby ]; then | ||||
| 		destiny='' | ||||
| 		dest='' | ||||
| 		delay=$((30+$RANDOM%270)) | ||||
| 		while [ $delay -gt 0 ]; do | ||||
| 			echo -en "Received request to retry in a bit, will call xCAT back in $delay seconds  \r" | ||||
| 			delay=$((delay-1)) | ||||
| 			sleep 1 | ||||
| 		done | ||||
| 		echo "Retrying                                                                                   "; | ||||
| 	else  | ||||
| 		echo "Unrecognized directive $dest" | ||||
| 		destiny='' | ||||
| 		dest='' | ||||
| 		delay=$((30+$RANDOM%270)) | ||||
| 		while [ $delay -gt 0 ]; do | ||||
| 			echo -en "Will retry in $delay seconds  \r" | ||||
| 			delay=$((delay-1)) | ||||
| 			sleep 1 | ||||
| 		done | ||||
|  | ||||
| 	fi | ||||
| done | ||||
							
								
								
									
										41
									
								
								xCAT-genesis-scripts/bin/getcert
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										41
									
								
								xCAT-genesis-scripts/bin/getcert
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,41 @@ | ||||
| #!/bin/bash | ||||
| allowcred.awk & | ||||
| CREDPID=$! | ||||
| if [ -z "$XCATDEST" ]; then | ||||
| 	XCATDEST=$1 | ||||
| fi | ||||
| #retry in case certkey.pem is not right, yet | ||||
| while ! openssl req -new -key /etc/xcat/certkey.pem -out /tmp/tls.csr -subj "/CN=`hostname`" >& /dev/null; do | ||||
| 	sleep 1 | ||||
| done | ||||
| echo "<xcatrequest> | ||||
| <command>getcredentials</command> | ||||
| <arg>x509cert</arg> | ||||
| <callback_port>300</callback_port> | ||||
| <csr>" > /tmp/certreq.xml | ||||
| cat /tmp/tls.csr >> /tmp/certreq.xml | ||||
| echo "</csr> | ||||
| <sha512sig> | ||||
| </sha512sig> | ||||
| </xcatrequest>" >> /tmp/certreq.xml | ||||
| openssl dgst -sha512 -out /tmp/certreq.sha512 -sign /etc/xcat/privkey.pem /tmp/certreq.xml #chain off the switch published key | ||||
| openssl enc -e -a -in /tmp/certreq.sha512  > /tmp/certreq.b64sig | ||||
| cat /tmp/certreq.xml |while read line; do | ||||
|         if [ "$line" = "</sha512sig>" ]; then | ||||
|                 cat /tmp/certreq.b64sig >> /tmp/certreq.xml.new | ||||
|         fi | ||||
|         echo $line >> /tmp/certreq.xml.new | ||||
| done | ||||
| mv /tmp/certreq.xml.new /tmp/certreq.xml | ||||
| rm /tmp/certreq.b64sig /tmp/certreq.sha512  | ||||
| cat /tmp/certreq.xml | openssl s_client -connect $XCATDEST -quiet 2> /dev/null > /tmp/certresp.xml | ||||
| if grep 'BEGIN CERTIFICATE' /tmp/certresp.xml > /dev/null; then | ||||
| 	awk '/BEGIN CERTIFICATE/,/END CERTIFICATE/' < /tmp/certresp.xml > /etc/xcat/cert.pem | ||||
| 	#stop transmitting sysDesc, allowing the public key to age out of validity | ||||
| 	for iface in `grep '^  e' /var/lib/lldpad/lldpad.conf|awk '{print $1}' `; do | ||||
| 		lldptool -T -i $iface -V sysDesc enableTx=no >& /dev/null | ||||
| 	done | ||||
| fi | ||||
| rm /tmp/certreq.xml | ||||
| rm /tmp/certresp.xml | ||||
| kill $CREDPID | ||||
							
								
								
									
										30
									
								
								xCAT-genesis-scripts/bin/getdestiny
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										30
									
								
								xCAT-genesis-scripts/bin/getdestiny
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| #!/bin/bash | ||||
| if [ -z "$XCATDEST" ]; then | ||||
| 	XCATDEST=$1 | ||||
| fi | ||||
| echo "<xcatrequest> | ||||
| <command>getdestiny</command> | ||||
| <callback_port>300</callback_port> | ||||
| </xcatrequest>" > /tmp/destreq.xml | ||||
| if [ -f /tmp/destiny.xml ]; then rm /tmp/destiny.xml; fi | ||||
| while [ ! -f /tmp/destiny.xml ] || grep error /tmp/destiny.xml; do | ||||
| 	if [ -f /tmp/destiny.xml ]; then | ||||
| 		timer=60 | ||||
| 		while [ $timer -gt 0 ]; do | ||||
| 			echo -en  "Retrying in $timer seconds  \r" >&2 | ||||
| 			sleep 1 | ||||
| 			timer=$(($timer-1)); | ||||
| 		done | ||||
| 	fi | ||||
| 	echo "                                                         " >&2 | ||||
| 	if [ -f /etc/xcat/cert.pem -a -f /etc/xcat/certkey.pem ]; then #use client cert if available | ||||
| 		cat /tmp/destreq.xml | openssl s_client -key /etc/xcat/certkey.pem -cert /etc/xcat/cert.pem -connect $XCATDEST -quiet 2> /dev/null > /tmp/destiny.xml | ||||
| 	else | ||||
| 		cat /tmp/destreq.xml | openssl s_client -connect $XCATDEST -quiet 2> /dev/null > /tmp/destiny.xml | ||||
| 	fi | ||||
| done | ||||
| rm /tmp/destreq.xml | ||||
| DESTINY=`grep '<destiny>' /tmp/destiny.xml | awk -F'>' '{print $2}'|awk -F'<' '{print $1}'` | ||||
| rm /tmp/destiny.xml | ||||
| echo $DESTINY | ||||
|  | ||||
							
								
								
									
										46
									
								
								xCAT-genesis-scripts/bin/getipmi
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										46
									
								
								xCAT-genesis-scripts/bin/getipmi
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| #!/bin/bash | ||||
| allowcred.awk & | ||||
| CREDPID=$! | ||||
| if [ -z "$XCATDEST" ]; then | ||||
| 	XCATDEST=$1 | ||||
| fi | ||||
| if [ -z "$XCATDEST" ]; then | ||||
| 	for parm in `cat /proc/cmdline` ; do | ||||
| 		if echo $parm |grep xcatd= > /dev/null; then | ||||
| 			XCATDEST=`echo $parm |awk -F= '{print $2}'` | ||||
| 		fi | ||||
| 	done | ||||
| fi | ||||
| for LANCHAN in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do  | ||||
|    if ipmitool channel info $LANCHAN 2> /dev/null | grep 802.3 > /dev/null 2>&1 && ipmitool raw 0xc 2 $LANCHAN 5 0 0 > /dev/null 2>&1;  | ||||
|      then break;  | ||||
|    fi;  | ||||
| done | ||||
| BMCMAC=`ipmitool lan print $LANCHAN|grep ^MAC|awk '{print $4}'` #bmcconfig may opt to use DHCP, if so we need to feed up the mac address | ||||
| #TODO: need a way to get the DUID the service processor may use, perhaps reserve that for 'ibmsetup' since spec doesn't touch ipv6? | ||||
|  | ||||
| echo "<xcatrequest> | ||||
| <command>getbmcconfig</command> | ||||
| <callback_port>300</callback_port> | ||||
| <bmcmac>$BMCMAC</bmcmac> | ||||
| </xcatrequest>" > /tmp/bmcreq.xml | ||||
| rm /tmp/ipmicfg.xml | ||||
| while [ ! -f /tmp/ipmicfg.xml ] || grep error /tmp/ipmicfg.xml; do | ||||
| 	if [ -f /tmp/ipmicfg.xml ]; then | ||||
| 		timer=60 | ||||
| 		while [ $timer -gt 0 ]; do | ||||
| 			sleep 1 | ||||
| 			echo -en  "Retrying in $timer seconds  \r" | ||||
| 			timer=$(($timer-1)); | ||||
| 		done | ||||
| 	fi | ||||
| 	echo -en "                                                         \r"; | ||||
| 	 | ||||
| 	if [ -f /etc/xcat/cert.pem -a -f /etc/xcat/certkey.pem ]; then #use client cert if available | ||||
| 		cat /tmp/bmcreq.xml | openssl s_client -key /etc/xcat/certkey.pem -cert /etc/xcat/cert.pem -connect $XCATDEST -quiet 2> /dev/null > /tmp/ipmicfg.xml | ||||
| 	else | ||||
| 		cat /tmp/bmcreq.xml | openssl s_client -connect $XCATDEST -quiet 2> /dev/null > /tmp/ipmicfg.xml | ||||
| 	fi | ||||
| done | ||||
| rm /tmp/bmcreq.xml | ||||
| kill $CREDPID | ||||
							
								
								
									
										18
									
								
								xCAT-genesis-scripts/bin/minixcatd.awk
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										18
									
								
								xCAT-genesis-scripts/bin/minixcatd.awk
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| #!/usr/bin/awk -f | ||||
| # IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html | ||||
| BEGIN { | ||||
| 	port = 3001 | ||||
| 	listener = "/inet/tcp/" port "/0/0" | ||||
|     quit = "no" | ||||
| 	while (match(quit,"no")) { | ||||
| 		while (match(quit,"no") && (listener |& getline) > 0) { | ||||
| 			if (match($0,"restart")) { | ||||
| 				print "restarting bootstrap process" |& listener | ||||
|                 quit="yes" | ||||
| 				system("echo \"" $0 "\" > /restart") | ||||
| 		        close(listener) | ||||
| 			} | ||||
| 		} | ||||
| 		close(listener) | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										29
									
								
								xCAT-genesis-scripts/bin/nextdestiny
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										29
									
								
								xCAT-genesis-scripts/bin/nextdestiny
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| #!/bin/bash | ||||
| if [ -z "$XCATDEST" ]; then | ||||
| 	XCATDEST=$1 | ||||
| fi | ||||
| echo "<xcatrequest> | ||||
| <command>nextdestiny</command> | ||||
| <callback_port>300</callback_port> | ||||
| </xcatrequest>" > /tmp/destreq.xml | ||||
| if [ -f /tmp/destiny.xml ]; then rm /tmp/destiny.xml; fi | ||||
| while [ ! -f /tmp/destiny.xml ] || grep error /tmp/destiny.xml; do | ||||
| 	if [ -f /tmp/destiny.xml ]; then | ||||
| 		timer=60 | ||||
| 		while [ $timer -gt 0 ]; do | ||||
| 			echo -en  "Retrying in $timer seconds  \r" >&2 | ||||
| 			sleep 1 | ||||
| 			timer=$(($timer-1)); | ||||
| 		done | ||||
| 	fi | ||||
| 	echo "                                                         " >&2; | ||||
| 	if [ -f /etc/xcat/cert.pem -a -f /etc/xcat/certkey.pem ]; then #use client cert if available | ||||
| 		cat /tmp/destreq.xml | openssl s_client -key /etc/xcat/certkey.pem -cert /etc/xcat/cert.pem -connect $XCATDEST -quiet 2> /dev/null > /tmp/destiny.xml | ||||
| 	else | ||||
| 		cat /tmp/destreq.xml | openssl s_client -connect $XCATDEST -quiet 2> /dev/null > /tmp/destiny.xml | ||||
| 	fi | ||||
| done | ||||
| rm /tmp/destreq.xml | ||||
| DESTINY=`grep destiny /tmp/destiny.xml | awk -F'>' '{print $2}'|awk -F'<' '{print $1}'` | ||||
| rm /tmp/destiny.xml | ||||
| echo $DESTINY | ||||
							
								
								
									
										43
									
								
								xCAT-genesis-scripts/bin/remoteimmsetup
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										43
									
								
								xCAT-genesis-scripts/bin/remoteimmsetup
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| #!/bin/bash | ||||
| CREDPID=$! | ||||
| if [ -z "$XCATDEST" ]; then | ||||
| 	XCATDEST=$1 | ||||
| fi | ||||
| if [ -z "$XCATDEST" ]; then | ||||
| 	for parm in `cat /proc/cmdline` ; do | ||||
| 		if echo $parm |grep xcatd= > /dev/null; then | ||||
| 			XCATDEST=`echo $parm |awk -F= '{print $2}'` | ||||
| 		fi | ||||
| 	done | ||||
| fi | ||||
| for LANCHAN in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do  | ||||
|    if ipmitool channel info $LANCHAN 2> /dev/null | grep 802.3 > /dev/null 2>&1 && ipmitool raw 0xc 2 $LANCHAN 5 0 0 > /dev/null 2>&1;  | ||||
|      then break;  | ||||
|    fi;  | ||||
| done | ||||
| BMCMAC=`ipmitool lan print $LANCHAN|grep ^MAC|awk '{print $4}'` #bmcconfig may opt to use DHCP, if so we need to feed up the mac address | ||||
| #TODO: need a way to get the DUID the service processor may use, perhaps reserve that for 'ibmsetup' since spec doesn't touch ipv6? | ||||
|  | ||||
| echo "<xcatrequest> | ||||
| <command>remoteimmsetup</command> | ||||
| <bmcmac>$BMCMAC</bmcmac> | ||||
| </xcatrequest>" > /tmp/bmcreq.xml | ||||
| rm /tmp/remsetup.xml | ||||
| while [ ! -f /tmp/remsetup.xml ] || grep error /tmp/ipmicfg.xml; do | ||||
| 	if [ -f /tmp/remsetup.xml ]; then | ||||
| 		timer=60 | ||||
| 		while [ $timer -gt 0 ]; do | ||||
| 			sleep 1 | ||||
| 			echo -en  "Retrying in $timer seconds  \r" | ||||
| 			timer=$(($timer-1)); | ||||
| 		done | ||||
| 	fi | ||||
| 	echo -en "                                                         \r"; | ||||
| 	 | ||||
| 	if [ -f /etc/xcat/cert.pem -a -f /etc/xcat/certkey.pem ]; then #use client cert if available | ||||
| 		cat /tmp/bmcreq.xml | openssl s_client -key /etc/xcat/certkey.pem -cert /etc/xcat/cert.pem -connect $XCATDEST -quiet 2> /dev/null > /tmp/ipmicfg.xml | ||||
| 	else | ||||
| 		cat /tmp/bmcreq.xml | openssl s_client -connect $XCATDEST -quiet 2> /dev/null > /tmp/ipmicfg.xml | ||||
| 	fi | ||||
| done | ||||
| rm /tmp/bmcreq.xml | ||||
							
								
								
									
										12
									
								
								xCAT-genesis-scripts/bin/udpcat.awk
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										12
									
								
								xCAT-genesis-scripts/bin/udpcat.awk
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| #!/usr/bin/awk -f | ||||
| # IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html | ||||
| BEGIN { | ||||
|   xcatdport = ARGV[2] | ||||
|   xcatdhost = ARGV[1] | ||||
|   delete ARGV[1] | ||||
|   delete ARGV[2] | ||||
|   RS="" | ||||
| } | ||||
| END { | ||||
|   print $0 |& "/inet/udp/301/"xcatdhost"/"xcatdport | ||||
| } | ||||
							
								
								
									
										63
									
								
								xCAT-genesis-scripts/xCAT-genesis-scripts.spec
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								xCAT-genesis-scripts/xCAT-genesis-scripts.spec
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | ||||
| %define version	2.8 | ||||
| %ifarch i386 i586 i686 x86 | ||||
| %define tarch x86 | ||||
| %endif | ||||
| %ifarch x86_64 | ||||
| %define tarch x86_64 | ||||
| %endif | ||||
| %ifarch ppc ppc64 | ||||
| %define tarch ppc64 | ||||
| %endif | ||||
| BuildArch: noarch | ||||
| %define name	xCAT-genesis-scripts-%{tarch} | ||||
| %define __spec_install_post : | ||||
| %define debug_package %{nil} | ||||
| %define __prelink_undo_cmd %{nil} | ||||
| Release: snap%(date +"%Y%m%d%H%M") | ||||
| Epoch: 1 | ||||
| AutoReq: false | ||||
| Prefix: /opt/xcat | ||||
| AutoProv: false | ||||
| Obsoletes: xCAT-genesis-${tarch} | ||||
|  | ||||
|  | ||||
|  | ||||
| Name:	 %{name} | ||||
| Version: %{version} | ||||
| Group: System/Utilities | ||||
| License: EPL | ||||
| Vendor: IBM Corp | ||||
| Summary: xCAT Genesis netboot image - Core content | ||||
| URL:	 http://xcat.org | ||||
| Source1: xCAT-genesis-scripts-%{tarch}.tar.bz2 | ||||
|  | ||||
| Buildroot: %{_localstatedir}/tmp/xCAT-genesis | ||||
| Packager: IBM Corp. | ||||
|  | ||||
| %Description | ||||
| xCAT genesis (Genesis Enhanced Netboot Environment for System Information and Servicing) is a small, embedded-like environment for xCAT's use in discovery and management actions when interaction with an OS is infeasible. | ||||
| This package reperesents the EPL content that is more tightly bound to specific xcat-core versions | ||||
| %Prep | ||||
|  | ||||
|  | ||||
| %Build | ||||
|  | ||||
| %Install | ||||
| rm -rf $RPM_BUILD_ROOT | ||||
| mkdir -p $RPM_BUILD_ROOT | ||||
| cd $RPM_BUILD_ROOT | ||||
| tar jxf %{SOURCE1} | ||||
| cd - | ||||
|  | ||||
|  | ||||
| %post | ||||
| if [ "$1" == "2" ]; then #only on upgrade, as on install it's probably not going to work... | ||||
| 	if [ -f "/proc/cmdline" ]; then   # prevent running it during install into chroot image | ||||
|    		. /etc/profile.d/xcat.sh | ||||
|    		mknb %{tarch} | ||||
|    	fi | ||||
| fi | ||||
|  | ||||
| %Files | ||||
| %defattr(-,root,root) | ||||
| / | ||||
		Reference in New Issue
	
	Block a user