Show Table of Contents
F.2.4. /sbin/init
Программа
/sbin/init (также init) координирует оставшуюся часть процесса загрузки и выполняет настройку окружения пользователя.
Процесс
init становится родительским по отношению ко всем автоматически запускаемым в системе процессам. Сначала он запустит сценарий /etc/rc.d/rc.sysinit, который задает путь окружения, инициализирует пространство подкачки, проверяет файловые системы и выполняет все необходимые для инициализации системы шаги. К примеру, для инициализации аппаратных часов rc.sysinit считывает файл конфигурации /etc/sysconfig/clock, а для инициализации отдельных процессов серийного порта выполняет файл /etc/rc.serial.
init затем выполняет задания в каталоге /etc/event.d, которые определяют настройки системы на каждом уровне выполнения SysV init. Уровень выполнения — это состояние или режим, которому соответствуют службы в каталоге /etc/rc.d/rc<x>.d/ (где <x> — номер уровня). Раздел F.4, «Уровни выполнения SysV Init» содержит подробную информацию.
Далее
init задает библиотеку системных функций /etc/rc.d/init.d/functions, использующихся при запуске, завершении и определении номера процесса (PID) приложений.
init проверяет уровень выполнения в /etc/inittab и выполняет запуск всех фоновых процессов из соответствующего каталога rc. Каталоги rc пронумерованы соответственно уровням. Например, /etc/rc.d/rc5.d/ соответствует уровню выполнения 5.
При загрузке пятого уровня
init попытается найти каталог /etc/rc.d/rc5.d/, чтобы определить процессы для запуска и остановки.
Пример содержимого каталога
/etc/rc.d/rc5.d/:
K05innd -> ../init.d/innd K05saslauthd -> ../init.d/saslauthd K10dc_server -> ../init.d/dc_server K10psacct -> ../init.d/psacct K10radiusd -> ../init.d/radiusd K12dc_client -> ../init.d/dc_client K12FreeWnn -> ../init.d/FreeWnn K12mailman -> ../init.d/mailman K12mysqld -> ../init.d/mysqld K15httpd -> ../init.d/httpd K20netdump-server -> ../init.d/netdump-server K20rstatd -> ../init.d/rstatd K20rusersd -> ../init.d/rusersd K20rwhod -> ../init.d/rwhod K24irda -> ../init.d/irda K25squid -> ../init.d/squid K28amd -> ../init.d/amd K30spamassassin -> ../init.d/spamassassin K34dhcrelay -> ../init.d/dhcrelay K34yppasswdd -> ../init.d/yppasswdd K35dhcpd -> ../init.d/dhcpd K35smb -> ../init.d/smb K35vncserver -> ../init.d/vncserver K36lisa -> ../init.d/lisa K45arpwatch -> ../init.d/arpwatch K45named -> ../init.d/named K46radvd -> ../init.d/radvd K50netdump -> ../init.d/netdump K50snmpd -> ../init.d/snmpd K50snmptrapd -> ../init.d/snmptrapd K50tux -> ../init.d/tux K50vsftpd -> ../init.d/vsftpd K54dovecot -> ../init.d/dovecot K61ldap -> ../init.d/ldap K65kadmin -> ../init.d/kadmin K65kprop -> ../init.d/kprop K65krb524 -> ../init.d/krb524 K65krb5kdc -> ../init.d/krb5kdc K70aep1000 -> ../init.d/aep1000 K70bcm5820 -> ../init.d/bcm5820 K74ypserv -> ../init.d/ypserv K74ypxfrd -> ../init.d/ypxfrd K85mdmpd -> ../init.d/mdmpd K89netplugd -> ../init.d/netplugd K99microcode_ctl -> ../init.d/microcode_ctl S04readahead_early -> ../init.d/readahead_early S05kudzu -> ../init.d/kudzu S06cpuspeed -> ../init.d/cpuspeed S08ip6tables -> ../init.d/ip6tables S08iptables -> ../init.d/iptables S09isdn -> ../init.d/isdn S10network -> ../init.d/network S12syslog -> ../init.d/syslog S13irqbalance -> ../init.d/irqbalance S13portmap -> ../init.d/portmap S15mdmonitor -> ../init.d/mdmonitor S15zebra -> ../init.d/zebra S16bgpd -> ../init.d/bgpd S16ospf6d -> ../init.d/ospf6d S16ospfd -> ../init.d/ospfd S16ripd -> ../init.d/ripd S16ripngd -> ../init.d/ripngd S20random -> ../init.d/random S24pcmcia -> ../init.d/pcmcia S25netfs -> ../init.d/netfs S26apmd -> ../init.d/apmd S27ypbind -> ../init.d/ypbind S28autofs -> ../init.d/autofs S40smartd -> ../init.d/smartd S44acpid -> ../init.d/acpid S54hpoj -> ../init.d/hpoj S55cups -> ../init.d/cups S55sshd -> ../init.d/sshd S56rawdevices -> ../init.d/rawdevices S56xinetd -> ../init.d/xinetd S58ntpd -> ../init.d/ntpd S75postgresql -> ../init.d/postgresql S80sendmail -> ../init.d/sendmail S85gpm -> ../init.d/gpm S87iiim -> ../init.d/iiim S90canna -> ../init.d/canna S90crond -> ../init.d/crond S90xfs -> ../init.d/xfs S95atd -> ../init.d/atd S96readahead -> ../init.d/readahead S97messagebus -> ../init.d/messagebus S97rhnsd -> ../init.d/rhnsd S99local -> ../rc.local
Как показано в примере,
/etc/rc.d/rc5.d/ не содержит запускающих или останавливающих службы сценариев. Все файлы в /etc/rc.d/rc5.d/ представляют собой символьные ссылки на сценарии в /etc/rc.d/init.d/. Символьные ссылки используются во всех каталогах rc. Таким образом, изменение, создание и удаление ссылок не окажет влияния на сами сценарии.
Каждая ссылка начинается либо с
K, либо с S. K (kill) обозначает процессы, работа которых будет завершена на данном уровне, а S (start) обозначает запускаемые процессы.
Сначала
init останавливает все обозначенные буквой K процессы путем выполнения /etc/rc.d/init.d/<процесс> stop. Затем с помощью команды /etc/rc.d/init.d/<процесс> start запускаются ссылки S.
Примечание
После завершения загрузки можно будет войти в систему в режиме root и выполнить эти же сценарии запуска и остановки служб. Например, для остановки HTTP-сервера Apache надо выполнить
/etc/rc.d/init.d/httpd stop.
Символьные ссылки пронумерованы по порядку их запуска и остановки. Этот порядок можно изменить путем модификации номера; чем меньше число, тем раньше будет запущена служба. Если число совпадает, порядок служб будет определяться по алфавиту.
Примечание
Одним из последних запускаемых файлов является
/etc/rc.d/rc.local, который помогает задать индивидуальные настройки системы (см. Раздел F.3, «Выполнение дополнительных программ во время загрузки»).
После прохождения
init через соответствующий каталог rc служба Upstart запустит процесс /sbin/mingetty для каждой виртуальной консоли. Уровни 2-5 имеют 6 виртуальных консолей, уровень 1 (монопольный режим) — одну консоль, а уровни 0 и 6 — ни одной. /sbin/mingetty откроет доступ к устройствам tty[16], настроит их режимы, откроет окно приглашения, получит введенное имя пользователя и пароль и начнет процесс авторизации.
На уровне выполнения 5 Upstart выполнит сценарий
/etc/X11/prefdm, который запустит менеджер дисплея X[17] gdm, kdm или xdm в зависимости от настроек в файле /etc/sysconfig/desktop.
Таким образом, система будет запущена на уровне 5 и появится окно входа.

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.