1. В начале был init

При запуске системы, когда ядро всё настроило и примонтировало корневую файловую систему, она выполняет команду /sbin/init[61]. 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'ом[62]. Вторая виртуальная консоль определяется следующим образом:

2:2345:respawn:/sbin/mingetty tty2


[61] Вот почему размещение /sbin не в корневой файловой системе было бы очень плохой идеей. На этом этапе ядро ещё не примонтировало ни одного другого раздела и поэтому не смогло бы найти /sbin/init.

[62] Если вам не нужны 6 виртуальных консолей, вы можете добавить или удалить их, изменив этот файл. Если вы хотите увеличить число консолей, то можете создать их до 64. Но не забудьте, что X тоже выполняется в виртуальной консоли, поэтому оставьте для него по крайней мере одну свободную консоль.