Σενάριο για εκκίνηση του KDM (σε περίπτωση που δεν το κάνει)

debianlight_kdm

Χθες εγκατέστησα ξανά το Debian Wheezy από την αρχή με το προσαρμοσμένο αποθετήριο KDE 4.10 και πρέπει να πω ότι αν λειτουργούσε καλά πριν, τώρα λειτουργεί πολύ καλύτερα.

Το μόνο πρόβλημα που είχα ήταν με το KDM, το οποίο προφανώς δεν εγκαταστάθηκε καθόλου καλά, γιατί δεν ήθελε να ξεκινήσει αυτόματα, κάτι που μου τράβηξε την προσοχή γιατί έκανα την ίδια εγκατάσταση, με τα ίδια αποθετήρια στον άλλο υπολογιστή και όλα πήγαιναν τέλεια.

Ενώ έψαχνα για την αιτία του προβλήματος, ανακάλυψα ότι δεν δημιουργήθηκε το αρχείο /etc/init.d/kdm , το οποίο θα έπρεπε να περιέχει τα εξής:

#!/bin/sh -e ### ΠΛΗΡΟΦΟΡΙΕΣ ΕΝΑΡΞΗΣ ΕΝΑΡΞΗΣ # Παρέχει: kdm # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Should-Start: κονσόλα-οθόνη kbd acpid dbus hal kb5-Start t: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: X display manager για το KDE # Περιγραφή: Το KDM διαχειρίζεται μια συλλογή διακομιστών X, οι οποίοι μπορεί να βρίσκονται στον τοπικό κεντρικό υπολογιστή ή σε απομακρυσμένες μηχανές.
### ΤΕΛΟΣ ΠΛΗΡΟΦΟΡΙΕΣ INIT # /etc/init.d/kdm: εκκίνηση ή διακοπή του X display manager # Σενάριο που είχε κλαπεί αρχικά από το πακέτο xdm # # περιγραφή: K Display Manager # # εισαγωγή των συναρτήσεων έναρξης LSB . Το /lib/lsb/init-functions # ορίζει τις τοπικές ρυθμίσεις εάν [ -r /etc/default/locale ]; έπειτα . /etc/default/locale εξαγωγή LANG LANGUAGE fi # για να ξεκινήσει το kdm ακόμα κι αν δεν είναι ο προεπιλεγμένος διαχειριστής εμφάνισης, αλλάξτε το # HEED_DEFAULT_DISPLAY_MANAGER σε "false".
HEED_DEFAULT_DISPLAY_MANAGER=true DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager PATH=/bin:/usr/bin:/sbin:/usr/sbin DAEMON=/usr/bin/kdm/kdvarPG/DERFILE= /kd m.upgrade setup_config () { # παράμετροι για την υποστήριξη προσαρμογής kdm KDMRC=/etc/kde4/kdm/kdmrc BACKGROUNDRC=/etc/kde4/kdm/backgroundrc # εάν η διαμόρφωση αλλάξει από kdmtheme ή άλλα εργαλεία, μην κάνετε [grep:Beplace@] dByDesktopBase@@@" ${KDMRC}; στη συνέχεια KDMOVERRIDEDIR=/etc/default/kdm.d KDMCFGDIR=/var/run/kdm KDMCFG=$KDMCFGDIR/kdmrc BACKGROUNDCFG=$KDMCFGDIR/backgroundrc DEFAULT_KDM_THEMEshares/kdm/user ΕΜΟΝ || exit 4 # uncomment, εάν θέλετε η αυτόματη σύνδεση να εξαρτάται από το επίπεδο εκτέλεσης #test "$runlevel" || { runlevel=`runlevel`; runlevel=${runlevel#* }; } #test "$runlevel" = 0 && ARG=-autolog || ARG=-noautolog # uncomment, εάν θέλετε πολλές πληροφορίες εντοπισμού σφαλμάτων στο syslog σας #ARG="$ARG -debug 4" # χρησιμοποιούμε ένα εναλλακτικό αρχείο διαμόρφωσης κύριου kdm ARG="$ARG -config $KDMCFG" # δημιουργούμε αρχεία ρύθμισης παραμέτρων kdm genkdmconf. Το run-parts ταξινομεί τη λίστα με προβλέψιμη σειρά εάν [ -d "$KDMOVERRIDEDIR" ]; στη συνέχεια για μέρος στο $(run-parts --list "$KDMOVERRIDEDIR" 2>/dev/null || true); κάνω . Το "$part" έγινε fi # ενημερώνουμε τα αρχεία διαμόρφωσης kdm (μόνο παρακαμφθείσες τιμές) [ -n "$USEBACKGROUND" ] && sed -i "s|^#\?UseBackground=.*|UseBackground=$USEBACKGROUND|" $KDMCFG [ -n "$BACKGROUNDCFG" ] && sed -i "s|^#\?BackgroundCfg=.*|BackgroundCfg=$BACKGROUNDCFG|" $KDMCFG [ -n "$USETHEME" ] && sed -i "s|^#\?UseTheme=.*|UseTheme=$USETHEME|" $KDMCFG [ -n "$THEME" ] && [ -e "$THEME" ] && sed -i "s|^#\?Theme=.*|Theme=$THEME|" $KDMCFG [ -n "$LANGUAGE" ] && sed -i "s|^#\?Language=.*|Language=$LANGUAGE|" $KDMCFG if grep -q "^[[:space:]]*Wallpaper=stripes.png" ${BACKGROUNDRC}; τότε [ -n "$WALLPAPER" ] && [ -e "$WALLPAPER" ] && sed -i "s|^#\?Wallpaper=.*|Wallpaper=`readlink -f $WALLPAPER`|" Το $BACKGROUNDCFG fi # usetheme είναι πλέον ενεργοποιημένο "από προεπιλογή", επομένως πρέπει να βεβαιωθούμε ότι το θέμα δεν είναι άκυρο ...
sed -i "s|@@@ToBeReplacedByDesktopBase@@@|$DEFAULT_KDM_THEME|" ${KDMCFG} # οι παρακάμψεις αυτόματης σύνδεσης είναι χρήσιμες για το ζωντανό περιβάλλον debian αν [ -n "$AUTOLOGINUSER" ]; τότε sed -i "s|^#\?AutoLoginEnable=.*|AutoLoginEnable=true|" $KDMCFG sed -i "s|^#\?AutoLoginUser=.*|AutoLoginUser=$AUTOLOGINUSER|" $KDMCFG fi [ -n "$AUTOLOGINDELAY" ] && sed -i "s|^#\?AutoLoginDelay=.*|AutoLoginDelay=$AUTOLOGINDELAY|" $KDMCFG [ -n "$AUTOLOGINAGAIN" ] && sed -i "s|^#\?AutoLoginAgain=.*|AutoLoginAgain=$AUTOLOGINAGAIN|" $KDMCFG [ -n "$AUTOLOGINLOCKED" ] && sed -i "s|^#\?AutoLoginLocked=.*|AutoLoginLocked=$AUTOLOGINLOCKED|" $KDMCFG fi return 0 } # Εάν αναβαθμίσουμε τον daemon, δεν μπορούμε να χρησιμοποιήσουμε το όρισμα --exec στον # start-stop-daemon, καθώς το inode θα έχει αλλάξει.  Ο κίνδυνος εδώ είναι ότι # σε μια περίπτωση όπου ο δαίμονας σταμάτησε να λειτουργεί, το αρχείο pidfile του δεν καθαρίστηκε και # κάποια άλλη διεργασία εκτελείται τώρα με αυτό το pid, το start-stop-daemon θα στείλει # σήματα σε μια αθώα διεργασία.  Ωστόσο, αυτό φαίνεται σαν μια υπόθεση που δεν έχει κριθεί ιδιαίτερα σκόπιμο.
# Ετσι είναι η ζωή!
εάν [ -e $UPGRADEFILE ]; τότε SSD_ARGS="--pidfile $PIDFILE --startas $DAEMON" else SSD_ARGS="--pidfile $PIDFILE --exec $DAEMON" fi still_running () {if expr "$(cat /proc/$DAEMONPID/cmdline 2> /dev/dev/null "/$2/null)": τότε true else # αν ο δαίμονας δεν αφαιρέσει το δικό του pidfile, θα rm -f $PIDFILE $UPGRADEFILE false fi; } case "$1" στην αρχή) setup_config if [ -e $DEFAULT_DISPLAY_MANAGER_FILE ] && [ "$HEED_DEFAULT_DISPLAY_MANAGER" = "true" ] && [ "$(cat $DEFAULT_DISPLAY_MANAGER_FILE;DAE)" ! τότε log_action_msg "Δεν ξεκινά το K Display Manager (kdm), δεν είναι ο προεπιλεγμένος διαχειριστής οθόνης."
else log_daemon_msg "Έναρξη K Display Manager" "kdm" if start-stop-daemon --start --quiet $SSD_ARGS -- $ARG ; τότε log_end_msg 0 else log_action_end_msg 1 "εκτελείται ήδη" fi fi ;; επανεκκίνηση) /etc/init.d/kdm σταματήσει εάν [ -f $PIDFILE ]; τότε αν still_running? μετά βγείτε 1 fi fi /etc/init.d/kdm start ;; reload) log_action_begin_msg "Επανάληψη φόρτωσης της διαμόρφωσης K Display Manager..."
αν start-stop-daemon --stop --signal 1 --quiet $SSD_ARGS; τότε log_action_end_msg 0 else log_action_end_msg 1 "το kdm δεν εκτελείται" fi ;; αναγκαστική επαναφόρτωση) /etc/init.d/kdm reload ;; stop) log_action_begin_msg "Διακοπή K Display Manager: kdm" εάν [ ! -f $PIDFILE ]; τότε log_action_end_msg 0 "δεν εκτελείται ($PIDFILE δεν βρέθηκε)" έξοδος 0 αλλιώς DAEMONPID=$(cat $PIDFILE | tr -d '[:blank:]') KILLCOUNT=1 εάν [ ! -e $UPGRADEFILE ]; τότε αν start-stop-daemon --stop --quiet $SSD_ARGS; τότε # δώστε στον χειριστή σήματος της kdm ένα δευτερόλεπτο για να αναπνεύσει ύπνος 1 αλλιώς log_action_cont_msg "δεν εκτελείται" το fi fi ενώ [ $KILLCOUNT -le 5 ]; do if still_running? στη συνέχεια, σκοτώστε $DAEMONPID, αλλιώς, διαλείμμα fi sleep 1 KILLCOUNT=$(( $KILLCOUNT + 1 )) ολοκληρωθεί εάν still_running; τότε log_action_cont_msg "δεν ανταποκρίνεται στο σήμα TERM (pid $DAEMONPID)" αλλιώς rm -f $UPGRADEFILE fi fi log_action_end_msg 0 ;; status) status_of_proc -p "$PIDFILE" "$DAEMON" kdm && έξοδος 0 || έξοδος $;
;; *) echo "Χρήση: /etc/init.d/kdm {έναρξη|διακοπή|επανεκκίνηση|επαναφόρτωση|επιβολή-επαναφόρτωσης|κατάσταση}" έξοδος 1 ;; esac έξοδος 0
Αυτό έχει το εν λόγω αρχείο στον άλλο υπολογιστή, αλλά δεν μπόρεσα να το δω χθες το βράδυ, σας δείχνω την άλλη εναλλακτική μου

Η λύση που βρήκα τότε ήταν να δημιουργήσω το δικό μου σενάριο εκκίνησης, το οποίο χρησιμοποιείται για το KDM ή οποιαδήποτε άλλη εφαρμογή που θέλουμε να ξεκινήσουμε, το οποίο περιέχει αυτό:

#! /bin/sh PATH=/sbin:/bin . /lib/init/vars.sh . /lib/lsb/init-functions περίπτωση "$1" στην αρχή|"") /usr/bin/kdm ;; stop) # No-op ;; *) echo "Χρήση: kdm [start|stop|restart]" >&2 exit 3 ;; ότι C

Τώρα, για να ξεκινήσει αυτόματα το KDM, είναι απαραίτητο να ενεργοποιηθεί αυτό το σενάριο, γι' αυτό χρησιμοποιώ το RCConf . Και αυτό είναι όλο. Ωστόσο, συνιστώ να χρησιμοποιήσετε το αρχικό 


Προσθήκη ως προτιμώμενης πηγής στην Google