I går installerte jeg Debian Wheezy på nytt fra bunnen av med mitt tilpassede KDE 4.10 -repository , og jeg må si at hvis det fungerte bra før, fungerer det mye bedre nå.
Det eneste problemet jeg hadde var med KDM, som tilsynelatende ikke installerte bra i det hele tatt, fordi den ikke ønsket å starte automatisk, noe som fanger oppmerksomheten min fordi jeg gjorde den samme installasjonen, med de samme arkivene på den andre PC-en, og alt var går bra.
Mens jeg lette etter årsaken til problemet, oppdaget jeg at filen /etc/init.d/kdm ikke ble opprettet, som skal inneholde følgende:
#! / bin / sh -e ### BEGIN INIT INFO # Gir: kdm # Påkrevd Start: $ local_fs $ remote_fs # Påkrevd-Stopp: $ local_fs $ remote_fs # Bør-Start: konsollskjerm 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 for KDE # Beskrivelse: KDM administrerer en samling X-servere, som kan være på den lokale verten eller eksterne maskiner.
### END INIT INFO # /etc/init.d/kdm: start eller stopp X-visningsbehandling # Skript opprinnelig stjålet fra xdm-pakken # # beskrivelse: K Display Manager # # importer LSB init-funksjonene. / lib / lsb / init-funksjoner # angi lokalitet hvis [-r / etc / default / locale]; deretter. / etc / default / locale eksport LANG LANGUAGE fi # for å starte kdm selv om det ikke er standard skjermbehandling, endre # HEED_DEFAULT_DISPLAY_MANAGER til "false".
HEED_DEFAULT_DISPLAY_MANAGER = sann DEFAULT_DISPLAY_MANAGER_FILE = / etc / X11 / standard-display-manager PATH = / bin: / usr / bin: / sbin: / usr / sbin DAEMON = / usr / bin / kdm PIDFILE = / var / run / kdm. UPGRADEFILE = / var / run / kdm.upgrade setup_config () {# parametere for å støtte kdm-tilpasning KDMRC = / etc / kde4 / kdm / kdmrc BACKGROUNDRC = / etc / kde4 / kdm / backgroundrc # hvis konfigurasjonen endres av kdmtheme eller andre verktøy , ikke gjør magick hvis grep -q "^ [[: space:]] * Theme = @@@ ToBeReplacedByDesktopBase @@@" $ {KDMRC}; deretter KDMOVERRIDEDIR = / etc / default / kdm.d KDMCFGDIR = / var / run / kdm KDMCFG = $ KDMCFGDIR / kdmrc BACKGROUNDCFG = $ KDMCFGDIR / backgroundrc DEFAULT_KDM_THEME = / kdm / test / kdm / test / share / apps / kdde4 $ DAEMON || exit 0 # uncomment, hvis du vil at automatisk pålogging skal være avhengig av nivå #test "$ runlevel" || {runlevel = `runlevel`; runlevel = $ {runlevel # *}; } #test "$ runlevel" = 4 && ARG = -autolog || ARG = -noautolog # uncomment, hvis du vil ha massevis av feilsøkingsinformasjon i syslog #ARG = "$ ARG -debug 255" # bruker vi en alternativ kdm-hovedkonfigurasjonsfil ARG = "$ ARG -config $ KDMCFG" # genererer vi kdm konfigurasjonsfiler genkdmconf --i $ KDMCFGDIR 1> / dev / null # vi overstyrer kilden. run-parts sorterer listen i en forutsigbar rekkefølge hvis [-d "$ KDMOVERRIDEDIR"]; deretter for del i $ (run-parts --list "$ KDMOVERRIDEDIR" 2> / dev / null || true); c. "$ part" gjort fi # vi oppdaterer kdm-konfigurasjonsfiler (bare overstyrte verdier) [-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}; deretter [-n "$ WALLPAPER"] && [-e "$ WALLPAPER"] && sed -i "s | ^ # \? Wallpaper =. * | Wallpaper =` readlink -f $ WALLPAPER` | " $ BACKGROUNDCFG fi # usetheme er nå på "som standard", så vi må være sikre på at temaet ikke er ugyldig ...
sed -i "s|@@@ToBeReplacedByDesktopBase@@@|$DEFAULT_KDM_THEME|" ${KDMCFG} # Overstyringer for autologin er nyttige for live Debian-miljøer hvis [ -n "$AUTOLOGINUSER" ]; deretter 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 } # Hvis vi oppgraderte daemonen, kan vi ikke bruke --exec-argumentet til å # start-stop-daemonen siden inoden vil ha endret seg. Risikoen her er at # i en situasjon der daemonen døde, pid-filen ikke ble ryddet opp, og # en annen prosess nå kjører under den pid-en, vil start-stop-daemonen sende # signaler til en uskyldig prosess. Dette virker imidlertid som et hjørnetilfelle.
# C'est la vie!
hvis [-e $ UPGRADEFILE]; deretter SSD_ARGS = "- pidfile $ PIDFILE - starter som $ DAEMON" ellers SSD_ARGS = "- pidfile $ PIDFILE --exec $ DAEMON" fi still_running () {if expr "$ (cat / proc / $ DAEMONPID / cmdline 2> / dev / null) ":" $ DAEMON "> / dev / null 2> & 1; så sant ellers # hvis ikke demonen fjerner sin egen pidfil, vil vi rm -f $ PIDFILE $ UPGRADEFILE false fi; } tilfelle "$ 1" i start) setup_config if [-e $ DEFAULT_DISPLAY_MANAGER_FILE] && ["$ HEED_DEFAULT_DISPLAY_MANAGER" = "true"] && ["$ (cat $ DEFAULT_DISPLAY_MANAGER_FILE)"! = "$ DAEMON"; deretter log_action_msg "Starter ikke K Display Manager (kdm); det er ikke standard skjermbehandling."
annet log_daemon_msg "Starter K Display Manager" "kdm" hvis start-stopp-daemon --start - stille $ SSD_ARGS - $ ARG; deretter log_end_msg 0 annet log_action_end_msg 1 "kjører allerede" fi fi ;; start på nytt) /etc/init.d/kdm stopp hvis [-f $ PIDFILE]; så hvis fremdeles_ løper; deretter avslutt 1 fi fi /etc/init.d/kdm start ;; reload) log_action_begin_msg "Last inn K Display Manager-konfigurasjon på nytt ..."
hvis start-stopp-daemon --stop --signal 1 - stille $ SSD_ARGS; deretter log_action_end_msg 0 annet log_action_end_msg 1 "kdm kjører ikke" fi ;; kraft-reload) /etc/init.d/kdm reload ;; stopp) log_action_begin_msg "Stopper K Display Manager: kdm" hvis [! -f $ PIDFILE]; deretter log_action_end_msg 0 "kjører ikke ($ PIDFILE ikke funnet)" avslutter 0 annet DAEMONPID = $ (cat $ PIDFILE | tr -d '[: blank:]') KILLCOUNT = 1 hvis [! -e $ UPGRADEFILE]; så hvis start-stop-daemon --stop --quiet $ SSD_ARGS; deretter # gi kdms signalbehandler et sekund for å få pusten til å sove 1 annet log_action_cont_msg "kjører ikke" fi fi mens [$ KILLCOUNT -le 5]; gjør hvis fortsatt_kjøring; drep deretter $ DAEMONPID ellers pause fi søvn 1 KILLCOUNT = $ (($ KILLCOUNT + 1)) gjort hvis fortsatt kjører; deretter log_action_cont_msg "ikke svarer på TERM-signal (pid $ DAEMONPID)" ellers rm -f $ UPGRADEFILE fi fi log_action_end_msg 0 ;; status) status_of_proc -p "$ PIDFILE" "$ DAEMON" kdm && exit 0 || gå ut av $?
;; *) echo "Bruk: /etc/init.d/kdm {start|stopp|omstart|last inn på nytt|tvunget-lasting|status}" exit 1 ;; esac exit 0
Løsningen jeg fant da var å lage mitt eget oppstartsskript, som brukes til KDM eller andre applikasjoner som vi vil starte, som inneholder dette:
#! / bin / sh PATH = / sbin: / bin. /lib/init/vars.sh. / lib / lsb / init-funksjoner tilfelle "$ 1" i start | "") / usr / bin / kdm ;; stopp) # No-op ;; *) ekko "Bruk: kdm [start | stopp | start på nytt]"> & 2 avkjørsel 3 ;; at C
For å starte KDM automatisk må man aktivere det skriptet, så jeg bruker RCConf til det. Og det er det. Jeg anbefaler imidlertid å bruke den originale