Введение
Компонент системы UNIX – процесс Unix.
the Unix process
В компьютерных операционных системах на основе Unix, init (сокращение от "инициализация") – это первый процесс, запускаемый при загрузке операционной системы. Init – это демон-процесс, который продолжает работать до выключения системы. Он является прямым или косвенным предком всех остальных процессов и автоматически принимает все осиротевшие процессы. Init запускается ядром в процессе загрузки; произойдет паника ядра, если ядро не сможет его запустить или он завершит работу по какой-либо причине. Init обычно присваивается идентификатор процесса 1. В системах Unix, таких как System III и System V, конструкция init отличается от функциональности, предоставляемой init в Research Unix и его производных BSD. До начала 2010-х годов большинство дистрибутивов Linux использовали традиционный init, который был частично совместим с System V, в то время как некоторые дистрибутивы, такие как Slackware, использовали скрипты запуска в стиле BSD, а другие, такие как Gentoo, имели свои собственные настроенные версии. С тех пор было создано несколько дополнительных реализаций init, призванных устранить недостатки традиционных версий. К ним относятся launchd, Service Management Facility, systemd, Runit и OpenRC.
Исследования в стиле Unix/BSD
Исследование Unix init запускает скрипт оболочки инициализации, расположенный в /etc/rc, затем запускает getty на терминалах, находящихся под управлением /etc/ttys. Уровней выполнения нет; файл /etc/rc определяет, какие программы запускает init. Преимущество этой системы – её простота и лёгкость ручного редактирования. Однако, добавление нового программного обеспечения в систему может потребовать внесения изменений в существующие файлы, что чревато созданием не загружаемой системы. BSD init, до версии 4.3BSD, был идентичен init в Research UNIX; в 4.3BSD была добавлена поддержка запуска оконной системы, такой как X, на графических терминалах, находящихся под управлением /etc/ttys. Чтобы избежать необходимости редактировать /etc/rc, варианты BSD давно поддерживают специфичный для конкретной установки файл /etc/rc.local, который запускается в подпроцессе ближе к концу последовательности загрузки. Полностью модульная система была представлена в NetBSD 1.5 и портирована в FreeBSD 5.0 и последующие версии. Эта система выполняет скрипты, находящиеся в каталоге /etc/rc.d. В отличие от системы V, где порядок скриптов определяется по имени файла, эта система использует явные теги зависимостей, размещенные внутри каждого скрипта. Порядок выполнения скриптов определяется утилитой rcorder на основе требований, указанных в этих тегах.
В стиле SysV
По сравнению с предшественниками, AT&T UNIX System III представила новый стиль конфигурации загрузки системы, который сохранился (с изменениями) в UNIX System V и поэтому называется "SysV style init". В любой момент времени работающая Система V находится в одном из предопределённого числа состояний, называемых уровнями выполнения. По крайней мере, один уровень выполнения является нормальным режимом работы системы; как правило, другие уровни выполнения представляют собой однопользовательский режим (используемый для восстановления неисправной системы), выключение системы и различные другие состояния. Переход с одного уровня выполнения на другой приводит к запуску набора сценариев для каждого уровня выполнения, которые обычно монтируют файловые системы, запускают или останавливают демоны, запускают или останавливают систему X Window, выключают машину и т.п.
Уровни выполнения
Уровни выполнения в System V описывают определенные состояния машины, характеризующиеся процессами и демонами, запущенными в каждом из них. Как правило, существует семь уровней выполнения, из которых три считаются "стандартными", поскольку они необходимы для функционирования системы:
Помимо этих стандартных, Unix и Unix-подобные системы по-разному интерпретируют уровни выполнения. Общим элементом является файл /etc/inittab, который определяет, что делает каждый настроенный уровень выполнения в конкретной системе.
Уровни выполнения по умолчанию
Операционная система Уровень запуска по умолчанию AIX 2 antiX 5 Gentoo Linux 3 HP UX 3 (консоль/сервер/многопользовательский) или 4 (графический) Linux From Scratch 3 Slackware Linux 3 Solaris / illumos 3 UNIX System V Releases 3. x, 4. x 2 UnixWare 7. x 3
На дистрибутивах Linux, использующих уровень запуска 5 по умолчанию (как указано в таблице справа), уровень 5 активирует многопользовательскую графическую среду с запущенной системой X Window, обычно с менеджером дисплея, таким как GDM или KDM. Однако в операционных системах Solaris и illumos уровень запуска 5 обычно зарезервирован для выключения и автоматического отключения питания. На большинстве систем любой пользователь может проверить текущий уровень запуска с помощью команд runlevel или who r. Пользователь root обычно изменяет текущий уровень запуска, выполняя команды telinit или init. Файл /etc/inittab задает уровень запуска по умолчанию с помощью записи :initdefault:. На системах Unix изменение уровня запуска достигается запуском только тех служб, которых нет в текущей конфигурации (поскольку каждый уровень определяет только запускаемые и останавливаемые службы). Например, при переходе с уровня запуска 3 на 4 может быть запущен только локальный X-сервер. При возврате на уровень 3 он будет остановлен.