Ubuntu запускает X-windows из GDM (для систем, использующих стандартный ubuntu-desktop) или из KDM (для систем, использующих kubuntu-desktop).
Чтобы запустить скрипт до запуска GDM/KDM, вы можете
- Напишите свой собственный скрипт Upstart для запуска до GDM; или же
- Измените системный сценарий 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