Script til start af KDM (hvis det ikke gør det)

Debianlight_kdm

I går geninstallerede jeg min Debian Wheezy fra bunden med mit brugerdefinerede KDE 4.10- repository , og jeg må sige, at hvis det fungerede godt før, fungerer det meget bedre nu.

Det eneste problem, jeg havde, var med KDM, som tilsyneladende slet ikke installerede godt, fordi den ikke ønskede at starte automatisk, noget der fanger min opmærksomhed, fordi jeg gjorde den samme installation med de samme arkiver på den anden pc og alt gik godt .

Mens jeg søgte efter årsagen til problemet, opdagede jeg, at filen /etc/init.d/kdm ikke blev oprettet, som burde indeholde følgende:

#! / bin / sh -e ### BEGIN INIT INFO # Giver: kdm # Påkrævet-start: $ local_fs $ remote_fs # Påkrævet-stop: $ local_fs $ remote_fs # Bør-Start: konsol-skærm kbd acpid dbus hal krb5- kdc # Bør-Stop: konsol-skærm kbd # Standard-Start: 2 3 4 5 # Standard-Stop: 0 1 6 # Kort beskrivelse: X display manager til KDE # Beskrivelse: KDM administrerer en samling af X-servere, som muligvis være på den lokale vært eller eksterne maskiner.
### END INIT INFO # /etc/init.d/kdm: start eller stop X display manager # Script oprindeligt stjålet fra xdm-pakken # # beskrivelse: K Display Manager # # importer LSB init-funktionerne. / lib / lsb / init-funktioner # indstil lokalitet, hvis [-r / etc / default / locale]; derefter. / etc / default / locale eksport LANG LANGUAGE fi # for at starte kdm, selvom det ikke er standard skærmhåndtering, skal du ændre # HEED_DEFAULT_DISPLAY_MANAGER til "false".
HEED_DEFAULT_DISPLAY_MANAGER = sand 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 () {# parametre til understøttelse af kdm-tilpasning KDMRC = / etc / kde4 / kdm / kdmrc BACKGROUNDRC = / etc / kde4 / kdm / backgroundrc # hvis konfiguration ændres af kdmtheme eller andre værktøjer , gør ikke magick hvis grep -q "^ [[: space:]] * Theme = @@@ ToBeReplacedByDesktopBase @@@" $ {KDMRC}; derefter KDMOVERRIDEDIR = / etc / default / kdm.d KDMCFGDIR = / var / run / kdm KDMCFG = $ KDMCFGDIR / kdmrc BACKGROUNDCFG = $ KDMCFGDIR / backgroundrc DEFAULT_KDM_THEME = / kdm / test / kdm / test $ DAEMON || exit 4 # uncomment, hvis du ønsker, at automatisk logon skal være kørselsniveauafhængig #test "$ runlevel" || {runlevel = `runlevel`; runlevel = $ {runlevel # *}; } #test "$ runlevel" = 0 && ARG = -autolog || ARG = -noautolog # uncomment, hvis du vil have masser af debug info i din syslog #ARG = "$ ARG -debug 4" # bruger vi en alternativ kdm master konfigurationsfil ARG = "$ ARG -config $ KDMCFG" # genererer vi kdm konfigurationsfiler genkdmconf --i $ KDMCFGDIR 255> / dev / null # vi kildeoverstyringer. run-parts sorterer listen i en forudsigelig rækkefølge, hvis [-d "$ KDMOVERRIDEDIR"]; derefter for del i $ (run-parts --list "$ KDMOVERRIDEDIR" 2> / dev / null || true); c. "$ part" gjort fi # vi opdaterer kdm-konfigurationsfiler (kun tilsidesatte værdier) [-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 hvis grep -q "^ [[: space:]] * Wallpaper = stripes.png" $ {BACKGROUNDRC}; derefter [-n "$ WALLPAPER"] && [-e "$ WALLPAPER"] && sed -i "s | ^ # \? Wallpaper =. * | Wallpaper =` readlink -f $ WALLPAPER` | " $ BACKGROUNDCFG fi # usetheme er nu "som standard", så vi skal være sikre på, at temaet ikke er ugyldigt ...
sed -i "s|@@@ToBeReplacedByDesktopBase@@@|$DEFAULT_KDM_THEME|" ${KDMCFG} # autologin-overrides er nyttige til live Debian-miljøer 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 } # Hvis vi har opgraderet daemonen, kan vi ikke bruge --exec-argumentet til # start-stop-daemon, da inoden vil være ændret.  Risikoen her er, at # i en situation hvor daemonen døde, dens pid-fil ikke blev ryddet op, og # en anden proces nu kører under den pid, vil start-stop-daemonen sende # signaler til en uskyldig proces.  Dette virker dog som et hjørnetilfælde.
# Sådan er livet!
hvis [-e $ UPGRADEFILE]; derefter 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å sandt andet # hvis dæmonen ikke fjerner sin egen pidfil, vil vi rm -f $ PIDFILE $ UPGRADEFILE false fi; } sag "$ 1" i start) setup_config hvis [-e $ DEFAULT_DISPLAY_MANAGER_FILE] && ["$ HEED_DEFAULT_DISPLAY_MANAGER" = "sand"] && ["$ (kat $ DEFAULT_DISPLAY_MANAGER_FILE)"! = "$ DAEMON"; derefter log_action_msg "Starter ikke K Display Manager (kdm); det er ikke standard skærmmanager."
ellers log_daemon_msg "Start K Display Manager" "kdm" hvis start-stop-dæmon --start - stille $ SSD_ARGS - $ ARG; derefter log_end_msg 0 andet log_action_end_msg 1 "kører allerede" fi fi ;; genstart) /etc/init.d/kdm stop hvis [-f $ PIDFILE]; så hvis stadig_ løber; derefter afslutte 1 fi fi /etc/init.d/kdm start ;; reload) log_action_begin_msg "Genindlæsning af K Display Manager-konfiguration ..."
hvis start-stop-dæmon --stop --signal 1 - stille $ SSD_ARGS; derefter log_action_end_msg 0 andet log_action_end_msg 1 "kdm kører ikke" fi ;; force-reload) /etc/init.d/kdm reload ;; stop) log_action_begin_msg "Stop K Display Manager: kdm" hvis [! -f $ PIDFILE]; derefter log_action_end_msg 0 "kører ikke ($ PIDFILE ikke fundet)" exit 0 ellers DAEMONPID = $ (cat $ PIDFILE | tr -d '[: blank:]') KILLCOUNT = 1 hvis [! -e $ UPGRADEFILE]; så hvis start-stop-dæmon --stop - stille $ SSD_ARGS; derefter # give kdms signalhåndterer et sekund for at få vejret fra at sove 1 andet log_action_cont_msg "kører ikke" fi fi, mens [$ KILLCOUNT -le 5]; gør hvis stadig_kører; dræb derefter $ DAEMONPID ellers pause fi søvn 1 KILLCOUNT = $ (($ KILLCOUNT + 1)) gjort, hvis der stadig kører; derefter log_action_cont_msg "svarer ikke 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 || afslutte $?
;; *) echo "Brug: /etc/init.d/kdm {start|stop|genstart|genindlæs|tvungen-genindlæsning|status}" exit 1 ;; esac exit 0
Dette er, hvad den nævnte fil har på den anden pc, men jeg kunne ikke se den i går aftes, jeg viser dig mit andet alternativ

Den løsning, jeg fandt dengang, var at oprette mit eget opstarts script, som bruges til KDM eller ethvert andet program, som vi vil starte, og som indeholder dette:

#! / bin / sh PATH = / sbin: / bin. /lib/init/vars.sh. / lib / lsb / init-funktionssag "$ 1" i start | "") / usr / bin / kdm ;; stop) # No-op ;; *) ekko "Brug: kdm [start | stop | genstart]"> & 2 afslut 3 ;; at C

For at starte KDM automatisk skal man aktivere det script, så jeg bruger RCConf til det. Og det er det. Jeg anbefaler dog at bruge den originale 


Tilføj som foretrukken kilde i Google