Show Table of Contents
F.2.4. /sbin/init プログラム
/sbin/init プログラム ( init とも呼ばれます) がブートプロセスの残りを調整して、ユーザーのための環境を設定します。
init コマンドがスタートする時、それはシステム上で自動的に起動するすべてのプロセスの親か、親の親になります。まず、/etc/rc.d/rc.sysinit スクリプトを実行します。これは環境パスの設定、スワッピングの開始、ファイルシステムのチェックなどを実行して、システム初期化に必要とされるすべての手順を実行します。例えば、ほとんどのシステムはクロックを使用しますので、rc.sysinit は/etc/sysconfig/clock の設定ファイルを読み込んで、ハードウェアクロックを初期化します。もう 1つの例としては、初期化されるべき特殊なシリアルポートプロセスがある場合、rc.sysinit は /etc/rc.serial ファイルを実行します。
init コマンドはそれから、/etc/event.d ディレクトリ内のジョブをプロセスします。このジョブは各 SysV init runlevel 内でシステムがセットアップされるべき方法を記述します。ランレベルとは SysV /etc/rc.d/rc<x>.d/ ディレクトリ内に一覧表示してあるサービスで定義された状態、または モード を指します。ここで <x> は、ランレベルの数値です。SysV init ランレベルの詳細については、「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 で始まるリンクはスタートします。
init コマンドは最初に、/etc/rc.d/init.d/<command> stop コマンドを発行することにより、ディレクトリ内の K シンボリックリンクをすべて停止します (<command> はキルされるプロセス)。次に /etc/rc.d/init.d/<command> start コマンドを発行して S シンボリックリンクをすべて開始します。
注記
システムがブートを終了すると、root としてログインして、これらと同じスクリプトを実行してサービスを開始と停止することができます。例えば、
/etc/rc.d/init.d/httpd stop コマンドは Apache HTTP サーバーを停止します。
それぞれのシンボリックリンクは開始順を決定するために番号が付いています。サービスが開始または停止される順序は、この番号を変更することで変更することができます。番号が低いとより早くスタートします。同じ番号を持つシンボリックリンク同士はアルファベット順に開始されます。
注記
init プログラムが実行する最後の作業の1つは、/etc/rc.d/rc.local ファイルです。このファイルは、システムカスタム化に役に立ちます。rc.local ファイルの使用に関する詳細は、「ブート時に追加プログラムを実行」を参照してください。
init コマンドがランレベル用の適切な rc ディレクトリに進んだ後、/etc/event.d ディレクトリ内のジョブ定義でそのランレベルに割り当てられている各仮想コンソール用の /sbin/mingetty プロセスを Upstart が分岐させます。ランレベル 2 から 5 には仮想コンソール 6 つがすべてあり、ランレベル 1 (シングルユーザーモード) には 1 つ、ランレベル 0 と 6 には 1 つもありません。/sbin/mingetty プロセスは、tty デバイス[18] への通信経路を開くほか、モードを設定し、ログインプロンプトを表示し、ユーザーのユーザー名とパスワードを受け取り、かつログインプロセスを開始します。
ランレベル 5 では、Upstart が
/etc/X11/prefdm というスクリプトを実行します。prefdm は、優先設定の X ディスプレイマネージャー[19] — 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.