Script om KDM te starten (voor het geval dat niet het geval is)

debianlight_kdm

Gisteren heb ik mijn Debian Wheezy helemaal opnieuw geïnstalleerd met mijn aangepaste KDE 4.10- repository en ik moet zeggen dat het, als het voorheen al goed werkte, nu nog veel beter werkt.

Het enige probleem dat ik had was met KDM, dat blijkbaar helemaal niet goed installeerde, omdat het niet automatisch wilde starten, iets dat mijn aandacht trok omdat ik dezelfde installatie deed, met dezelfde repositories op de andere pc en alles ging geweldig.

Tijdens mijn zoektocht naar de oorzaak van het probleem ontdekte ik dat het bestand /etc/init.d/kdm niet was aangemaakt, terwijl het de volgende inhoud zou moeten hebben:

#!/bin/sh -e ### BEGIN INIT INFO # Biedt: kdm # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Should-Start: console-screen kbd acpid dbus hal krb5-kdc # Should-Stop: console-screen kbd # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Korte beschrijving: X-displaymanager voor KDE # Beschrijving: KDM beheert een verzameling X-servers, die zich op de lokale host of op externe machines kunnen bevinden.
### END INIT INFO # /etc/init.d/kdm: start of stop de X-displaymanager # Script oorspronkelijk gestolen uit het xdm-pakket # # description: K Display Manager # # importeer de LSB init-functies . /lib/lsb/init-functions # stel de landinstelling in als [ -r /etc/default/locale]; Dan . /etc/default/locale export LANG LANGUAGE fi # om kdm te starten, zelfs als het niet de standaard weergavemanager is, verander # HEED_DEFAULT_DISPLAY_MANAGER in "false".
HEED_DEFAULT_DISPLAY_MANAGER=waar DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager PATH=/bin:/usr/bin:/sbin:/usr/sbin DAEMON=/usr/bin/kdm PIDFILE=/var/run/kdm.pid UPGRADEFILE=/var/run/kd m.upgrade setup_config () { # parameters ter ondersteuning van kdm-aanpassing KDMRC=/etc/kde4/kdm/kdmrc BACKGROUNDRC=/etc/kde4/kdm/backgroundrc # als de configuratie is gewijzigd door kdmtheme of andere tools, gebruik geen magie als grep -q "^[[:space:]]*Theme=@ @@ToBeReplacedByDesktopBase@@@" ${KDMRC}; dan KDMOVERRIDEDIR=/etc/default/kdm.d KDMCFGDIR=/var/run/kdm KDMCFG=$KDMCFGDIR/kdmrc BACKGROUNDCFG=$KDMCFGDIR/backgroundrc DEFAULT_KDM_THEME=/usr/share/kde4/apps/kdm/themes/ariya test -x $DAEMON || exit 0 # uncomment, als u wilt dat automatische aanmelding runlevel-afhankelijk is #test "$runlevel" || { runlevel=`runlevel`; runlevel=${runlevel#* }; } #test "$runlevel" = 4 && ARG=-autolog || ARG=-noautolog # uncomment, als je heel veel debug-info in je syslog wilt #ARG="$ARG -debug 255" # we gebruiken een alternatief kdm-hoofdconfiguratiebestand ARG="$ARG -config $KDMCFG" # we genereren kdm-configuratiebestanden genkdmconf --in $KDMCFGDIR 1> /dev/null # we source overrides. run-parts sorteert de lijst in een voorspelbare volgorde als [ -d "$KDMOVERRIDEDIR" ]; dan voor deel in $(run-parts --list "$KDMOVERRIDEDIR" 2>/dev/null || true); Doen . "$part" gedaan bijv. # we updaten kdm-configuratiebestanden (alleen overschreven waarden) [ -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 "^[[:spatie:]]*Wallpaper=stripes.png" ${BACKGROUNDRC}; dan [ -n "$WALLPAPER" ] && [ -e "$WALLPAPER" ] && sed -i "s|^#\?Wallpaper=.*|Wallpaper=`readlink -f $WALLPAPER`|" $BACKGROUNDCFG fi # usetheme staat nu "standaard" aan, dus we moeten er zeker van zijn dat het thema niet ongeldig is ...
sed -i "s|@@@ToBeReplacedByDesktopBase@@@|$DEFAULT_KDM_THEME|" ${KDMCFG} # autologin-overschrijvingen zijn handig voor een live Debian-omgeving 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 } # Als we de daemon hebben geüpgraded, kunnen we het --exec argument niet gebruiken voor # start-stop-daemon omdat de inode is gewijzigd.  Het risico hierbij is dat # in een situatie waarin de daemon is overleden, zijn pid-bestand niet is opgeruimd en # er nu een ander proces onder die pid draait, start-stop-daemon signalen naar een onschuldig proces stuurt.  Dit lijkt echter een uitzonderingsgeval.
# Dat is het leven!
if [ -e $UPGRADEFILE ]; then SSD_ARGS="--pidfile $PIDFILE --startas $DAEMON" else SSD_ARGS="--pidfile $PIDFILE --exec $DAEMON" fi still_running () { if expr "$(cat /proc/$DAEMONPID/cmdline 2> /dev/null)" : "$DAEMON" > /dev/null 2>&1; then true else # als de daemon zijn eigen pid-bestand niet verwijdert, zullen we 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)" != "$DAEMON" ]; then log_action_msg "K Display Manager (kdm) start niet; het is niet de standaard display manager."
else log_daemon_msg "K Display Manager starten" "kdm" if start-stop-daemon --start --quiet $SSD_ARGS -- $ARG ; then log_end_msg 0 else log_action_end_msg 1 "al actief" fi fi ;; herstart) /etc/init.d/kdm stop if [ -f $PIDFILE ]; dan als still_running; sluit dan af 1 fi fi /etc/init.d/kdm start ;; reload) log_action_begin_msg "K Display Manager-configuratie opnieuw laden..."
if start-stop-daemon --stop --signal 1 --quiet $SSD_ARGS; then log_action_end_msg 0 else log_action_end_msg 1 "kdm werkt niet" fi ;; geforceerd herladen) /etc/init.d/kdm herladen ;; stop) log_action_begin_msg "K Display Manager stoppen: kdm" als [ ! -f $PIDFILE]; then log_action_end_msg 0 " not running ($PIDFILE not found)" exit 0 else DAEMONPID=$(cat $PIDFILE | tr -d '[:blank:]') KILLCOUNT=1 if [ ! -e $UPGRADEFILE]; dan als start-stop-daemon --stop --quiet $SSD_ARGS; dan # geef de signaalbehandelaar van kdm even de tijd om op adem te komen sleep 1 else log_action_cont_msg " werkt niet" fi fi while [ $KILLCOUNT -le 5 ]; doe als still_running; kill dan $DAEMONPID else break fi sleep 1 KILLCOUNT=$(($KILLCOUNT + 1 )) done if still_running; then log_action_cont_msg "reageert niet op TERM-signaal (pid $DAEMONPID)" else rm -f $UPGRADEFILE fi fi log_action_end_msg 0;; status) status_of_proc -p "$PIDFILE" "$DAEMON" kdm && exit 0 || uitgang $?
;; *) echo "Gebruik: /etc/init.d/kdm {start|stop|herstart|herladen|geforceerd herladen|status}" exit 1 ;; esac exit 0
Dit is wat het bestand op de andere pc heeft, maar ik kon het gisteravond niet zien, ik laat je mijn andere alternatief zien

De oplossing die ik toen vond, was om mijn eigen opstartscript te maken, dat wordt gebruikt voor KDM of een andere applicatie die we willen starten, die dit bevat:

#! /bin/sh PAD=/sbin:/bin . /lib/init/vars.sh . /lib/lsb/init-functions hoofdletter "$1" in start|"") /usr/bin/kdm ;; stop) # No-op ;; *) echo "Gebruik: kdm [start|stop|herstart]" >&2 exit 3 ;; dat C

Om KDM automatisch te starten, moet dat script geactiveerd worden, dus daarvoor gebruik ik RCConf . En dat is alles. Ik raad echter aan om de originele versie te gebruiken.


Voeg dit toe als voorkeursbron in Google.