home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / sbin / create_interface < prev    next >
Text File  |  2006-11-29  |  7KB  |  215 lines

  1. #!/bin/sh
  2.  
  3. # Create interface
  4. #
  5. # Olaf Hering <olh@suse.de>
  6. # Michal Svec <msvec@suse.cz>
  7. # Martin Vidner <mvidner@suse.cz>
  8. # Ihno Krumreich <ihno@suse.de>
  9. #
  10. # $Id: create_interface 1833 2006-06-21 09:53:47Z snwint $
  11.  
  12. ROOT=$1
  13. INSTALLINF=/etc/install.inf
  14. # files copied to $ROOT at the end of script
  15. HARDWAREDIR=/etc/sysconfig/hardware/
  16. DEVICEDIR=$ROOT/etc/sysconfig/network/
  17. ROUTINGFILE=$ROOT/etc/sysconfig/network/routes
  18. HOSTFILE=$ROOT/etc/HOSTNAME
  19. RESFILE=$ROOT/etc/resolv.conf
  20. DOMFILE=$ROOT/etc/defaultdomain
  21. DHCPFILE=$ROOT/etc/sysconfig/network/dhcp
  22. DHCPFILETMP=$ROOT/etc/sysconfig/network/dhcp.tmp
  23. CONFIGFILE=$ROOT/etc/sysconfig/network/config
  24. CONFIGFILETMP=$ROOT/etc/sysconfig/network/config.tmp
  25. MODCONFFILE=$ROOT/etc/modules.conf
  26. MODCONFFILETMP=$ROOT/etc/modules.conf.tmp
  27. # INSTALLINF=install.inf
  28. # DEVICEDIR=
  29. # ROUTINGFILE=routes
  30. #
  31.  
  32. if [ -f $INSTALLINF ]
  33. then
  34.  
  35. #
  36. #    Get configuration for the installation device
  37. #
  38.     NETDEV=`grep Netdevice: $INSTALLINF | grep -v sit0 | uniq | sed -e 's/Netdevice: \\(.*\\)/\\1/'`
  39.     eval `getcfg -f hwcfg- -d /etc/sysconfig/hardware $NETDEV`
  40.  
  41.  
  42. #
  43. #    Create hardware configuration file if it doesn't exist
  44. #
  45.         if [ "$HWD_CONFIG_N" -gt 0 ] ; then
  46.             # hwcfg file exist, do not modify it
  47.             eval HWD_CONFIG=\$HWD_CONFIG_$((HWD_CONFIG_N-1))
  48.             myhwcfg=${HWD_CONFIG}
  49.         elif [ "$HWD_BUS_N" -gt 0 ] ; then
  50.         # use bus info
  51.         eval HWD_BUSNAME=\$HWD_BUSNAME_$((HWD_BUS_N-1))
  52.         eval HWD_BUSID=\$HWD_BUSID_$((HWD_BUS_N-1))
  53.         if test "${HWD_BUSNAME}" = "vio" -a -d /proc/iSeries
  54.         then
  55.         # Bug 159652 - LTC22358 - no hwcfg-static files created for iseries_veth
  56.         myhwcfg=hwcfg-static-0
  57.         else
  58.         myhwcfg=hwcfg-bus-${HWD_BUSNAME}-${HWD_BUSID}
  59.         fi
  60.     else
  61.         # use static name
  62.         myhwcfg=hwcfg-static-0
  63.     fi
  64.     : hwcfg $myhwcfg
  65.     HARDWAREFILE=${HARDWAREDIR}$myhwcfg
  66.  
  67.     if [ ! -f ${HARDWAREFILE} ] ; then
  68.         # Here save Aliases and Options for $NETDEV
  69.         MODULE=`grep "Alias: $NETDEV" $INSTALLINF | uniq | sed -e "s/Alias: $NETDEV \\(.*\\)/\\1/"`
  70.         MODULE_OPTIONS=`grep "Options: $NETDEV" $INSTALLINF | uniq | sed -e "s/Options: $NETDEV \\(.*\\)/\\1/"`
  71.         echo "STARTMODE='auto'" > $HARDWAREFILE
  72.         echo "MODULE='$MODULE'" >> $HARDWAREFILE
  73.         echo "MODULE_OPTIONS='$MODULE_OPTIONS'" >> $HARDWAREFILE
  74.     fi
  75.  
  76. #
  77. #    Create interface file
  78. #
  79.     # interface config
  80.     # always use getcfg names for S/390
  81.     if echo "$myhwcfg"|grep -E "(qeth|hsi|ctc|lcs|iucv)" 
  82.     then
  83.     # use getcfg naming
  84.         myifcfg=ifcfg-${myhwcfg#static-}
  85.     elif [ -z "$HWD_ID" ] ; then
  86.     # use kernel name
  87.         myifcfg=ifcfg-$NETDEV
  88.     else
  89.     # use LLA address
  90.         myifcfg=ifcfg-${HWD_INTERFACETYPE_0}-id-${HWD_ID}
  91.     fi
  92.     : ifcfg $myifcfg
  93.     DEVICEFILE=/tmp/$myifcfg
  94.     TARGET_DEVICEFILE=${DEVICEDIR}$myifcfg
  95.  
  96.     # Choose correct boot protocol (#23708)
  97.     BOOTPROTO="dhcp"
  98.     if grep -q 'NetConfig:.*static' $INSTALLINF; then
  99.         BOOTPROTO="static"
  100.     else
  101.         sed "s/^DHCLIENT_SET_HOSTNAME=.*/DHCLIENT_SET_HOSTNAME=\"yes\"/" < $DHCPFILE > $DHCPFILETMP
  102.         [ $? -eq 0 ] && mv $DHCPFILETMP $DHCPFILE
  103.     fi
  104.     echo "BOOTPROTO=\"$BOOTPROTO\"" > $DEVICEFILE
  105.  
  106.     # Include UNIQUE number (#25739)
  107.     UNIQUE=`grep "^NetUniqueID:" $INSTALLINF | uniq | sed -e 's/NetUniqueID: \\(.*\\)/\\1/'`
  108.     echo "UNIQUE=\"$UNIQUE\"" >> $DEVICEFILE
  109.  
  110.     # correct STARTMODE for root fs on a network device, #176804
  111.     STARTMODE=onboot
  112.     # `sed -n s;T;p` : print only if substitution succeeded
  113.     ROOTPART=`sed -n 's,^/dev/\([^[:space:]]*\)[[:space:]]*'${ROOT%/}'[[:space:]].*,\1,;T;p' /proc/mounts`
  114.     # translate from persistent names (#176804#c41)
  115.     ROOTPART=`readlink -f /dev/$ROOTPART`
  116.     ROOTPART=${ROOTPART#/dev/}
  117.     # use * and .. to get to the device containing ROOTPART
  118.     case `cd -P /sys/block/*/"$ROOTPART"/../device && pwd` in
  119.         *session*)
  120.         IS_ISCSI=true ;;
  121.         *)
  122.         IS_ISCSI=false ;;
  123.     esac
  124.     # TODO: NFS
  125.     if $IS_ISCSI; then
  126.         STARTMODE=nfsroot
  127.     fi
  128.     echo "STARTMODE=\"$STARTMODE\"" >> $DEVICEFILE
  129.  
  130.     # do not write useless misleading info in case of dynamic config (#49131)
  131.     if [ "$BOOTPROTO" = "static" ]; then
  132.         IP=`grep "^IP:" $INSTALLINF | uniq | sed -e 's/IP: \\(.*\\)/\\1/'`
  133.         echo "IPADDR=\"$IP\"" >> $DEVICEFILE
  134.     fi
  135.     IP_MTU=`grep "^IP_MTU:" $INSTALLINF | uniq | sed -e 's/IP_MTU: \\(.*\\)/\\1/'`
  136.     [ -n "$IP_MTU" ] && echo "MTU=\"$IP_MTU\"" >> $DEVICEFILE
  137.  
  138. #
  139. #    Create pointopoint Interfaces
  140. #
  141.  
  142.     PTOP=`grep Pointopoint: $INSTALLINF | uniq | sed -e 's/Pointopoint: \\(.*\\)/\\1/'`
  143.     [ -n "$PTOP" ] && echo "REMOTE_IPADDR=\"$PTOP\"" >> $DEVICEFILE
  144. #
  145. #    create broadcast-interface
  146. #
  147.     # #49131
  148.     if [ "$BOOTPROTO" = "static" ]; then
  149.         NWMASK=`grep Netmask: $INSTALLINF | uniq | sed -e 's/Netmask: \\(.*\\)/\\1/'`
  150.         [ -n "$NWMASK" ] && echo "NETMASK=\"$NWMASK\"" >> $DEVICEFILE
  151.         NW=`grep Network: $INSTALLINF | uniq | sed -e 's/Network: \\(.*\\)/\\1/'`
  152.         [ -n "$NW" ] && echo "NETWORK=\"$NW\"" >> $DEVICEFILE
  153.         NWBROADCAST=`grep Broadcast: $INSTALLINF | uniq | sed -e 's/Broadcast: \\(.*\\)/\\1/'`
  154.         [ -n "$NWBROADCAST" ] && echo "BROADCAST=\"$NWBROADCAST\"" >> $DEVICEFILE
  155.     fi
  156.  
  157. #    
  158. #    Create routingfile
  159. #
  160.     GW=`grep Gateway: $INSTALLINF | uniq | sed -e 's/Gateway: \\(.*\\)/\\1/'`
  161.     # do not specify the interface, #39401
  162.     [ -n "$GW" ] && echo "default $GW - -" >> $ROUTINGFILE
  163.  
  164. #
  165. #    Create /etc/HOSTNAME
  166. #
  167.     HOSTNAME=`grep Machinename: $INSTALLINF | uniq | sed -e 's/Machinename: \\(.*\\)/\\1/'`
  168.     [ -n "$HOSTNAME" ] && echo "$HOSTNAME" > $HOSTFILE
  169.  
  170. #
  171. #    Create /etc/resolv.conf
  172. #
  173.     DOMAIN=`grep Domain: $INSTALLINF | uniq | sed -e 's/Domain: \\(.*\\)/\\1/'`
  174.     NAMESERVER=`grep Nameserver: $INSTALLINF | uniq | sed -e 's/Nameserver: \\(.*\\)/\\1/'`
  175.     if test ! -f "$RESFILE"
  176.     then
  177.         [ -n "$DOMAIN" ] && echo "domain $DOMAIN" >> $RESFILE
  178.         [ -n "$NAMESERVER" ] && echo "nameserver $NAMESERVER" >> $RESFILE
  179.     fi
  180.  
  181. #
  182. #    Create /etc/defaultdomain
  183. #
  184.     [ -n "$DOMAIN" -a ! -f "$DOMFILE" ] && echo "$DOMAIN" >> $DOMFILE
  185.     WAIT_FOR_INTERFACES=`grep ConnectWait: $INSTALLINF | uniq | sed -e 's/ConnectWait: \\(.*\\)/\\1/'`
  186.     if [ -n "$WAIT_FOR_INTERFACES" ]
  187.     then
  188.  
  189. #
  190. #    WAIT_FOR_INTERFACES is not zero. Put the value into the file
  191. #    We are the first to modify this file. Default is zero
  192. #
  193.         sed "s/^WAIT_FOR_INTERFACES=.*/WAIT_FOR_INTERFACES=$WAIT_FOR_INTERFACES/" < $CONFIGFILE > $CONFIGFILETMP
  194.         [ $? -eq 0 ] && mv $CONFIGFILETMP $CONFIGFILE
  195.     fi
  196.     chroot $ROOT chkconfig network on
  197.  
  198.     if [ -f $TARGET_DEVICEFILE ] ; then
  199.         echo "$0: $TARGET_DEVICEFILE does already exist, keeping the original"
  200.     else
  201.         cp $DEVICEFILE $TARGET_DEVICEFILE
  202.     fi
  203.  
  204. fi
  205. #
  206. #    Copy all hwcfg-files to the installed system
  207. #
  208. # Originally only for s390, now also the NETDEV hwcfg
  209. ERG=`ls /etc/sysconfig/hardware/hwcfg-* 2> /dev/null`
  210. if [ $? = 0 ]
  211. then
  212.     cp /etc/sysconfig/hardware/hwcfg-* $ROOT/etc/sysconfig/hardware
  213. fi
  214. :
  215.