Better installer and startup scripts.
authorFlorian Pose <fp@igh-essen.com>
Fri, 07 Apr 2006 10:38:47 +0000
changeset 169 b3ecbec2c487
parent 168 8505cc1ad3ce
child 170 357dd6f677fd
Better installer and startup scripts.
Makefile
ethercat.conf.tmpl
ethercat.sh
install.sh
--- a/Makefile	Fri Apr 07 08:29:19 2006 +0000
+++ b/Makefile	Fri Apr 07 10:38:47 2006 +0000
@@ -1,8 +1,6 @@
 #------------------------------------------------------------------------------
 #
-#  Globales Makefile
-#
-#  IgH EtherCAT-Treiber
+#  EtherCAT Makefile
 #
 #  $Id$
 #
@@ -11,7 +9,7 @@
 ifneq ($(KERNELRELEASE),)
 
 #------------------------------------------------------------------------------
-# Kbuild-Abschnitt
+# kbuild section
 
 obj-m := master/ devices/
 
@@ -20,15 +18,17 @@
 else
 
 #------------------------------------------------------------------------------
-# Default-Abschnitt
+# default section
 
 ifneq ($(wildcard ethercat.conf),)
 include ethercat.conf
 else
-KERNELDIR := /usr/src/linux
-INSTALLDIR := /opt/ethercat
+KERNEL := `uname -r`
+DEVICEINDEX := 99
 endif
 
+KERNELDIR := /lib/modules/$(KERNEL)/build
+
 modules:
 	$(MAKE) -C $(KERNELDIR) M=`pwd`
 
@@ -36,7 +36,7 @@
 	$(MAKE) -C $(KERNELDIR) M=`pwd` clean
 
 install:
-	@./install.sh $(INSTALLDIR)
+	@./install.sh $(KERNEL) $(DEVICEINDEX)
 
 #------------------------------------------------------------------------------
 
--- a/ethercat.conf.tmpl	Fri Apr 07 08:29:19 2006 +0000
+++ b/ethercat.conf.tmpl	Fri Apr 07 10:38:47 2006 +0000
@@ -10,9 +10,9 @@
 #------------------------------------------------------------------------------
 
 # The kernel to compile the EtherCAT sources against
-KERNELDIR = /usr/src/linux
+KERNEL := `uname -r`
 
-# Install directory used by "make install"
-INSTALLDIR := /opt/ethercat
+# PCI index of the EtherCAT device
+DEVICEINDEX := 99
 
 #------------------------------------------------------------------------------
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ethercat.sh	Fri Apr 07 10:38:47 2006 +0000
@@ -0,0 +1,77 @@
+#!/bin/sh
+
+#------------------------------------------------------------------------------
+#
+#  EtherCAT rc script
+#
+#  $Id$
+#
+#------------------------------------------------------------------------------
+
+CONFIGFILE=/etc/sysconfig/ethercat
+
+#------------------------------------------------------------------------------
+
+print_usage()
+{
+    echo "Usage $0 { start | stop }"
+}
+
+unload_module()
+{
+    if lsmod | grep ^$1 > /dev/null; then
+	echo "  unloading module \"$1\"..."
+	rmmod $1 || exit 1
+    fi
+}
+
+#------------------------------------------------------------------------------
+
+# Get parameters
+if [ $# -eq 0 ]; then
+    print_usage
+    exit 1
+fi
+
+ACTION=$1
+
+# Load configuration from sysconfig
+
+if [ -f $CONFIGFILE ]; then
+    . $CONFIGFILE
+else
+    echo "ERROR: Configuration file \"$CONFIGFILE\" not found!"
+    exit 1
+fi
+
+case $ACTION in
+    start)
+	echo "Starting EtherCAT master..."
+	# remove modules
+	unload_module 8139too
+	unload_module 8139cp
+	unload_module ec_8139too
+	unload_module ec_master
+	echo "  loading master modules..."
+	if ! modprobe ec_8139too ec_device_index=$DEVICEINDEX; then
+	    echo "ERROR: Failed to load module!"
+	    exit 1
+	fi
+	;;
+    stop)
+	echo "Stopping EtherCAT master..."
+	unload_module ec_8139too
+	unload_module ec_master
+	if ! modprobe 8139too; then
+	    echo "Warning: Failed to restore 8139too module."
+	fi
+	;;
+    *)
+	print_usage
+	exit 1
+esac
+
+echo "done."
+exit 0
+
+#------------------------------------------------------------------------------
--- a/install.sh	Fri Apr 07 08:29:19 2006 +0000
+++ b/install.sh	Fri Apr 07 10:38:47 2006 +0000
@@ -8,11 +8,15 @@
 #
 #------------------------------------------------------------------------------
 
+CONFIGFILE=/etc/sysconfig/ethercat
+
+#------------------------------------------------------------------------------
+
 # install function
 
 install()
 {
-    echo "  installing $1"
+    echo "    $1"
     if ! cp $1 $INSTALLDIR; then exit 1; fi
 }
 
@@ -20,28 +24,48 @@
 
 # Fetch parameter
 
-if [ $# -eq 0 ]; then
-    echo "Usage: $0 <INSTALLDIR>"
+if [ $# -ne 2 ]; then
+    echo "Usage: $0 <KERNEL> <DEVICEINDEX>"
     exit 1
 fi
 
-INSTALLDIR=$1
-echo "EtherCAT installer. Target: $INSTALLDIR"
+KERNEL=$1
+DEVICEINDEX=$2
 
-# Create installation directory
-
-if [ ! -d $INSTALLDIR ]; then
-    echo "  creating target directory."
-    if ! mkdir $INSTALLDIR; then exit 1; fi
-fi
+INSTALLDIR=/lib/modules/$KERNEL/kernel/drivers/net
+echo "EtherCAT installer - Kernel: $KERNEL"
 
 # Copy files
 
+echo "  installing modules..."
 install master/ec_master.ko
 install devices/ec_8139too.ko
 
-# Finished
+# Update dependencies
 
+echo "  building module dependencies..."
+depmod
+
+# Create configuration file
+
+if [ -f $CONFIGFILE ]; then
+    echo "  notice: using existing configuration file."
+else
+    echo "  creating $CONFIGFILE..."
+    echo "DEVICEINDEX=$DEVICEINDEX" > $CONFIGFILE || exit 1
+fi
+
+# Install rc script
+
+echo "  installing startup script..."
+cp ethercat.sh /etc/init.d/ethercat || exit 1
+if [ ! -L /usr/sbin/rcethercat ]; then
+    ln -s /etc/init.d/ethercat /usr/sbin/rcethercat || exit 1
+fi
+
+# Finish
+
+echo "EtherCAT installer done."
 exit 0
 
 #------------------------------------------------------------------------------