VIO Scripts for SLES9

From Linux on Power wiki

(Redirected from SUSE VIO Scripts)
Jump to: navigation, search

Contents

Scripts for disk mapping and virtual network bridging

  • Those scripts work with SUSE SLES 9 (SP1 and SP2)
  • Copy vio-disk and vio-net to /etc/init.d/
  • Add the kernel module ibmvscis to the "MODULES_LOADED_ON_BOOT=" line in /etc/sysconfig/kernel
  • Copy vio to /etc/sysconfig and edit it according to your device configuration

--bautt 15:16, 8 Sep 2005 (CEST)

/etc/init.d/vio-disk

#! /bin/sh
#
# Start script for virtual disk mapping using IBM POWER Systems with SUSE SLES9
#
# Usage:
#   1) edit /etc/sysconfig/vio
#   2) add the kernel module ibmvscis to the "MODULES_LOADED_ON_BOOT=" line in /etc/sysconfig/kernel
#   3) use "chkconfig vio-disk on"
#
# Copyright (c) 2005 Porsche Information Kommunikation und Services Gmbh, Weissach, Germany
# Author: Christoph Schumacher
# Please send feedback to christoph.schumacher@porsche.de
#
# Released under the BSD license, available at:
# http://www.opensource.org/licenses/bsd-license.php
# All rights reserved.
#
### BEGIN INIT INFO
# Provides:          IBM_VIO_VSCSI_Services
# Required-Start:    $syslog
# Should-Start: $time
# Required-Stop:     $syslog
# Should-Stop: $time
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description: IBM VIO Services for sharing devices on LPAR
# Description:       Start bridge device and configure network interfaces to allow LPAR virtual devices accesss
### END INIT INFO
#
# Note on runlevels:
# 0 - halt/poweroff                     6 - reboot
# 1 - single user                       2 - multiuser without network exported
# 3 - multiuser w/ network (text mode)  5 - multiuser w/ network and X11 (xdm)
#
# Note on script names:
# http://www.linuxbase.org/spec/refspecs/LSB_1.3.0/gLSB/gLSB/scrptnames.html
# A registry has been set up to manage the init script namespace.
# http://www.lanana.org/
# Please use the names already registered or register one or use a
# vendor prefix.
# Check for missing binaries (stale symlinks should not happen)
# Note: Special treatment of stop for LSB conformance
# Check for existence of needed config file and read it
VIO_CONFIG=/etc/sysconfig/vio
test -r $VIO_CONFIG || { echo "$VIO_CONFIG not existing";
       if [ "$1" = "stop" ]; then exit 0;
       else exit 6; fi; }
# Read config
. $VIO_CONFIG
#
# Source LSB init functions
# providing start_daemon, killproc, pidofproc,
# log_success_msg, log_failure_msg and log_warning_msg.
# This is currently not used by UnitedLinux based distributions and
# not needed for init scripts for UnitedLinux only. If it is used,
# the functions from rc.status should not be sourced or used.
#. /lib/lsb/init-functions
#
# Shell functions sourced from /etc/rc.status:
#      rc_check         check and set local and overall rc status
#      rc_status        check and set local and overall rc status
#      rc_status -v     be verbose in local rc status and clear it afterwards
#      rc_status -v -r  ditto and clear both the local and overall rc status
#      rc_status -s     display "skipped" and exit with status 3
#      rc_status -u     display "unused" and exit with status 3
#      rc_failed        set local and overall rc status to failed
#      rc_failed <num>  set local and overall rc status to <num>
#      rc_reset         clear both the local and overall rc status
#      rc_exit          exit appropriate to overall rc status
#      rc_active        checks whether a service is activated by symlinks
#      rc_splash arg    sets the boot splash screen to arg (if active)
. /etc/rc.status
#
# Reset status of this service
rc_reset
#
# Return values acc. to LSB for all commands but status:
# 0       - success
# 1       - generic or unspecified error
# 2       - invalid or excess argument(s)
# 3       - unimplemented feature (e.g. "reload")
# 4       - user had insufficient privileges
# 5       - program is not installed
# 6       - program is not configured
# 7       - program is not running
# 8--199  - reserved (8--99 LSB, 100--149 distrib, 150--199 appl)
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signaling is not supported) are
# considered a success.
#
case "$1" in
   start)
       echo -n "Starting IBM VIO Disk Services "
       for SLOT in $VDEVICES
       do
               eval SLOTDEV=\$VDEVICE_${SLOT};
               eval SLOTTYPE=\$VDEVTYPE_${SLOT};
               eval ROTYPE=\$VROMOD_${SLOT};
               echo $SLOTDEV > /sys/devices/vio/$SLOT/bus0/target0/device
               echo $SLOTTYPE > /sys/devices/vio/$SLOT/bus0/target0/type
               echo $ROTYPE > /sys/devices/vio/$SLOT/bus0/target0/ro
               echo 1 > /sys/devices/vio/$SLOT/bus0/target0/active
       done
       #
       # Remember status and be verbose
       rc_status -v
       ;;
   stop)
       echo -n "Shutting down IBM VIO Disk Services "
       for SLOT in $VDEVICES
       do
               echo 0 > /sys/devices/vio/$SLOT/bus0/target0/active
       done
       #
       # Remember status and be verbose
       rc_status -v
       ;;
   try-restart|condrestart)
       ## Do a restart only if the service was active before.
       ## Note: try-restart is now part of LSB (as of 1.9).
       ## RH has a similar command named condrestart.
       if test "$1" = "condrestart"; then
               echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}"
       fi
       $0 status
       if test $? = 0; then
               $0 restart
       else
               rc_reset        # Not running is not a failure.
       fi
       # Remember status and be quiet
       rc_status
       ;;
   restart)
       ## Stop the service and regardless of whether it was
       ## running or not, start it again.
       $0 stop
       $0 start
       #
       # Remember status and be quiet
       rc_status
       ;;
   force-reload)
       echo -n "Reload of VIO Network Services not supported "
       ;;
   reload)
       echo -n "Reload of VIO Network Services not supported "
       ;;
   status)
       echo -n "Checking for service VIO disks"
       echo
       for I in `ls /sys/devices/vio/`
       do
               if [ -d /sys/devices/vio/$I/bus0 ]
               then
                       ACTIVE=`cat /sys/devices/vio/$I/bus0/target0/active`
                       if [ $ACTIVE -eq 1 ]
                       then
                               DEV=`cat /sys/devices/vio/$I/bus0/target0/device`
                               MOD=`cat /sys/devices/vio/$I/bus0/target0/ro`
                               if [ $MOD -eq 0 ] ; then
                                       RO="rw";
                               else
                                       RO="ro";
                               fi
                               echo Device $DEV is $RO active on slot $I;
                       fi
               fi
       done
       ;;
   probe)
       echo -n "Probing for service VIO not supported"
       ;;
   *)
       echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}"
       exit 1
       ;;
esac
rc_exit

/etc/init.d/vio-net

#! /bin/sh
#
# Start script for creating a layer 2 bridge using virtual and real network card
#
# Usage:
#   1) edit /etc/sysconfig/vio
#   2) install bridge-utils package
#   3) use "chkconfig vio-net on"
#
# Copyright (c) 2005 Porsche Information Kommunikation und Services Gmbh, Weissach, Germany
# Author: Christoph Schumacher
# Please send feedback to christoph.schumacher@porsche.de
#
# Released under the BSD license, available at:
# http://www.opensource.org/licenses/bsd-license.php
# All rights reserved.
#
### BEGIN INIT INFO
# Provides:          IBM_VIO_Net-Services
# Required-Start:    $syslog
# Should-Start: $time
# Required-Stop:     $syslog
# Should-Stop: $time
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description: IBM VIO Services for sharing devices on LPAR
# Description:       Start bridge device and configure network interfaces to allow LPAR virtual devices accesss
### END INIT INFO
#
# Note on runlevels:
# 0 - halt/poweroff                     6 - reboot
# 1 - single user                       2 - multiuser without network exported
# 3 - multiuser w/ network (text mode)  5 - multiuser w/ network and X11 (xdm)
#
# Note on script names:
# http://www.linuxbase.org/spec/refspecs/LSB_1.3.0/gLSB/gLSB/scrptnames.html
# A registry has been set up to manage the init script namespace.
# http://www.lanana.org/
# Please use the names already registered or register one or use a
# vendor prefix.
#
#
# Check for missing binaries (stale symlinks should not happen)
# Note: Special treatment of stop for LSB conformance
ROUTE=/sbin/route
test -x $ROUTE || { echo "$ROUTE not installed";
       if [ "$1" = "stop" ]; then exit 0;
       else exit 5; fi; }
#
IFCONFIG=/sbin/ifconfig
test -x $IFCONFIG || { echo "$IFCONFIG not installed";
       if [ "$1" = "stop" ]; then exit 0;
       else exit 5; fi; }
#
BRCTL=/sbin/brctl
test -x $BRCTL || { echo "$BRCTL not installed";
       if [ "$1" = "stop" ]; then exit 0;
       else exit 5; fi; }
#
# Check for existence of needed config file and read it
VIO_CONFIG=/etc/sysconfig/vio
test -r $VIO_CONFIG || { echo "$VIO_CONFIG not existing";
       if [ "$1" = "stop" ]; then exit 0;
       else exit 6; fi; }
#
# Read config
. $VIO_CONFIG 
#
# Source LSB init functions
# providing start_daemon, killproc, pidofproc,
# log_success_msg, log_failure_msg and log_warning_msg.
# This is currently not used by UnitedLinux based distributions and
# not needed for init scripts for UnitedLinux only. If it is used,
# the functions from rc.status should not be sourced or used.
#. /lib/lsb/init-functions
#
# Shell functions sourced from /etc/rc.status:
#      rc_check         check and set local and overall rc status
#      rc_status        check and set local and overall rc status
#      rc_status -v     be verbose in local rc status and clear it afterwards
#      rc_status -v -r  ditto and clear both the local and overall rc status
#      rc_status -s     display "skipped" and exit with status 3
#      rc_status -u     display "unused" and exit with status 3
#      rc_failed        set local and overall rc status to failed
#      rc_failed <num>  set local and overall rc status to <num>
#      rc_reset         clear both the local and overall rc status
#      rc_exit          exit appropriate to overall rc status
#      rc_active        checks whether a service is activated by symlinks
#      rc_splash arg    sets the boot splash screen to arg (if active)
. /etc/rc.status
#
# Reset status of this service
rc_reset
#
# Return values acc. to LSB for all commands but status:
# 0       - success
# 1       - generic or unspecified error
# 2       - invalid or excess argument(s)
# 3       - unimplemented feature (e.g. "reload")
# 4       - user had insufficient privileges
# 5       - program is not installed
# 6       - program is not configured
# 7       - program is not running
# 8--199  - reserved (8--99 LSB, 100--149 distrib, 150--199 appl)
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signaling is not supported) are
# considered a success.
#
case "$1" in
   start)
       echo -n "Starting IBM VIO Services "
               for BR in $BRIDGE_DEV
               do
                       BRB=`echo $BR |tr '[:lower:]' '[:upper:]'`;
                       #echo $BRCTL addbr $BR;
                       $BRCTL addbr $BR;
                       eval IFARGS=\$${BRB}_BRIDGE_IF
                       eval NETMASK_ARGS=\$${BRB}_NETMASK
                       eval IFCONF_ARGS=\$${BRB}_IP_ADDR
                       #
                       for IF in $IFARGS
                       do
                               #echo $BRCTL addif $BR $IF;
                               $BRCTL addif $BR $IF;
                       done
                       #echo $IFCONFIG $BR $IFCONF_ARGS netmask $NETMASK_ARGS up
                       $IFCONFIG $BR $IFCONF_ARGS netmask $NETMASK_ARGS up
                       for IF in $IFARGS
                       do
                               #echo $IFCONFIG $IF up;
                               $IFCONFIG $IF up;
                       done
               done
               #echo $ROUTE add default gw $DEFAULT_GW;
               $ROUTE add default gw $DEFAULT_GW;
               sleep 3;
       #
       # Remember status and be verbose
       rc_status -v
       ;;
   stop)
       echo -n "Shutting down IBM VIO Services "
               for BR in $BRIDGE_DEV
               do
                       BRB=`echo $BR |tr '[:lower:]' '[:upper:]'`;
                       eval IFARGS=\$${BRB}_BRIDGE_IF
                       for IF in $IFARGS
                       do
                               #echo $BRCTL delif $BR $IF;
                               $BRCTL delif $BR $IF;
                               $IFCONFIG $IF down;
                       done
                       $IFCONFIG $BR down;
                       $BRCTL delbr $BR;
               done
       #
       # 
       # Remember status and be verbose
       rc_status -v
       ;;
   try-restart|condrestart)
       ## Do a restart only if the service was active before.
       ## Note: try-restart is now part of LSB (as of 1.9).
       ## RH has a similar command named condrestart.
       if test "$1" = "condrestart"; then
               echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}"
       fi
       $0 status
       if test $? = 0; then
               $0 restart
       else
               rc_reset        # Not running is not a failure.
       fi
       # Remember status and be quiet
       rc_status
       ;;
   restart)
       ## Stop the service and regardless of whether it was
       ## running or not, start it again.
       $0 stop
       $0 start
       #
       # Remember status and be quiet
       rc_status
       ;;
   force-reload)
       echo -n "Reload of VIO Network Services not supported "
       ;;
   reload)
       echo -n "Reload of VIO Network Services not supported "
       ;;
   status)
       echo -n "Checking for service VIO not supported"
       ;;
   probe)
       echo -n "Probing for service VIO not supported"
       ;;
   *)
       echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}"
       exit 1
       ;;
esac
rc_exit

/etc/sysconfig/vio - Configuration file example

# Define your bridge
BRIDGE_DEV="br0"
# Define interfaces used to create the bridge
# In this case eth0 is physical and eth2 virtual
BR0_BRIDGE_IF="eth0 eth2"
# Bridge IP settings
BR0_IP_ADDR="10.0.0.100"
BR0_NETMASK="255.255.255.0"
DEFAULT_GW="10.0.0.1"
#
# Virtual disk definition
# List virtual devices you are going to map
# see directories in /sys/devices/vio
#
VDEVICES="30000004 30000005 30000006"
# First virtual disk is mapped to LV:
VDEVICE_30000004="/dev/system/disk1lv"
# Device type (always B for block device)
VDEVTYPE_30000004="B"
# Device readonly mode 0 for no
VROMOD_30000004="0"
# Second virtual device ...
VDEVICE_30000005="/dev/system/disk2lv"
VDEVTYPE_30000005="B"
VROMOD_30000005="0"
VDEVICE_30000006="/dev/system/disk3lv"
VDEVTYPE_30000006="B"
VROMOD_30000006="0"
Personal tools