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