Ieri am reinstalat Debian Wheezy de la zero cu depozitul meu personalizat KDE 4.10 și trebuie să spun că, dacă înainte funcționa bine, acum funcționează mult mai bine.
Singura problemă pe care am avut-o a fost cu KDM, care aparent nu s-a instalat deloc corect, pentru că nu a vrut să pornească automat, lucru care mi-a atras atenția pentru că am făcut aceeași instalare, cu aceleași depozite pe celălalt PC și totul a fost lucrand minunat.
În timp ce căutam cauza problemei, am descoperit că fișierul /etc/init.d/kdm nu a fost creat, fișier care ar trebui să conțină următoarele:
#!/bin/sh -e ### BEGIN INIT INFO # Furnizează: 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 # Scurtă descriere: X display manager pentru KDE # Descriere: KDM gestionează o colecție de servere X, care poate fie pe gazda locală sau pe mașinile de la distanță.
### END INIT INFO # /etc/init.d/kdm: porniți sau opriți managerul de afișare X # Scriptul furat inițial din pachetul xdm # # descriere: K Display Manager # # importați funcțiile LSB init . /lib/lsb/init-functions # setează localul dacă [ -r /etc/default/locale ]; apoi . /etc/default/locale exportă LANG LANGUAGE fi # pentru a porni kdm chiar dacă nu este managerul de afișare implicit, schimbați # HEED_DEFAULT_DISPLAY_MANAGER la „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 PIDFILE=/var/pid/kdm. UPGRADEFILE=/var/run/kdm.upgrade setup_config () { # parametri care acceptă personalizarea kdm KDMRC=/etc/kde4/kdm/kdmrc BACKGROUNDRC=/etc/kde4/kdm/backgroundrc # dacă configurația este modificată de kdmtheme sau de alte instrumente , nu faceți magie dacă grep -q "^[[:space:]]*Theme=@@@ToBeReplacedByDesktopBase@@@" ${KDMRC}; apoi KDMOVERRIDEDIR=/etc/default/kdm.d KDMCFGDIR=/var/run/kdm KDMCFG=$KDMCFGDIR/kdmrc BACKGROUNDCFG=$KDMCFGDIR/backgroundrc DEFAULT_KDM_THEME=/usr/share/kde4/apps/karid $DAEMON || ieșire 0 # decomentează, dacă vrei ca auto-logon să fie dependentă de runlevel #test „$runlevel” || { runlevel=`runlevel`; runlevel=${runlevel#* }; } #test „$runlevel” = 4 && ARG=-autolog || ARG=-noautolog # decommentați, dacă doriți o mulțime de informații de depanare în syslogul dvs. #ARG="$ARG -debug 255" # folosim un fișier de configurare principal kdm alternativ ARG="$ARG -config $KDMCFG" # generăm kdm fișierele de configurare genkdmconf --in $KDMCFGDIR 1> /dev/null # suprascriem sursele. run-parts sortează lista într-o ordine previzibilă dacă [ -d "$KDMOVERRIDEDIR" ]; apoi pentru o parte în $(run-parts --list "$KDMOVERRIDEDIR" 2>/dev/null || adevărat); do. „$part” terminat fi # actualizăm fișierele de configurare kdm (numai valorile suprascrise) [ -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 "$LIMBA" ] && sed -i "s|^#\?Language=.*|Language=$LANGUAGE|" $KDMCFG dacă grep -q „^[[:space:]]*Wallpaper=stripes.png” ${BACKGROUNDRC}; apoi [ -n „$IMETAT” ] && [ -e „$IMETAT” ] && sed -i „s|^#\?Tapet=.*|Tapet=`readlink -f $Tapet`|" $BACKGROUNDCFG fi # usetheme este acum activată „în mod implicit”, așa că trebuie să ne asigurăm că Tema nu este invalidă...
sed -i "s|@@@ToBeReplacedByDesktopBase@@@|$DEFAULT_KDM_THEME|" ${KDMCFG} # suprascrierile pentru autologin sunt utile pentru mediul Debian live dacă [ -n "$AUTOLOGINUSER" ]; atunci 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 } # Dacă am actualizat daemonul, nu putem folosi argumentul --exec pentru a # porni-opri-daemonul deoarece inode-ul se va fi modificat. Riscul aici este că # într-o situație în care daemonul a murit, fișierul său pid nu a fost curățat și # un alt proces rulează acum sub acel pid, start-stop-daemon va trimite # semnale către un proces nevinovat. Totuși, acesta pare a fi un caz excepțional.
# C'est la vie!
if [ -e $UPGRADEFILE ]; apoi 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; atunci true else # dacă demonul nu își elimină propriul fișier pid, vom rm -f $PIDFILE $UPGRADEFILE false fi; } caz „$1” la început) setup_config if [ -e $DEFAULT_DISPLAY_MANAGER_FILE ] && [ "$HEED_DEFAULT_DISPLAY_MANAGER" = "adevărat" ] && [ "$(cat $DEFAULT_DISPLAY_MANAGER_FILE)" != "$DAEMON" ]; apoi log_action_msg „Nu se pornește K Display Manager (kdm); nu este managerul de afișare implicit.”
else log_daemon_msg „Pornirea Managerului de afișare K” „kdm” if start-stop-daemon --start --quiet $SSD_ARGS -- $ARG ; then log_end_msg 0 else log_action_end_msg 1 "se rulează deja" fi fi ;; restart) /etc/init.d/kdm stop if [ -f $PIDFILE ]; atunci dacă încă_rulează; apoi exit 1 fi fi /etc/init.d/kdm start ;; reload) log_action_begin_msg „Se reîncarcă configurația K Display Manager...”
if start-stop-daemon --stop --signal 1 --quiet $SSD_ARGS; apoi log_action_end_msg 0 else log_action_end_msg 1 "kdm nu rulează" fi ;; forță-reîncărcare) /etc/init.d/kdm reload ;; stop) log_action_begin_msg „Oprirea Managerului de afișare K: kdm” dacă [ ! -f $PIDFILE ]; apoi log_action_end_msg 0 " nu rulează ($PIDFILE nu a fost găsit)" exit 0 else DAEMONPID=$(cat $PIDFILE | tr -d '[:blank:]') KILLCOUNT=1 dacă [ ! -e $UPGRADEFILE ]; atunci dacă start-stop-daemon --stop --quiet $SSD_ARGS; apoi # acordă-i operatorului de semnal al lui kdm o secundă să-și tragă respirația somnul 1 else log_action_cont_msg "nu rulează" fi fi while [ $KILLCOUNT -le 5 ]; face if still_running; apoi kill $DAEMONPID altfel break fi sleep 1 KILLCOUNT=$(( $KILLCOUNT + 1 )) terminat dacă încă_rulează; apoi log_action_cont_msg " nu răspunde la semnalul TERM (pid $DAEMONPID)" else rm -f $UPGRADEFILE fi fi log_action_end_msg 0 ;; status) status_of_proc -p "$PIDFILE" "$DAEMON" kdm && exit 0 || ieșire din $?
;; *) echo "Utilizare: /etc/init.d/kdm {start|stop|restart|reload|force-reload|status}" exit 1 ;; esac exit 0
Soluția pe care am găsit-o atunci a fost să îmi creez propriul script de pornire, care este folosit pentru KDM sau orice altă aplicație pe care dorim să o pornim, care conține asta:
#! /bin/sh PATH=/sbin:/bin . /lib/init/vars.sh . /lib/lsb/init-functions caz "$1" în start|"") /usr/bin/kdm ;; opriți) # No-op ;; *) echo „Utilizare: kdm [start|stop|restart]” >&2 exit 3 ;; că C
Acum, pentru a porni KDM automat, este necesar să activați acel script, așa că folosesc RCConf pentru asta. Și asta e tot. Totuși, recomand să folosiți scriptul original