1. На початку був init

При запуску системи, і коли ядро все налаштувало і примонтувало кореневу файлову систему, вона виконує команду /sbin/init[29]. init є батьком для всіх системних процесів і відповідає за переведення системи на необхідний рівень запуску. Ми розглянемо ці рівні пізніше (див. Параграф 2, “Рівні запуску”).

Конфігураційний файл init'а називається /etc/inittab і для нього є окрема сторінка керівництва (inittab(5)), тому ми опишемо тільки деякі з можливих конфігураційних параметрів.

Перший рядок, на який ви повинні звернути увагу, це:

si::sysinit:/etc/rc.d/rc.sysinit

Цей рядок повідомляє init'у, що /etc/rc.sysinit буде виконано відразу після ініціалізації системи (si означає System Init). Потім, щоб визначити рівень запуску за умовчанням, init шукатиме рядок, який містить ключове слово initdefault:

id:5:initdefault:

У цьому разі init знає, що рівнем запуску за умовчанням є 5. Він також знає, що для переходу на рівень 5, він має виконати таку команду:

l5:5:wait:/etc/rc.d/rc 5

Як бачите, синтаксис для всіх рівнів запуску однаковий.

init також відповідає за перезапуску (respawn) деяких програм, які не можуть бути запущені жодним з інших процесів. Наприклад, кожну з програм login, які працюють в 6-ти віртуальних консолях, запущено init'ом[30]. Друга віртуальна консоль визначається так:

2:2345:respawn:/sbin/mingetty tty2


[29] Ось чому розміщення /sbin не в кореневій файловій системі було б дуже поганою ідеєю. На цьому етапі ядро ще не примонтувало жодного іншого розділу і не змогло б знайти /sbin/init.

[30] Якщо вам потрібні 6 віртуальних консолей, ви можете додати чи видалити їх, змінивши цей файл. Якщо ви хочете збільшити кількість консолей, то можете створити їх до 64. Але не забудьте, що X теж виконується у віртуальній консолі, тому залишить для нього принаймні одну вільну консоль.