Скрипт для запуска KDM (если его нет)

debianlight_kdm

Вчера я переустановил Debian Wheezy с нуля, используя свой собственный репозиторий KDE 4.10 , и должен сказать, что если раньше всё работало хорошо, то теперь работает намного лучше.

Единственная проблема, с которой я столкнулся, была с KDM, который, по-видимому, вообще не устанавливался, потому что он не хотел запускаться автоматически, что привлекает мое внимание, потому что я сделал ту же установку с теми же репозиториями на другом ПК, и все шло отлично .

В ходе поиска причины проблемы я обнаружил, что файл /etc/init.d/kdm не был создан, а должен содержать следующее:

#! / bin / sh -e ### BEGIN INIT INFO # Предоставляет: kdm # Обязательный-Start: $ local_fs $ remote_fs # Обязательный-Stop: $ local_fs $ remote_fs # Должен-Start: экран консоли kbd acpid dbus hal krb5- kdc # Should-Stop: console-screen kbd # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Краткое описание: Диспетчер отображения X для KDE # Описание: KDM управляет коллекцией X-серверов, которые могут быть на локальном хосте или удаленных машинах.
### END INIT INFO # /etc/init.d/kdm: запуск или остановка диспетчера отображения X # Сценарий, изначально украденный из пакета xdm # # описание: K Display Manager # # импортировать функции инициализации LSB. / 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 = 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 () {# параметры для поддержки настройки kdm KDMRC = / etc / kde4 / kdm / kdmrc BACKGROUNDRC = / etc / kde4 / kdm / backgroundrc # если конфигурация изменена с помощью kdmtheme или других инструментов , не занимайтесь магией, если grep -q "^ [[: space:]] * Theme = @@@ ToBeReplacedByDesktopBase @@@" $ {KDMRC}; затем KDMOVERRIDEDIR = / etc / default / kdm.d KDMCFGDIR = / var / run / kdm KDMCFG = $ KDMCFGDIR / kdmrc BACKGROUNDCFG = $ KDMCFGDIR / backgroundrc DEFAULT_KDM_THEME = / kdmx / tes / темы / приложения / kdmx / test / apps / kdmx / apps / themes kdde4 / themes $ DAEMON || exit 0 # раскомментируйте, если вы хотите, чтобы автоматический вход в систему зависел от уровня выполнения #test "$ runlevel" || {runlevel = `runlevel`; runlevel = $ {runlevel # *}; } #test "$ runlevel" = 4 && ARG = -autolog || ARG = -noautolog # раскомментируйте, если вам нужны тонны отладочной информации в системном журнале #ARG = "$ ARG -debug 255" # мы используем альтернативный главный файл конфигурации kdm ARG = "$ ARG -config $ KDMCFG" # мы генерируем kdm файлы конфигурации genkdmconf --in $ KDMCFGDIR 1> / dev / null # мы переопределяем исходный код. run-parts сортирует список в предсказуемом порядке if [-d "$ KDMOVERRIDEDIR"]; затем для части в $ (run-parts --list "$ KDMOVERRIDEDIR" 2> / dev / null || true); c. "$ part" done 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 =. * | Language = $ LANGUAGE |" $ KDMCFG if 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; then true else # если демон не удаляет свой собственный pid-файл, мы будем rm -f $ PIDFILE $ UPGRADEFILE false fi; } case "$ 1" в начале) setup_config if [-e $ DEFAULT_DISPLAY_MANAGER_FILE] && ["$ HEED_DEFAULT_DISPLAY_MANAGER" = "true"] && ["$ (cat $ DEFAULT_DISPLAY_DISPLAY_MANAGER_FILE)"! = "$ DA затем log_action_msg «Не запускается K Display Manager (kdm); он не является менеджером дисплея по умолчанию».
иначе log_daemon_msg "Запуск K Display Manager" "kdm" if start-stop-daemon --start --quiet $ SSD_ARGS - $ ARG; затем log_end_msg 0 иначе log_action_end_msg 1 "уже запущен" fi fi ;; перезапуск) /etc/init.d/kdm stop if [-f $ PIDFILE]; тогда, если still_running; затем выйдите из 1 fi fi /etc/init.d/kdm start ;; reload) log_action_begin_msg "Перезагрузка конфигурации K Display Manager ..."
если start-stop-daemon --stop --signal 1 --quiet $ SSD_ARGS; затем log_action_end_msg 0 иначе log_action_end_msg 1 «kdm не работает» fi ;; принудительная перезагрузка) /etc/init.d/kdm reload ;; stop) log_action_begin_msg "Остановка K Display Manager: kdm" if [! -f $ PIDFILE]; затем log_action_end_msg 0 "не работает ($ PIDFILE не найден)" exit 0 иначе DAEMONPID = $ (cat $ PIDFILE | tr -d '[: blank:]') KILLCOUNT = 1 if [! -e $ UPGRADEFILE]; тогда если start-stop-daemon --stop --quiet $ SSD_ARGS; then # дайте обработчику сигналов kdm секунду, чтобы перевести дыхание, sleep 1 else log_action_cont_msg "not running" fi fi while [$ KILLCOUNT -le 5]; делать, если still_running; затем убить $ DAEMONPID, иначе прервать сон 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) status_of_proc -p "$ PIDFILE" "$ DAEMON" kdm && exit 0 || выход $?
;; *) echo "Использование: /etc/init.d/kdm {start|stop|restart|reload|force-reload|status}" выход 1 ;; esac выход 0
Это то, что в указанном файле есть на другом ПК, но я не мог его увидеть вчера вечером, я покажу вам другую альтернативу

Решение, которое я нашел тогда, заключалось в создании собственного сценария запуска, который используется для KDM или любого другого приложения, которое мы хотим запустить, который содержит следующее:

#! / bin / sh ПУТЬ = / sbin: / bin. /lib/init/vars.sh. / lib / lsb / init-functions регистр "$ 1" в начале | "") / usr / bin / kdm ;; stop) # No-op ;; *) echo "Использование: kdm [start | stop | restart]"> & 2 exit 3 ;; что C

Для автоматического запуска KDM необходимо активировать этот скрипт, для чего я использую RCConf . Вот и всё. Однако я рекомендую использовать оригинальную версию 


Добавить в качестве предпочтительного источника в Google