Igår installerade jag om min Debian Wheezy från grunden med mitt anpassade KDE 4.10 -arkiv och jag måste säga att om det fungerade bra förut, så fungerar det mycket bättre nu.
Det enda problemet jag hade var med KDM, som uppenbarligen inte installerades bra alls, för att den inte ville starta automatiskt, något som fångar min uppmärksamhet eftersom jag gjorde samma installation, med samma arkiv på den andra datorn och allt var går bra.
När jag sökte efter orsaken till problemet upptäckte jag att filen /etc/init.d/kdm inte skapades, vilken borde innehålla följande:
#! / bin / sh -e ### BEGIN INIT INFO # Tillhandahåller: kdm # Obligatorisk start: $ local_fs $ remote_fs # Obligatorisk-stopp: $ local_fs $ remote_fs # Should-Start: konsolskärm kbd acpid dbus hal krb5- kdc # Should-Stop: console-screen kbd # Standard-Start: 2 3 4 5 # Standard-Stop: 0 1 6 # Short-Description: X display manager för KDE # Beskrivning: KDM hanterar en samling X-servrar, som kan vara på den lokala värden eller fjärrmaskiner.
### SLUT INIT INFO # /etc/init.d/kdm: starta eller stoppa X-displayhanteraren # Skript som ursprungligen stulits från xdm-paketet # # beskrivning: K Display Manager # # importera LSB init-funktionerna. / lib / lsb / init-functions # ställ in lokal om [-r / etc / default / locale]; sedan. / etc / default / localexport LANG LANGUAGE fi # för att starta kdm även om det inte är standardvisningshanteraren, ändra # HEED_DEFAULT_DISPLAY_MANAGER till "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 / run / kdm. UPGRADEFILE = / var / run / kdm.upgrade setup_config () {# parametrar för att stödja kdm-anpassning KDMRC = / etc / kde4 / kdm / kdmrc BACKGROUNDRC = / etc / kde4 / kdm / backgroundrc # om konfigurationen ändras av kdmtheme eller andra verktyg , gör inte magick om grep -q "^ [[: space:]] * Theme = @@@ ToBeReplacedByDesktopBase @@@" $ {KDMRC}; sedan KDMOVERRIDEDIR = / etc / default / kdm.d KDMCFGDIR = / var / run / kdm KDMCFG = $ KDMCFGDIR / kdmrc BACKGROUNDCFG = $ KDMCFGDIR / backgroundrc DEFAULT_KDM_THEME = / kdm / test / apps / test kdde4 / teman $ DAEMON || avsluta 0 # uncomment, om du vill att automatisk inloggning ska vara körnivåberoende #test "$ runlevel" || {runlevel = `runlevel`; runlevel = $ {runlevel # *}; } #test "$ runlevel" = 4 && ARG = -autolog || ARG = -noautolog # uncomment, om du vill ha massor av felsökningsinformation i din syslog #ARG = "$ ARG -debug 255" # använder vi en alternativ kdm-huvudkonfigurationsfil ARG = "$ ARG -config $ KDMCFG" # vi genererar kdm konfigurationsfiler genkdmconf --in $ KDMCFGDIR 1> / dev / null # vi åsidosätter källan. run-parts sorterar listan i en förutsägbar ordning om [-d "$ KDMOVERRIDEDIR"]; sedan för del i $ (run-parts --list "$ KDMOVERRIDEDIR" 2> / dev / null || true); c. "$ part" gjort fi # vi uppdaterar kdm-konfigurationsfiler (endast åsidosatta värden) [-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}; sedan [-n "$ WALLPAPER"] && [-e "$ WALLPAPER"] && sed -i "s | ^ # \? Wallpaper =. * | Wallpaper =` readlink -f $ WALLPAPER` | " $ BACKGROUNDCFG fi # usetheme är nu på "som standard" så vi måste vara säker på att temat inte är ogiltigt ...
sed -i "s|@@@ToBeReplacedByDesktopBase@@@|$DEFAULT_KDM_THEME|" ${KDMCFG} # Åsidosättningar för autologin är användbara för live Debian-miljöer om [ -n "$AUTOLOGINUSER" ]; sedan 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 } # Om vi har uppgraderat daemonen kan vi inte använda argumentet --exec för att # start-stop-daemon eftersom inoden då har ändrats. Risken här är att # i en situation där daemonen dog, dess pid-fil inte rensades, och # någon annan process nu körs under den pid:en, kommer start-stop-daemonen att skicka # signaler till en oskyldig process. Detta verkar dock vara ett hörnfall.
# C'est la vie!
om [-e $ UPGRADEFILE]; sedan SSD_ARGS = "- pidfile $ PIDFILE - startas $ DAEMON" annars SSD_ARGS = "- pidfile $ PIDFILE --exec $ DAEMON" fi still_running () {if expr "$ (cat / proc / $ DAEMONPID / cmdline 2> / dev / null) ":" $ DAEMON "> / dev / null 2> & 1; sedan sant annat # om daemon inte tar bort sin egen pidfil, kommer vi rm -f $ PIDFILE $ UPGRADEFILE false fi; } fall "$ 1" i start) setup_config if [-e $ DEFAULT_DISPLAY_MANAGER_FILE] && ["$ HEED_DEFAULT_DISPLAY_MANAGER" = "true"] && ["$ (cat $ DEFAULT_DISPLAY_MANAGER_FILE)"! = "$ DAEMON"; sedan log_action_msg "Startar inte K Display Manager (kdm). Det är inte standardhanteraren."
annars log_daemon_msg "Startar K Display Manager" "kdm" om start-stop-daemon --start --quiet $ SSD_ARGS - $ ARG; sedan log_end_msg 0 annat log_action_end_msg 1 "redan igång" fi fi ;; starta om) /etc/init.d/kdm stoppa om [-f $ PIDFILE]; då om fortfarande_körning; avsluta sedan 1 fi fi /etc/init.d/kdm start ;; ladda om) log_action_begin_msg "Ladda om K Display Manager-konfiguration ..."
om start-stop-daemon --stop --signal 1 --quiet $ SSD_ARGS; sedan log_action_end_msg 0 annat log_action_end_msg 1 "kdm körs inte" fi ;; force-reload) /etc/init.d/kdm reload ;; stopp) log_action_begin_msg "Stoppar K Display Manager: kdm" om [! -f $ PIDFILE]; sedan log_action_end_msg 0 "körs inte ($ PIDFILE hittades inte)" avsluta 0 annat DAEMONPID = $ (cat $ PIDFILE | tr -d '[: blank:]') KILLCOUNT = 1 om [! -e $ UPGRADEFILE]; sedan om start-stop-daemon --stop --quiet $ SSD_ARGS; sedan # ge kdms signalhanterare en sekund för att få andan att sova 1 annat log_action_cont_msg "kör inte" fi fi medan [$ KILLCOUNT -le 5]; gör om fortfarande_körning; döda sedan $ DAEMONPID annars bryta fi-sömn 1 KILLCOUNT = $ (($ KILLCOUNT + 1)) gjort om du fortfarande kör; sedan log_action_cont_msg "svarar inte på TERM-signal (pid $ DAEMONPID)" annars rm -f $ UPGRADEFILE fi fi log_action_end_msg 0 ;; status) status_of_proc -p "$ PIDFILE" "$ DAEMON" kdm && exit 0 || avsluta $?
;; *) echo "Användning: /etc/init.d/kdm {start|stopp|omstart|ladda om|tvångsladda|status}" exit 1 ;; esac exit 0
Lösningen jag hittade då var att skapa mitt eget startskript, som används för KDM eller andra applikationer som vi vill starta, som innehåller detta:
#! / bin / sh PATH = / sbin: / bin. /lib/init/vars.sh. / lib / lsb / init-funktioner fall "$ 1" i start | "") / usr / bin / kdm ;; stopp) # No-op ;; *) eko "Användning: kdm [start | stopp | starta om]"> & 2 avsluta 3 ;; att C
För att starta KDM automatiskt måste man aktivera det skriptet, så jag använder RCConf för det. Och det är allt. Jag rekommenderar dock att man använder originalet