VIO Scripts for SLES9
From Linux on Power wiki
(Redirected from SUSE VIO Scripts)
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"
