Gestern habe ich mein Debian Wheezy komplett neu installiert, mit meinem eigenen KDE 4.10- Repository , und ich muss sagen, dass es, wenn es vorher schon gut funktioniert hat, jetzt noch viel besser läuft.
Das einzige Problem, das ich hatte, war mit KDM, das anscheinend überhaupt nicht gut installiert wurde, weil es nicht automatisch gestartet werden wollte, was meine Aufmerksamkeit auf sich zieht, weil ich dieselbe Installation mit denselben Repositorys auf dem anderen PC durchgeführt habe und alles war läuft großartig.
Bei der Suche nach der Ursache des Problems stellte ich fest, dass die Datei /etc/init.d/kdm nicht erstellt wurde, die Folgendes enthalten sollte:
#! / bin / sh -e ### BEGIN INIT INFO # Bietet: kdm # Erforderlicher Start: $ local_fs $ remote_fs # Erforderlicher Stopp: $ local_fs $ remote_fs # Sollte-Start: Konsolenbildschirm kbd acpid dbus hal krb5- kdc # Sollte-Stopp: Konsolenbildschirm kbd # Standard-Start: 2 3 4 5 # Standard-Stopp: 0 1 6 # Kurzbeschreibung: X-Display-Manager für KDE # Beschreibung: KDM verwaltet eine Sammlung von X-Servern, die möglicherweise auf dem lokalen Host oder auf Remotecomputern sein.
### END INIT INFO # /etc/init.d/kdm: Starten oder Stoppen des X-Display-Managers # Skript, das ursprünglich aus dem xdm-Paket gestohlen wurde # # Beschreibung: K Display Manager # # Importieren Sie die LSB-Init-Funktionen. / lib / lsb / init-functions # setze das Gebietsschema, wenn [-r / etc / default / locale]; dann. / etc / default / locale export LANG LANGUAGE fi # um kdm zu starten, auch wenn es nicht der Standardanzeigemanager ist, ändern Sie # HEED_DEFAULT_DISPLAY_MANAGER in "false".
HEED_DEFAULT_DISPLAY_MANAGER = true DEFAULT_DISPLAY_MANAGER_FILE = / etc / X11 / Standardanzeigemanager PATH = / bin: / usr / bin: / sbin: / usr / sbin DAEMON = / usr / bin / kdm UPGRADEFILE = / var / run / kdm.upgrade setup_config () {# Parameter zur Unterstützung der kdm-Anpassung KDMRC = / etc / kde4 / kdm / kdmrc BACKGROUNDRC = / etc / kde4 / kdm / backgroundrc #, wenn die Konfiguration durch kdmtheme oder andere Tools geändert wird , mach keine Magie, wenn grep -q "^ [[: space:]] * Theme = @@@ ToBeReplacedByDesktopBase @@@" $ {KDMRC}; dann ist KDMOVERRIDEDIR = / etc / default / kdm.d KDMCFGDIR = / var / run / kdm KDMCFG = $ KDMCFGDIR / kdmrc kdde4 / theme $ DAEMON || Beenden Sie 0 # auskommentieren, wenn die automatische Anmeldung vom Runlevel abhängig sein soll #test "$ runlevel" || {runlevel = `runlevel`; Runlevel = $ {Runlevel # *}; } #test "$ runlevel" = 4 && ARG = -autolog || ARG = -noautolog # Kommentar, wenn Sie Tonnen von Debug-Informationen in Ihrem Syslog haben möchten #ARG = "$ ARG -debug 255" # verwenden wir eine alternative kdm-Master-Konfigurationsdatei ARG = "$ ARG -config $ KDMCFG" # wir generieren kdm Konfigurationsdateien genkdmconf --in $ KDMCFGDIR 1> / dev / null # Wir geben Überschreibungen an. run-parts sortiert die Liste in einer vorhersehbaren Reihenfolge, wenn [-d "$ KDMOVERRIDEDIR"]; dann für einen Teil in $ (run-parts --list "$ KDMOVERRIDEDIR" 2> / dev / null || true); c. "$ part" erledigt fi # wir aktualisieren kdm Konfigurationsdateien (nur überschriebene Werte) [-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}; dann [-n "$ WALLPAPER"] && [-e "$ WALLPAPER"] && sed -i "s | ^ # \? Wallpaper =. * | Wallpaper =` readlink -f $ WALLPAPER` | " $ BACKGROUNDCFG fi # usetheme ist jetzt "standardmäßig" aktiviert, daher müssen wir sicherstellen, dass das Theme nicht ungültig ist ...
sed -i "s|@@@ToBeReplacedByDesktopBase@@@|$DEFAULT_KDM_THEME|" ${KDMCFG} # Autologin-Überschreibungen sind für Live-Debian-Umgebungen nützlich if [ -n "$AUTOLOGINUSER" ]; then 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 } # Wenn wir den Daemon aktualisiert haben, können wir das Argument --exec für # start-stop-daemon nicht verwenden, da sich der Inode geändert hat. Das Risiko hierbei ist, dass in einer Situation, in der der Daemon abstürzt, seine PID-Datei nicht bereinigt wird und nun ein anderer Prozess unter dieser PID läuft, start-stop-daemon Signale an einen unschuldigen Prozess sendet. Dies scheint jedoch ein Sonderfall zu sein.
# So ist das Leben!
if [-e $ UPGRADEFILE]; dann SSD_ARGS = "- pidfile $ PIDFILE --startas $ DAEMON" sonst SSD_ARGS = "- pidfile $ PIDFILE --exec $ DAEMON" fi still_running () {wenn Ausdruck "$ (cat / proc / $ DAEMONPID / cmdline 2> / dev / null) ":" $ DAEMON "> / dev / null 2> & 1; dann true else # Wenn der Daemon seine eigene PID-Datei nicht entfernt, wird rm -f $ PIDFILE $ UPGRADEFILE false fi; } case "$ 1" in start) setup_config if [-e $ DEFAULT_DISPLAY_MANAGER_FILE] && ["$ HEED_DEFAULT_DISPLAY_MANAGER" = "true"] && ["$ (cat $ DEFAULT_DISPLAY_MANAGER_FILE)"! " dann log_action_msg "K Display Manager (kdm) wird nicht gestartet; es ist nicht der Standard-Display Manager."
sonst log_daemon_msg "K Display Manager wird gestartet" "kdm" wenn start-stop-daemon --start --quiet $ SSD_ARGS - $ ARG; dann log_end_msg 0 sonst log_action_end_msg 1 "läuft bereits" fi fi ;; Neustart) /etc/init.d/kdm stop if [-f $ PIDFILE]; dann wenn still_running; dann beenden Sie 1 fi fi /etc/init.d/kdm start ;; reload) log_action_begin_msg "K Display Manager-Konfiguration neu laden ..."
if start-stop-daemon --stop --signal 1 --quiet $ SSD_ARGS; dann log_action_end_msg 0 sonst log_action_end_msg 1 "kdm läuft nicht" fi ;; Force-Reload) /etc/init.d/kdm Reload ;; stop) log_action_begin_msg "K Display Manager stoppen: kdm" wenn [! -f $ PIDFILE]; dann log_action_end_msg 0 "läuft nicht ($ PIDFILE nicht gefunden)" exit 0 else DAEMONPID = $ (cat $ PIDFILE | tr -d '[: blank:]') KILLCOUNT = 1 if [! -e $ UPGRADEFILE]; dann wenn start-stop-daemon --stop --quiet $ SSD_ARGS; dann # gib dem Signalhandler von kdm eine Sekunde, um zu Atem zu kommen 1 else log_action_cont_msg fi fi "läuft nicht" während [$ KILLCOUNT -le 5]; tun, wenn still_running; töte dann $ DAEMONPID, sonst brich den Schlaf ab 1 KILLCOUNT = $ (($ KILLCOUNT + 1)) erledigt, wenn still_running; dann log_action_cont_msg "reagiert nicht auf TERM-Signal (pid $ DAEMONPID)" sonst rm -f $ UPGRADEFILE fi fi log_action_end_msg 0 ;; status) status_of_proc -p "$ PIDFILE" "$ DAEMON" kdm && exit 0 || $ verlassen?
;; *) echo "Usage: /etc/init.d/kdm {start|stop|restart|reload|force-reload|status}" exit 1 ;; esac exit 0
Die Lösung, die ich damals gefunden habe, bestand darin, ein eigenes Startskript zu erstellen, das für KDM oder jede andere Anwendung verwendet wird, die wir starten möchten und die Folgendes enthält:
#! / bin / sh PATH = / sbin: / bin. /lib/init/vars.sh. / lib / lsb / init-functions case "$ 1" in start | "") / usr / bin / kdm ;; stop) # No-op ;; *) echo "Verwendung: kdm [Start | Stopp | Neustart]"> & 2 exit 3 ;; dieses C
Um KDM automatisch zu starten, muss dieses Skript aktiviert werden. Dafür verwende ich RCConf . Das war's. Ich empfehle jedoch die Verwendung des Originals.