#!/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=:///" KDPATH=${DUMP#*:} KDPROTO=${DUMP%:$KDPATH*} KDPATH=${KDPATH/\/\//} KDIP=`echo $KDPATH | cut -d'/' -f1` KDPATH=${KDPATH/$KDIP/} # if "dump=:///", 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 KDPATH=${KDPATH//\//\\\/} KDPATH="nfs:\/\/${KDIP}${KDPATH}" sed -i "s/^KDUMP_SAVEDIR=.*$/KDUMP_SAVEDIR=\"${KDPATH}\"/" /etc/sysconfig/kdump sed -i "s/^KDUMP_COPY_KERNEL=.*$/KDUMP_COPY_KERNEL=no/" /etc/sysconfig/kdump #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 $MOUNTPATH else /bin/echo "The kdump server is not configured" fi exit 0