SysVinit — система инициализации процессов (PID 1), унаследованная от Unix System V. Первый процесс, запускаемый ядром Linux. Читает конфигурацию из /etc/inittab и определяет текущий уровень выполнения (runlevel), затем запускает или останавливает сервисы через скрипты в /etc/init.d/.
Уровни выполнения (runlevels)
- 0 — выключение системы
- 1 — однопользовательский режим (rescue)
- 2 — многопользовательский без сети (Debian)
- 3 — многопользовательский с сетью (RHEL)
- 5 — многопользовательский с графикой
- 6 — перезагрузка
SysVinit vs systemd
Главный недостаток SysVinit — последовательный запуск сервисов: каждый скрипт выполняется по очереди. systemd запускает сервисы параллельно, отслеживает зависимости между ними и значительно ускоряет загрузку. Также systemd предоставляет журналирование (journald), управление сокетами и таймерами.
Ubuntu перешёл на systemd в версии 15.04 (2015). Debian — в версии 8 Jessie (2015). RHEL — в версии 7 (2014). Gentoo и Devuan поддерживают SysVinit как альтернативу systemd.
История
Unix System V (AT&T, 1983) ввёл init со скриптами. BSD развивал альтернативный rc.conf-стиль. Linux принял SysVinit в 1990-х. Upstart (Ubuntu, 2006) и Launchd (macOS, 2005) стали первыми альтернативами. Systemd создан Ленартом Поттерингом из Red Hat в 2010 году и принят большинством дистрибутивов к 2015 году.
Связь с хостингом
На современных серверах с Ubuntu 16.04+ или RHEL 7+ используется systemd. SysVinit встречается на старых серверах и встраиваемых системах (OpenWrt, Alpine Linux). Управление сервисами через systemctl start/stop/enable — стандарт для современных хостинг-серверов.
История SysVinit
SysVinit (System V init) — система инициализации Unix, разработана AT&T для Unix System V в 1983 году. Долгое время была стандартом в Linux: Debian, Ubuntu до 2014 года, RHEL до версии 7. Принцип работы — последовательный запуск скриптов из директорий /etc/rc0.d/–/etc/rc6.d/ согласно уровням запуска (runlevel 0–6). В 2014 году Debian перешёл на systemd, в 2015 — Ubuntu. SysVinit сохранился в Devuan Linux (форк Debian без systemd) и в нескольких встроенных дистрибутивах.
SysVinit vs systemd vs Upstart
| Параметр | SysVinit | systemd | Upstart |
|---|---|---|---|
| Параллельный запуск | нет | да | да |
| Зависимости сервисов | вручную | автоматически | частично |
| Время загрузки | медленно | быстро | среднее |
| Мониторинг сервисов | нет | journald | нет |
Управление сервисами через SysVinit
Команды: service nginx start, service nginx stop, chkconfig nginx on (RHEL). Скрипты находятся в /etc/init.d/. При переходе на systemd совместимость сохраняется через обёртки. На современном VPS-хостинге SysVinit практически не встречается.
Типичные ошибки
- Написание init-скриптов без
set -e— ошибки игнорируются молча. - Отсутствие LSB-заголовков в скриптах — порядок запуска не определён.
- Попытка использовать
systemctlна системе с SysVinit — команда не существует.
SysVinit использует числовые уровни запуска (runlevels), унаследованные от Unix System V: уровень 3 — многопользовательский без GUI, уровень 5 — с графическим интерфейсом. Скрипты хранятся в /etc/init.d/, симлинки в /etc/rc3.d/. На современных Ubuntu Server и RHEL SysVinit заменён systemd.