При запуску системи, і коли ядро все налаштувало і примонтувало кореневу файлову систему, вона виконує команду /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 теж виконується у віртуальній консолі, тому залишить для нього принаймні одну вільну консоль.