2

У меня есть скрипт, который я хочу запустить при запуске, чтобы переключать X-конфигурации в зависимости от местоположения, но я не могу выяснить, где его разместить, чтобы запустить его до запуска X. Это приводит к тому, что мне нужно перезапустить X, чтобы заставить его работать с правильной конфигурацией.

В настоящее время мой сценарий находится в /etc/init.d/whereami , а символические ссылки - в /etc/rc[2-5].d/S25whereami . Я пытался выяснить, когда X запускается, в случае, если проблема просто в 25 , но я не могу найти ответ ...

Любая помощь приветствуется.

2 ответа2

6

Ubuntu запускает X-windows из GDM (для систем, использующих стандартный ubuntu-desktop) или из KDM (для систем, использующих kubuntu-desktop).

Чтобы запустить скрипт до запуска GDM/KDM, вы можете

  1. Напишите свой собственный скрипт Upstart для запуска до GDM; или же
  2. Измените системный сценарий GDM для запуска собственного внешнего сценария (например, сценария /etc/init.d/whereami ) в качестве одной из начальных задач.

Ubuntu использует уровни запуска в стиле Debian: уровень запуска 1 - однопользовательский, режим восстановления; уровни выполнения 2-5 одинаковы (многопользовательский интерфейс); и по умолчанию система загружается на уровень запуска 2.

Ubuntu 9.10 использует Upstart, который предоставляет сценарии запуска службы в /etc/init. Более традиционные сценарии инициализации в /etc/init.d и /etc/rc.d по-прежнему доступны для служб, которые не были перенесены в сценарии инициализации в стиле Upstart, но в GDM есть. (Обратите внимание, что Ubuntu 9.10 предоставляет /etc/init.d/gdm, но не создает никаких символических ссылок /etc/rcX.d .)

Запуск GDM контролируется /etc/init/gdm. Эти строки в верхней части скрипта указывают, когда запускать и останавливать GDM. Обратите внимание, что не существует спецификации уровня запуска для запуска GDM - только сервисы, которые должны быть запущены первыми.

start on (filesystem
          and started hal
          and tty-device-added KERNEL=tty7
          and (graphics-device-added or stopped udevtrigger))
stop on runlevel [0156]

emits starting-dm

См. Man 5 init для документации по сценариям Upstart и изучите файлы /etc/init/*.conf вашей системы для некоторых примеров. Также см. Стартовую страницу события :

пример
Служба, которая хочет работать всякий раз, когда другая служба будет запущена, запущена до и остановлена после нее, может использовать:

start on starting apache
stop on stopped apache

Задача, которая должна быть запущена до запуска другой задачи или службы, может использовать:

start on starting postgresql

Также обратите внимание, что сценарии Upstart GDM/KDM испускают сигнал, начиная с dm, что также может быть полезно.

Поэтому сценарий Upstart, предназначенный для запуска до GDM, должен использовать одно из следующих условий start on :

# run only when starting GDM
start on starting gdm

# run when starting GDM or KDM
start on (starting gdm 
          or starting kdm)

# run when starting any DM
# starting-dm is a custom event emitted by the GDM/KDM/etc scripts
start on starting-dm
0

Обычно X запускается на уровне выполнения 5, и, поскольку вы хотите, чтобы ваш скрипт запускался до X (в форме xdm/kdm/gdm), вам нужно, чтобы он имел меньшее число, чем запись Sxxxdm. Итак, в моей системе xdm запускается с S111xdm, поэтому вам понадобится символическая ссылка /etc/rc5.d/S10whereami .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .