git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@13112 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
		
			
				
	
	
		
			142 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| # IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
 | |
| #(C)IBM Corp
 | |
| # 
 | |
| 
 | |
| # create /etc/sysconfig/network-scripts/
 | |
| pmatch ()
 | |
| {
 | |
|   case $1 in
 | |
|     $2) return 0;;  # zero return code means string matched by pattern
 | |
|   esac
 | |
| 
 | |
|   return 1          # non-zero return code means string not matched by pattern
 | |
| }
 | |
| 
 | |
| for i in `/bin/cat /proc/cmdline`; do
 | |
|     KEY=`/bin/echo $i  | /bin/awk -F= '{print $1}'`
 | |
|     if [ "$KEY" = "ifname" ]; then
 | |
|         ifname=`/bin/echo $i | /bin/awk -F= '{print $2}'`
 | |
|         MACX=${ifname#*:}
 | |
|         ETHX=${ifname%:$MACX*}
 | |
|         break
 | |
|     elif [ "$KEY" = "netdev" ]; then
 | |
|         ETHX=`/bin/echo $i | /bin/awk -F= '{print $2}'`
 | |
|         MACX=`/sbin/ip link show $ETHX | /bin/grep ether | /bin/awk '{print $2}'`
 | |
|         break
 | |
|     elif [ "$KEY" = "BOOTIF" ]; then
 | |
|         MACX=`/bin/echo $i | /bin/awk -F= '{print $2}'`
 | |
|         ETHX=`/sbin/ifconfig | /bin/grep -i $MACX | /bin/awk '{print $1}'`
 | |
|         break
 | |
|     fi
 | |
| done
 | |
| 
 | |
| if [ ! -z "$MACX" ] && [ ! -z "$ETHX" ]; then
 | |
| 	if (pmatch $OSVER "sles*") || (pmatch $OSVER "suse*") || [ -f /etc/SuSE-release ]; then
 | |
| 		CONFFILE=$MNTDIR/etc/sysconfig/network/ifcfg-$ETHX
 | |
| 	fi
 | |
| 	if (pmatch $OSVER "fedora*") || (pmatch $OSVER "rhel6*") || (pmatch $OSVER "rhels6*") || [ -f /etc/fedora-release ] || [ -f /etc/redhat-release ];then
 | |
| 		CONFFILE=$MNTDIR/etc/sysconfig/network-scripts/ifcfg-$ETHX
 | |
| 	fi
 | |
|     if [ ! -e $CONFFILE ]; then
 | |
|         /bin/touch $CONFFILE
 | |
|     fi
 | |
|     if (pmatch $ETHX "hf*") ; then
 | |
|         IP=`/sbin/ifconfig $ETHX | /bin/grep -i "inet addr" | awk '{print $2}' | awk -F: '{print $2}'`
 | |
|         MASK=`/sbin/ifconfig $ETHX | /bin/grep -i "inet addr" | awk '{print $4}' | awk -F: '{print $2}'`
 | |
|         echo "DEVICE=$ETHX" > $CONFFILE
 | |
|         echo "BOOTPROTO=static" >> $CONFFILE
 | |
|         echo "HWADDR=$MACX" >> $CONFFILE
 | |
|         echo "ONBOOT=yes" >> $CONFFILE
 | |
|         echo "IPADDR=$IP" >> $CONFFILE
 | |
|         echo "NETMASK=$MASK" >> $CONFFILE
 | |
|     else
 | |
|         echo "DEVICE=$ETHX" > $CONFFILE
 | |
|         echo "BOOTPROTO=dhcp" >> $CONFFILE
 | |
|         echo "HWADDR=$MACX" >> $CONFFILE
 | |
|         echo "ONBOOT=yes" >> $CONFFILE
 | |
|     fi
 | |
| fi
 | |
| 
 | |
| 
 | |
| for i in `cat /proc/cmdline`; do
 | |
|     KEY=`echo $i | awk -F= '{print $1}'`
 | |
|     if [ "$KEY" = "dump" ]; then
 | |
|         DUMP=`echo $i |awk -F= '{print $2}'`
 | |
|         if [ ! -z "$XCAT" ]; then
 | |
|             break
 | |
|         fi
 | |
|     elif [ "$KEY" = "XCAT" ]; then
 | |
|         XCAT=`echo $i |awk -F= '{print $2}'`
 | |
|         if [ ! -z "$DUMP" ]; then
 | |
|             break
 | |
|         fi
 | |
|     fi
 | |
| done
 | |
| 
 | |
| if [ ! -z "$DUMP" ]; then
 | |
|     # parse "dump=<proto>://<nfsserver_IP>/<directory>"
 | |
|     KDPATH=${DUMP#*:}
 | |
|     KDPROTO=${DUMP%:$KDPATH*}
 | |
|     
 | |
|     KDPATH=${KDPATH/\/\//}
 | |
|     KDIP=`echo $KDPATH | cut -d'/' -f1`
 | |
|     KDPATH=${KDPATH/$KDIP/}
 | |
| 
 | |
|     # if "dump=<proto>:///<directory>", use $xcatmaster as the default NFS server
 | |
|     if [ -z $KDIP ]; then
 | |
|         KDIP=${XCAT%:*}
 | |
|     fi
 | |
| 
 | |
|     # workaround for RHEL6
 | |
|     # the $KDIP:$KDPATH directory will be used to generate the initrd for kdump service
 | |
|     MOUNTPATH=""
 | |
|     if (pmatch $OSVER "*6\.*" ); then
 | |
| 	MOUNTPATH="/tmp"
 | |
|     else
 | |
| 	MOUNTPATH="/var/tmp"
 | |
|     fi 
 | |
|     /bin/mount $KDIP:$KDPATH $MOUNTPATH
 | |
| 
 | |
|     if [ "$KDPROTO" = "nfs" ]; then
 | |
| 	if (pmatch $OSVER "sles*") || (pmatch $OSVER "suse*") || [ -f /etc/SuSE-release ]; then
 | |
| 	    KDTEMPPATH=${KDPATH//\//\\\/}
 | |
| 	    KDTEMPPATH="nfs:\/\/${KDIP}${KDTEMPPATH}\/${NODE}"
 | |
| 	    sed -i "s/^KDUMP_SAVEDIR=.*$/KDUMP_SAVEDIR=\"${KDTEMPPATH}\"/" /etc/sysconfig/kdump
 | |
|             sed -i "s/^KDUMP_COPY_KERNEL=.*$/KDUMP_COPY_KERNEL=\"no\"/" /etc/sysconfig/kdump
 | |
|             sed -i "s/^KDUMP_PRESCRIPT=.*$/KDUMP_PRESCRIPT=\"\/tmp\/createdir\"/" /etc/sysconfig/kdump
 | |
|             sed -i "s/^KDUMP_REQUIRED_PROGRAMS=.*$/KDUMP_REQUIRED_PROGRAMS=\"\/tmp\/createdir\"/" /etc/sysconfig/kdump
 | |
|             TEMPDELAY=$(($RANDOM%30))
 | |
|             #work around for the kdump on sles 11.2
 | |
|             echo "/bin/mkdir -p /root/tmp/" > /tmp/createdir
 | |
|             #following 5 lines is the work around for kdump on multiply nodes
 | |
|             echo "/bin/sleep ${TEMPDELAY}" >> /tmp/createdir
 | |
|             echo "/bin/mount -o nolock ${KDIP}:${KDPATH} /tmp" >> /tmp/createdir
 | |
|             echo "/bin/mkdir -p /tmp/${NODE}" >> /tmp/createdir
 | |
|             echo "/bin/sleep ${TEMPDELAY}" >> /tmp/createdir
 | |
|             echo "/bin/umount /tmp" >> /tmp/createdir
 | |
|             /bin/chmod 777 /tmp/createdir    
 | |
|             #change the mount and remount shell scripts' name, workaround for kdump on stateless node
 | |
|             oldmount=`ls /lib/mkinitrd/boot/*-mount.sh`
 | |
|             oldremount=`ls /lib/mkinitrd/boot/*-remount.sh`
 | |
|             mv $oldmount ${oldmount}.bak
 | |
|             mv $oldremount ${oldremount}.bak
 | |
| 	    /etc/init.d/boot.kdump restart
 | |
|             mv ${oldmount}.bak $oldmount
 | |
|             mv ${oldremount}.bak $oldremount
 | |
| 	else
 | |
| 	    if (pmatch $OSVER "fedora*") || (pmatch $OSVER "rhel6*") || (pmatch $OSVER "rhels6*") || [ -f /etc/fedora-release ] || [ -f /etc/redhat-release ];then
 | |
| 		echo "net $KDIP:$KDPATH" > /etc/kdump.conf
 | |
|                 echo "link_delay 180" >> /etc/kdump.conf
 | |
| 		/etc/init.d/kdump restart
 | |
| 	    fi
 | |
| 	fi
 | |
|     fi
 | |
| 
 | |
|     /bin/umount -l $MOUNTPATH
 | |
| else
 | |
|     /bin/echo "The kdump server is not configured"
 | |
| fi
 | |
| 
 | |
| exit 0
 |