Запуск сценария при запуске до запуска X в Ubuntu 9.10

6931
Epcylon

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

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

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

2

2 ответа на вопрос

6
quack quixote

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 
Есть ли способ указать мне, что мой скрипт должен запускаться до gdm, без необходимости изменять скрипт gdm.conf? Я бы не хотел применять мои модификации снова каждый раз, когда GDM получает обновление. Epcylon 14 лет назад 0
@epcylon: see the way the gdm script specifies "start on" ... **"and started hal"**? that's referring to the */etc/init/hal.conf* Upstart script. so ... hm... ok, lemme put the rest of this in the answer. quack quixote 14 лет назад 0
0
Sven

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

У меня нигде нет записи SXXxdm. Я думаю, что я использую GDM (по умолчанию для Ubuntu), но я также не могу найти запись SXXgdm нигде. Это частично моя проблема .. Epcylon 14 лет назад 0
Ах, да, Ubuntu начиная с 9.10 означает Upstart, работает иначе, чем традиционный SysV init, но я не знаю, как именно (еще не использовал), поэтому вам действительно нужно перенести этот вопрос на superuser.com :) Sven 14 лет назад 0
@epcylon: ubuntu follows the debian runlevel config: runlevel 1 is single-user, and runlevels 2-5 are all the same (GUI multi-user). by default ubuntu boots to runlevel 2. quack quixote 14 лет назад 0

Похожие вопросы