#!/bin/sh # IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html nic=0 hba=0 MOD="" NICSTOWAIT="" touch /etc/motd echo "cat /etc/motd" >> /etc/profile #Load common usb drivers modprobe ohci-hcd modprobe uhci-hcd modprobe ehci-hcd for d in /proc/sys/net/ipv4/conf/*; do echo 1 > $d/arp_filter echo 1 > $d/arp_ignore done for i in $(lspci -n | awk '{print $1 "%" $3}') do PCI=$(echo $i | awk -F% '{print $1}') VID="0x0000$(echo $i | awk -F% '{print $2}' |awk -F: '{print $1}')" DID="0x0000$(echo $i | awk -F% '{print $2}' |awk -F: '{print $2}')" if egrep "^[^ ]*[ ]*$VID[ ]*$DID" /lib/modules/*/modules.pcimap >/dev/null then TYPE=$( lspci | \ grep "^$PCI " | \ awk '{print $2}' | \ tr '[A-Z]' '[a-z]' ) DESC=$( lspci | \ grep "^$PCI " | \ awk -F: '{print $3}' | \ sed 's/^ *//' ) MOD=$( egrep "^[^ ]*[ ]*$VID[ ]*$DID" /lib/modules/*/modules.pcimap | \ head -1 | \ awk '{print $1}' | \ tr -d '"' ) case "$TYPE" in ethernet|network) echo "Found ($MOD) $DESC" GOTNIC=1 if [ "$MOD" = "gm" ] then echo "alias myri0 $MOD" echo "alias myri0 $MOD" >>/etc/modules.conf echo "alias myri0 $MOD" >>/etc/modprobe.conf else modprobe $MOD ifconfig eth$nic up udhcpc -i eth$nic -b & NICSTOWAIT="$NICSTOWAIT eth$nic" nic=$(($nic + 1)) fi ;; scsi|raid) echo "Found ($MOD) $DESC" GOTHBA=1 modprobe $MOD & #We background so that messed up SANs don't stop shell modprobe sd_mod modprobe scsi_mod hba=$(($hba + 1)) ;; *) continue ;; esac fi done if [ -d /proc/device-tree/vdevice/l-lan* ]; then modprobe ibmveth for i in /sys/bus/vio/drivers/ibmveth/*/net*; do udhcpc -i eth$nic -b let extrat=0 until ifconfig eth$nic|grep "inet addr" || [ $extrat == 30 ]; do sleep 1 let extrat=extrat+1 done nic=$(($nic + 1)) done fi if [ -d /proc/device-tree/lhea* ]; then modprobe ehea for i in /sys/bus/ibmebus/devices/port*; do udhcpc -i eth$nic -b let extrat=0 until ifconfig eth$nic|grep "inet addr" || [ $extrat == 30 ]; do sleep 1 let extrat=extrat+1 done nic=$(($nic + 1)) done fi let extrat=0 until [ $extrat == 80 -o -z "$NICSTOWAIT" ]; do sleep 1 let extrat=extrat+1 for nic in $NICSTOWAIT; do if ifconfig $nic|grep "inet addr"; then NICSTOWAIT=`echo $NICSTOWAIT|sed -e s/$nic//` if [ $extrat -gt 45 ]; then echo "Warning: $nic took more than 45 seconds to receive DHCP reply, spanning-tree may not be configured well, examine switch configuration" >> /etc/motd echo "Warning: $nic took more than 45 seconds to receive DHCP reply, spanning-tree may not be configured well, examine switch configuration" fi elif [ $extrat == 15 ]; then if ethtool $nic | grep "Link detected: no"; then echo "$nic did not have any link when bringing up network" echo "$nic did not have any link when bringing up network" >> /etc/motd NICSTOWAIT=`echo $NICSTOWAIT|sed -e s/$nic//` fi fi done done if [ ! -z "$NICSTOWAIT" ]; then echo "Warning: the following network devices appeared to be connected to networks, but received no DHCP response: $NICSTOWAIT" >> /etc/motd echo "Warning: the following network devices appeared to be connected to networks, but received no DHCP response: $NICSTOWAIT" fi