- Upstart 0.9
- Содержание
- Поддержка изолированного окружения
- Базовая визуализация задачи/события
- Новые комманды Initctl
- Активация сервиса D-Bus
- Параметр «manual»
- Переназначение файлов
- Мост для сокетов
- Прочее
- Национальная библиотека им. Н. Э. Баумана Bauman National Library
- Персональные инструменты
- Upstart
- Содержание
- Возможности
- Обоснование
- Дизайн
- Принятие
- Установка UpStart
- Графическая установка
- Описание заданий
- Последний штрих и перезагрузка
- Пишем задания
- Системы инициализации Linux
- Системы инициализации Linux
- 1. System V Init
- 2. OpenRC
- 3. Systemd
- 4. Runinit
- 5. Upstart
- Выводы
Upstart 0.9
Содержание
Upstart обновлен до версии 0.9.7-1. Новые возможности описаны ниже.
(оригинал документа)
Поддержка изолированного окружения
Upstart теперь относится к «chroot-aware». Если `initctl` запущен в chroot, то Upstart инициализирует демон вне chroot-окружения и будет обслуживать запросы для выполнения задачи в рамках изолированного окружения.
Базовая визуализация задачи/события
Upstart снабжён новым сценарием Python `initctl2dot`, который преобразует вывод новой команды `initctl show-config` в формате GraphViz. По умолчанию все файлы конфигурации задач анализируются и связи (между задачами и событиями) отображаются графически. Кроме того, можно указать перечень задач для отображения. Более полную информацию можно получить запустив « initctl2dot –help » или « man initctl2dot ».
Новые комманды Initctl
initctl обзавелся двумя новыми командами:
Команда `show-config` отображает основные детали задачи, а именно информацию по параметрам `start on`, `stop on` и `emits`. Это полезно, так как позволяет пользователю увидеть как Upstart анализирует конфигурацию задачи. Команда `show-config` поддерживает опцию `–enumerate`, которая позволяет увидеть элементы комплексных элементов задач (среда выполнения и события). Эта опция используется базовой визуализацией, описанной выше.
Команда `check-config` полезна системным администраторам как инструмент, проверяющий, что все задачи теоретически способны запуститься/остановиться. Например, если конфигурационный файл задачи построен следующим образом:
`check-config` с такой конфигурацией возвратит ошибку, если, например, ни одна из задач ‘C’, ‘D’ или ‘E’ не была доступна. Это говорит о том, что рассматриваемое задание никогда не сможет автоматически запуститься (так как условия запуска никогда не будут истиной). Подобные проверки выполняются и на событиях, так, если задачи ‘C’, ‘D’ и ‘E’ будут доступны, но события ‘A’ и ‘B’ не обьявлены как генерируемые какой-либо задачей, то ‘check-config’ сгенерирует ошибку. Если же никакие ошибки не обнаружены, то ‘check-config’ ничего не выводит на экран и возвращает нуль. Если ошибки обнаружены для задачи, то каждое условие, которое невыполнимо, будет выведено на экран с соответствующим сообщением.
Активация сервиса D-Bus
D-Bus версии 1.4.1-0ubuntu2 и выше позволяет сервисам D-Bus запускаться при помощи Upstart. Модификация существующих сервисов D-Bus, для совместимости с Upstart, происходит следующим образом:
Параметр «manual»
Добавлен новый параметр конфигурации « manual ». Если он указан, то все предыдущие параметры, такие как «start on», теряют силу и задача будет запускаться только вручную командой « initctl start » / « stop ». Этот метод более практичен, чем переназначение файлов.
Переназначение файлов
Переназначенные файлы — это файлы, размещённые в каталоге конфигураций задач (« /etc/init/ ») и заканчивающиеся на « .override ». Эти файлы позволяют менять поведение задачи не изменяя оригинальный файл конфигурации. Файлы переназначения имеют такой-же синтаксис, как и файлы конфигурации задач («.conf»).
Например, сделать так, чтобы сервис никогда не запускался автоматически:
Вернуть первоначальное поведение можно удалив файл переназначения.
Другой пример: изменить условие запуска задачи:
Обратите внимание, что файлы переназначения не обрабатываются, если не найден соответствующий файл конфигурации задачи.
Эффект удаления файла переназначения кроется в быстром возвращени оригинальной конфигурации задачи.
Мост для сокетов
В Upstart стал доступен socket bridge ( upstart-socket-bridge ), который позволяет задачам создавать соединения сокетов в процессе загрузки. Задача регистрирует своё желание установить соединение создав событие «`socket`» в параметрах запуска или останова:
Например, задача запускать веб-сервер только тогда, когда к нему обратится первый клиент:
Для более подробной информации смотрите новые страницы руководства:
Прочее
© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.
Источник
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
Upstart
Создатели: | Скотт Джеймс Ремнант |
---|---|
Разработчики: | Canonical Ltd. |
Выпущена: | 24 августа 2006 |
Постоянный выпуск: | 1.13 / 11 июля 2014 |
Написана на: | C (язык программирования) |
Операционная система: | Linux |
Тип ПО: | Инициализированный демон |
Лицензия: | GPLv2 |
Веб-сайт | upstart .ubuntu .com |
Upstart (англ. Upstart )— система инициализации ОС, которая управляет запуском демонов в течение загрузки системы, их остановку, а также управляет ими во время работы системы. Основанная на событиях замена системы инициализации init в UNIX и Linux системах.
Первоначально была разработана для дистрибутива Ubuntu, но затем стала использоваться и в других дистрибутивах Linux, например в Fedora (впоследствии была заменена systemd), как замена UNIX System V init. В настоящее время признана устаревшей и для многих дистрибутивов планируется переход на systemd.
Содержание
Возможности
- Задачи и службы запускаются и останавливаются по событиям
- События генерируются задачами и службами
- События могут быть приняты от любого процесса системы
- Службы могут быть перезапущены, если они были завершены
- Взаимодействие с демоном init посредством D-Bus
- Можно организовывать свои события
Обоснование
Традиционный процесс инициализации изначально был ответственен только за компьютер в нормальном рабочем состоянии после включения питания, или предотвращал закрытие услуги перед отключением. В результате, конструкция строго синхроннизировалась, блокируя будущие задачи, пока текущая не завершена. [1] Задачи программы также должны быть определены заранее, так как они ограничивают этим подготовительную стадию или очистку функции. Это оставляет его не в состоянии обрабатывать различные не Startup-задачи на современном настольном компьютере, в том числе:
- Добавление или удаление USB флэш-накопителей и других портативных хранения / сетевых устройств, в то время как компьютер работает.
- Обнаружение и сканирование новых устройств хранения данных, без блокировки системы, особенно, когда диск не может считываться даже без питания до тех пор, пока не будет сканироваться.
- Загрузка прошивки для устройства, которое может потребоваться произойти после того, как оно было обнаружено, но прежде, чем она может использоваться.
Upstart модель, позволяет ему реагировать на события асинхронно, пока они генерируются.
Дизайн
Upstart работает асинхронно; Он обрабатывает запуск задач и служб во время загрузки и остановки их во время завершения работы, а также контролирует задачи и услуги в то время как система работает. [2]
Легкий переход и совершенная обратная совместимость с Sysvinit были явные приемущественные цели проекта; соответственно, Upstart может запускать немодифицированные скрипты Sysvinit. Таким образом, она отличается от большинства других замен (Systemd и OpenRC), которые, как правило, берут на себя и требуют полного перехода для правильной работы, и не поддерживают смешанную среду традиционных и новых методов запуска.
Upstart позволяет расширить возможности к своей модели событий за счет использования initctl, отдельные события или мосты событий для интеграции многих или более-сложные события. По умолчанию, Upstart включает мосты для розетки, DBus, Udev, файл, и dconf событий; кроме того, больше мостов также возможны.
Принятие
Дистрибутивы и другие операционные системы, основанные на ядре Linux, которые используют Upstart в качестве системы по умолчанию инициализации:
- Upstart был впервые включен в Ubuntu в 6.10 (Edgy EFT) релиз в конце 2006 года, заменив Sysvinit. Ubuntu 9.10 (Karmic Koala) представил родное Upstart загрузочная как альфа 6.В свою очередь, после того, как проект Debian решил принять Systemd на будущем выпуске в 2014 году Марк Шаттлворт заявил, что Ubuntu начнет планы перейти на Systemd себя поддерживать согласованность с вверх по течению. [3]
- Upstart используется в Chrome OS от Google и Chromium OS.
дистрибутивы, которые поддерживают или поддерживали Upstart в какой-то степени, но отодвинулся, так или больше не используют его в качестве системы инициализации по умолчанию:
- Debian решил, что Systemd будет Система инициализации по умолчанию, начиная с выпуска Jessie, после рассмотрения перехода на Upstart. В конечном итоге было удалено из архива Debian в декабре 2015 года.
- Ubuntu закончил переключатель Systemd в качестве системы инициализации по умолчанию в версии 15.04 (Vivid Vervet), за исключением Ubuntu Touch.
- В Fedora 9, Upstart заменил Sysvinit, однако, Systemd заменил Upstart в релизе Fedora 15.
- Red Hat включает в себя Upstart в их Red Hat Enterprise Linux 6 выпуска. В результате, она также используется RHEL 6 вариантов, таких как CentOS, Scientific Linux и Oracle Linux. Для RHEL 7, Systemd используется вместо.
- OpenSUSE включены Upstart в версии 11.3 Milestone 4, но не по умолчанию. Systemd заменил Upstart, как система инициализации по умолчанию в OpenSUSE 12.1.
- Upstart используется в WebOS компании HP для Palm Pre, Palm Pixi (как до, Palm, был выкуплен HP), HP Veer и HP Pre 3 смартфоны, наряду с планшета HP TouchPad.
- Upstart заменил Sysvinit в Maemo 5 для Nokia интернет-планшетов и был сохранен для MeeGo на телефонах N9 и N950, несмотря на MeeGo перехода к Systemd после слияния с Moblin.
Установка UpStart
Графическая установка
Первым делом, проверяем, соответствует ли наша система требованиям:
Если все хорошо, посещаем http://upstart.ubuntu.com/download.html и выкачиваем последнюю версию Upstart. Распаковываем архив, куда удобно, переходим в образовавшееся дерево каталогов и файлов исходного кода и начинаем колдовать.
Конфигурируем исходный код для компиляции: ./configure —prefix=/usr —exec-prefix=/ —sysconfdir=/etc —enable-compat=sysv
О дополнительных возможных параметрах конфигурирования можно узнать из файла INSTALL, находящегося непосредственно в корне дерева исходных кодов.
Устанавливаем: make install
Описание заданий
После успешной установки Upstart, необходимо создать определения заданий для того, чтобы система смогла загрузиться. Другими словами, задания как раз есть, что чем оперирует Upstart в своей работе. Чтобы быстрей понять, как это все делается и, так сказать, увидеть своими глазами, можно скачать архив примеров заданий. Возможно, вам придется их немного видоизменить для корректной работы с вашей системой, однако все необходимое для начальной конфигурации системы и успешного первого запуска в архиве примеров есть. Все примеры необходимо распаковать в каталог /etc/event.d. Именно из него Upstart берет все необходимое для работы (про /etc/inittab все дружно забыли). За исключением моментов описанных в разделе «Upstart on Other Distributions» все скрипты в каталогах /etc/rcX.d можно оставить без изменений. все должно заработать. [4]
Последний штрих и перезагрузка
Когда все готово, можно попробовать перегрузить Linux и посмотреть, что у вас получилось. Перед перезагрузкой не забудьте проверить значение параметра init, передаваемого ядру вашим загрузчиком, в случае, если Upstart установил исполняемый файл init в отличный от /sbin каталог. Вообще, в принципе, настоятельно рекомендуется для начала не заменять стандартный sysvinit на init Upstart, а установить его в какой-то другой каталог и при помощи параметра ядра init сперва все тщательно протестировать.
Пишем задания
Тем, кому необходимо расширить стандартный набор заданий или просто интересно знать, как все это сочиняется и работает.
Сразу обращу ваше внимание на то, что на сегодняшний день формат файла задания в Upstart считается еще сырым и может в будущем претерпевать изменения, о чем и сообщается на сайте. Так что, будьте готовы, в случае чего, погрузиться в чтение документации к новым версиям и приведению в соответствие написанных вами ранее заданий.
Все задания помещаются в файлы, расположенные в каталоге /etc/event.d . Имена файлов должны соответствовать именам заданий и сами файлы не должны быть исполняемыми.
Один или более пробелов в тексте файла будут обрабатываться как один пробел, если только эти пробелы не заключены в одинарные или двойные кавычки. Переводы строки разрешены только в пределах кавычек или если перед переводом строки поставить обратный слеш. Также, подобно bash-скриптам, разрешены комментарии, начинающиеся с символа решетки. [5]
Источник
Системы инициализации Linux
В операционной системе Linux и других системах семейства Unix после завершения загрузки ядра начинается инициализация Linux системы, сервисов и других компонентов. За это отвечает процесс инициализации, он запускается ядром сразу после завершения загрузки, имеет PID 1, и будет выполняться пока будет работать система.
Процесс инициализации запускает все другие процессы, которые должны быть запущены, это родительский процесс для всего, что выполняется в системе. Другие процессы могут тоже создавать дочерние процессы, но если родительский процесс завершается, для его дочерних процессов родительским становится процесс инициализации.
Системы инициализации Linux
За время развития операционных систем были созданы различные системы инициализации Linux. В разных дистрибутивах использовались разные системы. В этой статье мы рассмотрим лучшие системы инициализации, которые вы можете сейчас использовать. Мы начнем с более старых систем с меньшим функционалом, чтобы понять с чего все начиналось, затем подойдем к более новым, созданным в последнее время.
1. System V Init
System V или SysV — это довольно старая, но до сих пор ещё популярная система инициализации Linux и Unix подобных операционных систем. Она была основой для создания многих других систем инициализации, а также первой коммерческой системой инициализации разработанной для Unix в AT&T. Она была разработана еще в 1983 году.
Почти все дистрибутивы Linux изначально использовали SysV. Исключением была только Gentoo, в которой использовалась собственная система инициализации и Slackware, с инициализацией в стиле BSD.
Основные возможности SysV:
- Написание файлов запуска служб на bash;
- Последовательный запуск служб;
- Сортировка порядка запуска с помощью номеров в именах файлов;
- Команды для запуска, остановки и проверки состояния служб.
Никакой параллельной загрузки, системы зависимостей, запуска по требованию и автоматического запуска здесь не было и в помине.
С момента ее разработки прошло много лет и из-за некоторых недостатков были разработаны другие системы для ее замены, они хоть и имели новые функции и были более эффективны, но они были по-прежнему совместимы с SysV.
2. OpenRC
OpenRC — это система инициализации Linux и Unix подобных операционных систем совместимая с Sys V Init и поддерживающая систему зависимостей во время запуска. Она приносит некоторые улучшения в SysV, и как и другие системы инициализации Linux, совместима с ней, но вы должны иметь в виду, что OpenRC не заменяет полностью файл /sbin/init. Эта система инициализации используется в Gentoo и дистрибутивах BSD.
Кроме стандартных возможностей SysV, здесь поддерживается также:
- Поддержка зависимостей служб;
- Поддержка параллельного запуска служб;
- Поддерживает настройку в одном отдельном файле;
- Работает как демон;
По сравнению с SysV тут появилось много новых возможностей, но все еще не все те, что нужны для оптимальной работы системы.
3. Systemd
Systemd — это новая система инициализации Linux. Она была введена по умолчанию в Fedora 15, а сейчас используется почти во всех популярных Linux дистрибутивах. Это не только инициализирующий процесс, поддерживающий огромное количество возможностей, но и набор инструментов для управления службами и этими возможностями из системы. Основная цель — иметь полный контроль над всеми процессами во время их запуска и на протяжении всего выполнения.
Systemd очень сильно отличается от всех существующих систем инициализации, тем как она работает с сервисами, и даже конфигурационными файлами сервисов. Совместимости со скриптами SysV нет, их нужно преобразовать в linux systemd unit файлы.
Вот ее основные особенности:
- Понятный, простой и эффективный дизайн;
- Параллельная загрузка служб на основе зависимостей;
- Поддерживается завершение дополнительных процессов;
- Поддерживается собственный журнал с помощью journald;
- Поддерживается планирование заданий с помощью таймеров Systemd;
- Поддерживается управление сетью с помощью networkd;
- Для управления DNS используется systemd-resolved;
- Хранение журналов в бинарных файлах;
- Сохранение состояния сервисов linux systemd для возможного восстановления;
- Улучшенная интеграция с Gnome;
- Запуск сервисов по требованию;
4. Runinit
Runinit — это кроссплатформенная система инициализации, которая может работать в GNU Linux, Solaris, BSD и MacOS. Это отличная альтернатива для SysV с поддержкой мониторинга состояния служб.
Здесь есть некоторые интересные особенности, которых нет в других системах инициализации:
- Полный контроль сервисов, каждый сервис привязывается к своему каталогу;
- Надежное средство журналирования и ротации логов;
- Быстрая система загрузки и выключения;
- Портативность;
- Легкое создание файлов конфигурации служб;
- Небольшое количество кода системы инициализации.
5. Upstart
Upstart — это система инициализации на основе событий, разработанная в Canonical и призванная заменять SysV. Она может запускать системные службы, выполнять над ними различные задачи, инспектировать их во время выполнения, а также выполнять нужные действия в ответ на события в системе.
Это гибридная система инициализации, она использует как SysV скрипты запуска, так и файлы служб Systemd. Вот ее самые заметные особенности:
- Изначально разработанная для Ubuntu, но может использоваться и в других дистрибутивах;
- Запуск и остановка служб на основе событий;
- Генерация событий во время запуска и остановки служб;
- События могут быть отправлены обычными процессами;
- Связь с процессом инициализации через DBus;
- Пользователи могут запускать и останавливать свои процессы;
- Перезапуск служб, которые неожиданно завершились;
- Параллельная загрузка сервисов;
- Автоматический перезапуск служб;
Большинство ее возможностей работают благодаря интеграции с системой инициализации Systemd. В последнее время всё меньше используются скрипты SysV init и всё больше применяются юнит файлы Systemd. Рано или поздно Systemd вытеснит и полностью заменит Upstart в Ubuntu.
Выводы
Как я уже говорил, система инициализации запускает и управляет всеми другими процессами в системе Linux. SysV до недавнего времени была основной системой инициализации в большинстве дистрибутивов Linux, но из-за некоторых своих недостатков для нее было разработано несколько замен, в том числе Systemd.
Какие системы инициализации Linux используются в вашем дистрибутиве? В списке обозначены не все существующие системы, какую из них нужно добавить в список? Напишите в комментариях!
Источник