Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

30.2.4. Программа /sbin/init

Программа /sbin/init (также init) координирует оставшуюся часть процесса загрузки и выполняет настройку окружения пользователя.
Выполняемый процесс init становится родительским по отношению ко всем автоматически запускаемым в системе процессам. Сначала он запустит сценарий /etc/rc.d/rc.sysinit, который задает путь окружения, стартует пространство подкачки, проверяет файловые системы и выполняет все необходимые для инициализации системы шаги. К примеру, для инициализации аппаратных часов rc.sysinit считывает файл конфигурации /etc/sysconfig/clock, а для инициализации отдельных процессов серийного порта выполняет файл /etc/rc.serial.
The init command then runs the /etc/inittab script, which describes how the system should be set up in each SysV init runlevel. Runlevels are a state, or mode, defined by the services listed in the SysV /etc/rc.d/rc<x>.d/ directory, where <x> is the number of the runlevel. For more information on SysV init runlevels, refer to Раздел 30.4, «Уровни выполнения SysV Init».
Далее init задает библиотеку системных функций /etc/rc.d/init.d/functions, использующихся при запуске, завершении и определении номера процесса (PID) приложений.
init проверяет уровень выполнения в /etc/inittab и выполняет запуск всех фоновых процессов из соответствующего каталога rc. Каталоги rc пронумерованы соответственно уровням выполнения. Например, /etc/rc.d/rc5.d/ соответствует уровню выполнения 5.
При загрузке в 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) — запускаемые процессы.
The init command first stops all of the K symbolic links in the directory by issuing the /etc/rc.d/init.d/<command> stop command, where <command> is the process to be killed. It then starts all of the S symbolic links by issuing /etc/rc.d/init.d/<command> start.

Примечание

После завершения загрузки будет возможно войти в систему в качестве пользователя root и выполнить эти же сценарии запуска и остановки служб. Например, для остановки сервера Apache HTTP надо выполнить команду /etc/rc.d/init.d/httpd stop.
Символические ссылки пронумерованы по порядку их запуска и остановки. Этот порядок может быть изменен путем модификации номера; чем меньше число, тем раньше будет запущена служба. В случае, если число совпадает, порядок служб будет определяться по алфавиту.

Примечание

One of the last things the init program executes is the /etc/rc.d/rc.local file. This file is useful for system customization. Refer to Раздел 30.3, «Выполнение дополнительных программ во время загрузки» for more information about using the rc.local file.
After the init command has progressed through the appropriate rc directory for the runlevel, the /etc/inittab script forks an /sbin/mingetty process for each virtual console (login prompt) allocated to the runlevel. Runlevels 2 through 5 have all six virtual consoles, while runlevel 1 (single user mode) has one, and runlevels 0 and 6 have none. The /sbin/mingetty process opens communication pathways to tty devices[14], sets their modes, prints the login prompt, accepts the user's username and password, and initiates the login process.
На пятом уровне /etc/inittab выполняет сценарий /etc/X11/prefdm.\nprefdm запускает X менеджер[15]gdm, kdm или xdm в зависимости от заданного в файле /etc/sysconfig/desktop.
По завершению система будет работать на уровне выполнения 5, и будет отображен экран входа.


[14] Refer to the Red Hat Enterprise Linux Deployment Guide for more information about tty devices.
[15] Обратитесь к руководству по развертыванию за информацией о менеджерах дисплеев.