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 で動作して、ログイン画面を表示します。
このページには機械翻訳が使用されている場合があります (詳細はこちら)。