Ich bin von Ubuntu zu Debian gewechselt.Ich betreibe einen Server für versch Dienste. Also eig bin ich noch mitten in der Installation. Eine Desktopoberfläche habe ich nicht installiert. Ich habe Samba, openVPN schon installiert. Ip Adresse habe ich fest vergeben. Mein Problem ist, ich habe für meine KNX 7 Eib Haussteuerung einen TPUART USB Stick angeschlossen und die zugehörige Software installiert.
Code: Alles auswählen
eibd
Erweitern der sources.list.
vi /etc/apt/sources.list
[oder mit einem anderen Editor eurer Wahl zB nano]
und folgende beiden Zeilen am Ende hinzufügen.
deb http://www.auto.tuwien.ac.at/~mkoegler/debian eib main
deb-src http://www.auto.tuwien.ac.at/~mkoegler/debian eib main
Das Repository von der TU Wien ist nur mit einem Key zu nutzen. Den müsst ihr noch installieren. Ihr bekommt ihn hier. Dazu kopiert ihr den Schlüssel in eine Datei beliebigen Namens zB ~root/qw und gebt danach folgendes ein.
cd ~root
apt-key add qw
apt-get update
apt-get install bcusdk
eibd -i -D -T -S -e 0.0.0 tpuarts:/dev/ttyACM0
Das ganze lief unter Ubuntu auch schon so. Beim starten kommt die Meldung:
Eibd should not run as root
und das Terminal friert quasi ein, dh der Cursor verschwindet und es läßt sich nicht mehr steuern. Erst wenn man von einem neuen Terminal den Eibd stoppt ( killall eibd ) erscheint der Cursor wieder.
Ich habe dabb nach Anleitung ein Stertscript für Ubuntu erstellt
Code: Alles auswählen
/etc/init.d/eibd
#! /bin/sh
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Description of the service"
NAME=eibd
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-D -T -S -d -i --pid-file=/var/run/eibd.pid ft12:/dev/ttyS0"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
#
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
$DAEMON_ARGS \
|| return 2
# Add code here, if necessary, that waits for the process to be ready
# to handle requests from services started subsequently which depend
# on this one. As a last resort, sleep for some time.
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Wait for children to finish too if this is a daemon that forks
# and if the daemon is only ever run from this initscript.
# If the above conditions are not satisfied then add some other code
# that waits for the process to drop all resources that could be
# needed by services started subsequently. A last resort is to
# sleep for some time.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}
#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
#
# If the daemon can reload its configuration without
# restarting (for example, when it is sent a SIGHUP),
# then implement that here.
#
start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
return 0
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
#reload|force-reload)
#
# If do_reload() is not implemented then leave this commented out
# and leave 'force-reload' as an alias for 'restart'.
#
#log_daemon_msg "Reloading $DESC" "$NAME"
#do_reload
#log_end_msg $?
#;;
restart|force-reload)
#
# If the "reload" option is implemented then remove the
# 'force-reload' alias
#
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac
Script ausführbar machen
chmod a+x /etc/init.d/eibd
Jetzt müssen noch die entsprechenden symbolischen Links für die einzelnen Runlevel gesetzt werden. Aber Linux wäre nicht Linux, wenn es dafür nicht eine einfache Methode gäbe.
apt-get install rcconf
cd /etc/init.d/
rcconf
Haken vor Eibd setzen
und
/etc/init.d/eibd start
Doch nach einem restart erreiche ich den Server nicht mehr über putty. Ich habe einen Bildschirm und Tastatur angeschlossen und unten im Bildschirn steht :
Eibd should not run as root
Ich glaube das ser Server beim Start beim Eibd hängen geblieben ist und telnet nicht gestartet ist.
anpingen funktioniert.
Wie komme ich jetzt wieder in mein System ohne alles neu aufzusetzen.
Und wie bekomme ich den Eibd als nichtroot gestartet, damit der Hinweis nicht mehr kommt und mir alls blockiert. Oder wie muss ich das Script ändern damit es funktioniert.
Danke schonmal für eure Hilfe