С началом процесса init в FreeBSD (Инициализация уровня пользователя) большая часть системы является работающей и функциональной. Есть несколько дополнительных шагов, выполняющих между данным моментом и временем, когда пользователь видит приглашение зарегистрироваться в системе. Все эти действия выполняются программами init уровня пользователя, которые используют стандартный интерфейс системных вызовов FreeBSD.
Мы кратко рассмотрим шаги, которые имеют место в типичной системе.
/sbin/init
Программа /sbin/init вызывается в качестве последнего шага в процедуре начальной загрузки. Параметры, указанные во время загрузки FreeBSD, передаются init машинно-зависимым образом, init использует значения этих флагов для определения того, должна ли система работать в однопользовательском или многопользовательском режиме и должна ли она проверять согласованность дисков с помощью программы fsck.
При работе в однопользовательском режиме init ответвляет процесс, который вызывает стандартную оболочку /bin/sh. Дескрипторы стандартного ввода, вывода и ошибки процесса направляются в системный терминал консоли /dev/console. Затем эта оболочка работает обычным образом, но с привилегиями суперпользователя до тех пор, пока не завершится.
При работе в многопользовательском окружении init уровня пользователя сначала порождает оболочку для интерпретации команд в файле /etc/rc, который является корнем набора сценариев запуска системы, которые все выполняют инициализацию системы на уровне пользователя. Если сценарий /etc/rc завершается успешно, init ответвляет свою копию для каждого устройства терминала, который помечен как включенный в файле /etc/ttys.
Эти копии init вызывают другие системные программы, такие, как /usr/libexec/getty, для управления стандартной процедурой регистрации. Процесс 1 всегда действует в качестве основного координирующего процесса для работы системы. Он отвечает за порождение новых процессов, когда завершаются сеансы терминала, и за управление выключением работающей системы.
Основные понятия: init, bin sh, файл init, init linux
- 09/01/2010 18:07 - Автоматическая перезагрузка и выключение системы
- 09/01/2010 17:59 - Конфигурация ядра FreeBSD (Linux)
- 09/01/2010 17:49 - Программа /usr/bin/login
- 09/01/2010 17:42 - /usr/libexec/getty
- 09/01/2010 17:34 - Сценарии запуска системы - rc conf, rc conf freebsd
- 09/01/2010 12:33 - Запуск потоков ядра - scheduler
- 09/01/2010 12:12 - Запуск межпроцессного взаимодействия
- 09/01/2010 10:46 - Загружаемые модули ядра FreeBSD
- 09/01/2010 10:36 - Инициализация модулей устройств. Подсистема mbuf.
- 08/01/2010 22:03 - Инициализация потоков и процессов ядра