[PATCH] initscripts for OpenIPMI

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



More progress on the initscripts to automatically load the IPMI device
drivers.  initscript and config file included in this patch.  Please
review and incorporate into the OpenIPMI package.

Thanks,
Matt

-- 
Matt Domsch
Software Architect
Dell Linux Solutions linux.dell.com & www.dell.com/linux
Linux on Dell mailing lists @ http://lists.us.dell.com

--- /dev/null	Thu Apr 11 09:25:15 2002
+++ ipmi/ipmi.init	Fri Jun 17 12:10:09 2005
@@ -0,0 +1,248 @@
+#!/bin/sh
+#############################################################################
+#
+# ipmi:		OpenIPMI Driver init script
+#
+# Authors:	Matt Domsch <Matt_Domsch@xxxxxxxx>
+#               Chris Poblete <Chris_Poblete@xxxxxxxx>
+#
+# chkconfig: 2345 04 96
+# description: OpenIPMI Driver init script
+#
+### BEGIN INIT INFO
+# Provides: ipmidrv
+# Required-Start: $localfs $remotefs $syslog
+# Required-Stop: $localfs $remotefs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop:
+# Short-Description: OpenIPMI Driver init script
+# Description: OpenIPMI Driver init script
+### END INIT INFO
+#
+#############################################################################
+# for log_success_msg and friends
+[ -r /lib/lsb/init-functions ] && . /lib/lsb/init-functions
+# source config info
+[ -r /etc/sysconfig/ipmi ] && . /etc/sysconfig/ipmi
+
+#############################################################################
+# GLOBALS
+#############################################################################
+MODULE_NAME="ipmi"
+INTF_NUM=0
+
+IPMI_SMB_MODULE_NAME="ipmi_smb"
+IPMI_SI_MODULE_NAME="ipmi_si"
+kernel=`uname -r | cut -d. -f1-2`
+if [ "${kernel}" == "2.4" ]; then
+    IPMI_SMB_MODULE_NAME="ipmi_smb_intf"
+    IPMI_SI_MODULE_NAME="ipmi_si_drv"
+fi
+
+MODULES_INTERFACES="ipmi_imb ipmi_devintf"
+MODULES_FEATURES="ipmi_watchdog ipmi_poweroff"
+MODULES_HW="${IPMI_SMB_MODULE_NAME} ${IPMI_SI_MODULE_NAME}"
+MODULES_BASE="ipmi_msghandler"
+MODULES="${MODULES_INTERFACES} ${MODULES_FEATURES} ${MODULES_HW} ${MODULES_BASE}"
+
+
+RETVAL=0
+LOCKFILE=/var/lock/subsys/ipmi
+
+
+#############################################################################
+load_si()
+{
+    if [ "${IPMI_SI}" = "1" ]; then
+	modprobe ${IPMI_SI_MODULE_NAME} || RETVAL=1
+    fi
+}
+
+load_smb()
+{
+    if [ "${IPMI_SMB}" = "1" ]; then
+	modprobe ${IPMI_SMB_MODULE_NAME} || RETVAL=1
+    fi
+}
+
+load_hw_modules()
+{
+    load_si
+    load_smb
+}
+
+start_watchdog()
+{
+    if [ "${IPMI_WATCHDOG}" = "1" ]; then
+	load_hw_modules
+	modprobe ipmi_watchdog ${IPMI_WATCHDOG_OPTIONS} || RETVAL=2
+	if [ ! -x /sbin/udev -a ! -e /dev/watchdog ]; then
+	    mknod -m 0600 /dev/watchdog 10 130 || RETVAL=2
+	fi
+    fi
+}
+
+stop_watchdog()
+{
+    modprobe -q -r ipmi_watchdog
+    [ ! -x /sbin/udev ] && rm /dev/watchdog
+}
+
+start_powercontrol()
+{
+    local poweroff_opts=""
+    if [ "${IPMI_POWEROFF}" = "1" ]; then
+	load_hw_modules
+	[ "${IPMI_POWERCYCLE}" == "1" ] && poweroff_opts="poweroff_control=2"
+	modprobe ipmi_poweroff "${poweroff_opts}" || RETVAL=2
+    fi
+}
+
+stop_powercontrol()
+{
+    modprobe -q -r ipmi_poweroff
+}
+
+#############################################################################
+unload_all_ipmi_modules()
+{
+    [ ! -x /sbin/udev ] && rm -f "/dev/ipmi${INTF_NUM}"
+    stop_watchdog
+    for m in ${MODULES}; do
+	    modprobe -q -r ${m}
+    done
+}
+
+unload_ipmi_modules_leave_features()
+{
+    [ ! -x /sbin/udev ] && rm -f "/dev/ipmi${INTF_NUM}"
+    for m in ${MODULES_INTERFACES}; do
+	    modprobe -q -r ${m}
+    done
+    lsmod | egrep -q "ipmi_poweroff|ipmi_watchdog"
+    if [ "$?" -ne "0" ]; then
+	stop_watchdog
+	for m in ${MODULES}; do
+	    modprobe -q -r ${m}
+	done
+    fi
+}
+
+
+#############################################################################
+load_ipmi_modules ()
+{
+	modprobe ipmi_msghandler || RETVAL=1
+	load_hw_modules
+	[ "${RETVAL}" = "1" ] && unload_all_ipmi_modules && return
+
+	start_watchdog
+	start_powercontrol
+
+	if [ "${DEV_IPMI}" = "1" ]; then
+	    modprobe ipmi_devintf || RETVAL=2
+	    if [ "${RETVAL}" != "2" ]; then
+		if [ ! -x /sbin/udev ]; then
+		    DEVMAJOR=`cat /proc/devices | awk '/ipmidev/{print $1}'`
+		    mknod -m 0600 /dev/ipmi${INTF_NUM} c ${DEVMAJOR} 0 || RETVAL=2
+		fi
+	    fi
+	fi
+
+	if [ "${IPMI_IMB}" = "1" ]; then
+	    modprobe ipmi_imb || RETVAL=2
+	    if [ "${RETVAL}" != "2" ]; then
+		DEVMAJOR=`cat /proc/devices | awk '/imb/{print $1}'`
+		mknod -m 0600 /dev/imb c ${DEVMAJOR} 0 || RETVAL=2
+	    fi
+	fi
+
+	# Per Corey Minyard, essentially no one uses ipmi_radisys
+	# and we don't want to encourage its further use
+	# so it won't be handled here.
+	return
+}
+
+#############################################################################
+start()
+{
+    echo -n $"Starting ${MODULE_NAME} drivers: "
+    load_ipmi_modules
+    [ "${RETVAL}" = "1" ] && log_failure_msg && return
+    [ "${RETVAL}" = "2" ] && touch ${LOCKFILE} && log_warning_msg
+    [ "${RETVAL}" = "0" ] && touch ${LOCKFILE} && log_success_msg
+}
+
+#############################################################################
+stop()
+{
+    echo -n $"Stopping ${MODULE_NAME} drivers: "
+    unload_ipmi_modules_leave_features
+    rm -f ${LOCKFILE}
+    log_success_msg
+}
+
+stop_all()
+{
+    echo -n $"Stopping ${MODULE_NAME} drivers: "
+    unload_all_ipmi_modules
+    rm -f ${LOCKFILE}
+    log_success_msg
+}
+
+#############################################################################
+restart()
+{
+    stop_all
+    start
+}
+
+#############################################################################
+status ()
+{
+    for m in ${MODULES}; do
+        if /sbin/lsmod | grep $m >/dev/null 2>&1 ; then
+            echo "$m module loaded"
+        else
+            echo "$m module not loaded"
+        fi
+    done
+}
+
+usage ()
+{
+		echo $"Usage: $0 {start|stop|status|restart|condrestart|" 1>&2
+		echo $"          start-watchdog|stop-watchdog|" 1>&2
+		echo $"          start-powercontrol|stop-powercontrol|" 1>&2
+		echo $"          stop-all}" 1>&2
+		RETVAL=1
+}
+
+condrestart ()
+{
+    [ -e ${LOCKFILE} ] && restart
+}
+
+#############################################################################
+# MAIN
+#############################################################################
+case "$1" in
+	start) start ;;
+	stop)  stop ;;
+	restart) restart ;;
+	status)	status ;;
+	condrestart) condrestart ;;
+	start-watchdog) start_watchdog ;;
+	stop-watchdog) stop_watchdog ;;
+	start-powercontrol) start_powercontrol ;;
+	stop-powercontrol) stop_powercontrol ;;
+        stop-all) stop_all ;;
+	*) usage ;;
+esac
+
+exit ${RETVAL}
+
+#############################################################################
+# end of file
+#############################################################################
+
--- /dev/null	Thu Apr 11 09:25:15 2002
+++ ipmi/ipmi.sysconf	Fri Jun 17 12:10:15 2005
@@ -0,0 +1,36 @@
+# Enable standard hardware interfaces (KCS, BT, SMIC)
+# You probably want this enabled.
+IPMI_SI=1
+
+# Enable nonstandard interfaces (SMB via i2c)
+# IPMI_SMB=1
+
+# Enable /dev/ipmi0 interface, used by ipmitool, ipmicmd,
+# and other userspace IPMI-using applications.
+# You probably want this enabled.
+DEV_IPMI=1
+
+# Enable IPMI_WATCHDOG if you want the IPMI watchdog
+# to reboot the system if it hangs
+# IPMI_WATCHDOG=1
+#
+# Watchdog options - modinfo ipmi_watchdog for details
+# watchdog timeout value in seconds
+# as there is no userspace ping application that runs during shutdown,
+# be sure to give it enough time for any device drivers to
+# do their cleanup (e.g. megaraid cache flushes)
+# without the watchdog triggering prematurely
+IPMI_WATCHDOG_OPTIONS="timeout=60"
+
+# Enable IPMI_POWEROFF if you want the IPMI
+# poweroff module to be loaded.
+# IPMI_POWEROFF=1
+
+# Enable IPMI_POWERCYCLE if you want the system to be power-cycled (power
+# down, delay briefly, power on) rather than power off, on systems
+# that support such.  IPMI_POWEROFF=1 is also required.
+# IPMI_POWERCYCLE=1
+
+# Enable "legacy" interfaces for applications
+# Intel IMB driver interface
+# IPMI_IMB=1

-- 
fedora-devel-list mailing list
fedora-devel-list@xxxxxxxxxx
http://www.redhat.com/mailman/listinfo/fedora-devel-list

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]
  Powered by Linux