今日も元気にテクニカル

技術情報書きたいけど本ブログに書きたくないからこんな名前になりました。

Linux起動プロセスまとめ

Windowsユーザーに教えるLinuxの常識(10):Linux起動の仕組みを理解しよう[init/inittab編] (1/2) - @IT

前も纏めたけど理解が深まったので。

1./sbin/init

ブートローダーの読み込み、デバイスの初期化(Windowsでいうconfig.sys)を行った後、最初に実行されるLinuxプログラムは/sbin/initである。initの動作を決定する定義ファイルは/etc/inittabである。initは全ての親プロセスとなる。

2./etc/rc.d/rc.sysinit

/sbin/initから/etc/rc.d/rc.sysinitを呼び出す。これはネットワークの初期化やホスト名の設定を行っているシェルスクリプトで、どのランレベルでも動く。

3.ランレベルに応じて/etc/rc?.d/ディレクトリ以下のシェルスクリプトを実行

/etc/rc?.d/以下のシェルスクリプトで頭文字がS(sではない)のものは起動するもの、頭文字がK(kではない)のもの停止するものである。今からログインするのに停止する必要ないだろ、というツッコミはあるがマルチユーザーモードからシングルユーザーに移行する場合はプログラムの停止が必要となる。

S??とあるサービスは、Windowsでいう「スタートアップの種類」が「自動」のサービスである。逆に言うなら、自作スクリプトをPC起動時に自動起動したいのなら、自分でRCスクリプトを書いてrc?.d以下に設置すればよい。シェルスクリプトなので単に

/usr/local/bin/httpd

のように書くだけでもOKだが、引数でstart、stopくらいつけておくと便利かも。作りこめば、起動時にモジュールを読み込むなどもできる。

Windowsでもサービス開始時にパラメータつけることができるし。