Вчера преинсталирах моя Debian Wheezy от нулата с моя персонализиран KDE 4.10 репозиторий и трябва да кажа, че ако преди работеше добре, сега работи много по-добре.
Единственият проблем, който имах, беше с KDM, който очевидно изобщо не се инсталира добре, защото не искаше да стартира автоматично, нещо, което привлича вниманието ми, защото направих същата инсталация, със същите хранилища на другия компютър и всичко вървеше чудесно .
Докато търсех причината за проблема, открих, че файлът /etc/init.d/kdm не е създаден, а той би трябвало да съдържа следното:
#! / bin / sh -e ### НАЧАЛО НАЧАЛО ИНФОРМАЦИЯ # Предоставя: kdm # Задължително-Старт: $ local_fs $ remote_fs # Задължително-Стоп: $ local_fs $ remote_fs # Трябва-Старт: екран на конзолата kbd acpid dbus hal krb5- kdc # Should-Stop: console-screen kbd # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Кратко описание: X display manager for KDE # Описание: KDM управлява колекция от X сървъри, които могат да бъде на локален хост или отдалечени машини.
### END INIT INFO # /etc/init.d/kdm: стартиране или спиране на X дисплейния мениджър # Скрипт, първоначално откраднат от пакета xdm # # описание: K Display Manager # # импортиране на LSB init функции. / lib / lsb / init-functions # задайте локала, ако [-r / etc / default / locale]; тогава. / etc / default / locale export LANG LANGUAGE fi #, за да стартирате kdm, дори ако не е мениджърът на дисплея по подразбиране, променете # HEED_DEFAULT_DISPLAY_MANAGER на "false".
HEED_DEFAULT_DISPLAY_MANAGER = вярно 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 () {# параметри за поддържане на персонализиране на kdm KDMRC = / etc / kde4 / kdm / kdmrc BACKGROUNDRC = / etc / kde4 / kdm / backgroundrc # ако конфигурацията е променена от kdmtheme или други инструменти , не прави магия, ако grep -q "^ [[: space:]] * Тема = @@@ ToBeReplacedByDesktopBase @@@" $ {KDMRC}; след това KDMOVERRIDEDIR = / и т.н. / по подразбиране / kdm.d KDMCFGDIR = / var / run / kdm KDMCFG = $ KDMCFGDIR / kdmrc BACKGROUNDCFG = $ KDMCFGDIR / backgroundrc DEFAULT_KDM_THEME = / kdmx / aya share / a / kdmx / a / share / kd / kd / share / apps / kdde4 $ DAEMON || изход 0 # некомментирайте, ако искате автоматичното влизане да зависи от нивото на изпълнение #test "$ runlevel" || {runlevel = `ниво на изпълнение`; ниво на изпълнение = $ {ниво на изпълнение # *}; } #test "$ runlevel" = 4 && ARG = -autolog || ARG = -noautolog #comment, ако искате тонове информация за отстраняване на грешки във вашия syslog #ARG = "$ ARG -debug 255" # използваме алтернативен kdm master конфигурационен файл ARG = "$ ARG -config $ KDMCFG" # генерираме kdm конфигурационни файлове genkdmconf --в $ KDMCFGDIR 1> / dev / null # ние заместваме източника. run-parts сортира списъка в предвидим ред, ако [-d "$ KDMOVERRIDEDIR"]; след това за част в $ (run-parts --list "$ KDMOVERRIDEDIR" 2> / dev / null || true); ° С. "$ part" готово fi # актуализираме конфигурационни файлове на kdm (само заменени стойности) [-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 |" $ KDMCFG ако grep -q "^ [[: space:]] * Wallpaper = stripes.png" $ {BACKGROUNDRC}; след това [-n "$ WALLPAPER"] && [-e "$ WALLPAPER"] && sed -i "s | ^ # \? Wallpaper =. * | Wallpaper =` readlink -f $ WALLPAPER` | " $ BACKGROUNDCFG fi # usetheme вече е включен "по подразбиране", така че трябва да сме сигурни, че темата не е невалидна ...
sed -i "s|@@@ToBeReplacedByDesktopBase@@@|$DEFAULT_KDM_THEME|" ${KDMCFG} # презаписванията за автоматично влизане са полезни за активна debian среда 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 } # Ако сме обновили демона, не можем да използваме аргумента --exec за # стартиране-спиране-на-демон, тъй като индексният възел ще се е променил. Рискът тук е, че # в ситуация, в която демонът е спрял да работи, неговият pid файл не е бил почистен и # друг процес вече се изпълнява под този pid, start-stop-daemon ще изпрати # сигнали към невинен процес. Това обаче изглежда като странен случай.
# Такъв е животът!
ако [-e $ UPGRADEFILE]; тогава 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; след това вярно else # ако демонът не премахне собствения си pidfile, ние ще rm -f $ PIDFILE $ UPGRADEFILE false fi; } случай "$ 1" в началото) setup_config if [-e $ DEFAULT_DISPLAY_MANAGER_FILE] && ["$ HEED_DEFAULT_DISPLAY_MANAGER" = "true"] && ["$ (cat $ DEFAULT_DISPLAY_MANAGER_FILE)"] = = $ DAEMON тогава log_action_msg "Не стартира K Display Manager (kdm); това не е мениджърът на дисплея по подразбиране."
else log_daemon_msg "Стартиране на K Display Manager" "kdm" ако start-stop-daemon --start --quiet $ SSD_ARGS - $ ARG; след това log_end_msg 0 else log_action_end_msg 1 "вече работи" fi fi ;; рестартиране) /etc/init.d/kdm спиране, ако [-f $ PIDFILE]; тогава ако still_running; след това излезте 1 fi fi /etc/init.d/kdm start ;; презареждане) log_action_begin_msg "Презареждане на конфигурацията на K Display Manager ..."
ако start-stop-daemon --stop --signal 1 --quet $ SSD_ARGS; след това log_action_end_msg 0 else log_action_end_msg 1 "kdm не работи" fi ;; принудително презареждане) /etc/init.d/kdm reload ;; стоп) log_action_begin_msg "Спиране на K Display Manager: kdm" ако [! -f $ PIDFILE]; тогава log_action_end_msg 0 "не работи ($ PIDFILE не е намерен)" изход 0 else DAEMONPID = $ (cat $ PIDFILE | tr -d '[: blank:]') KILLCOUNT = 1 if [! -e $ UPGRADEFILE]; тогава ако start-stop-daemon --stop --quiet $ SSD_ARGS; след това # дайте на манипулатора на kdm секунда, за да си поеме дъх 1 else log_action_cont_msg "не работи" fi fi докато [$ KILLCOUNT -le 5]; направете ако still_running; след това убийте $ DAEMONPID иначе прекъснете fi sleep 1 KILLCOUNT = $ (($ KILLCOUNT + 1)) направено, ако still_running; след това log_action_cont_msg "не отговаря на сигнал TERM (pid $ DAEMONPID)" else rm -f $ UPGRADEFILE fi fi log_action_end_msg 0 ;; статус) status_of_proc -p "$ PIDFILE" "$ DAEMON" kdm && изход 0 || изход $?
;; *) echo "Употреба: /etc/init.d/kdm {старт|стоп|рестарт|презареждане|принудително презареждане|статус}" изход 1 ;; esac изход 0
Решението, което намерих тогава, беше да създам собствен скрипт за стартиране, който се използва за KDM или друго приложение, което искаме да стартираме, което съдържа това:
#! / bin / sh PATH = / sbin: / bin. /lib/init/vars.sh. / lib / lsb / init-functions случай "$ 1" в начало | "") / usr / bin / kdm ;; стоп) # No-op ;; *) echo "Употреба: kdm [старт | стоп | рестартиране]"> & 2 изход 3 ;; че С
Сега, за да стартира KDM автоматично, е необходимо да активирате този скрипт, така че използвам RCConf за това. И това е всичко. Въпреки това, препоръчвам да използвате оригиналния