Ubuntu Edgyでランレベルを設定する方法

Posted on by cotaro

Ubuntuには/etc/inittabが存在しなくてぎょっとする。 これは、Edgyからinitをやめてupstartを採用(CNET Japan)したため。

upstartをデフォルトで採用しているのは今のところUbuntuだけだろう(Debianでもパッケージ自体は利用できる模様)。 ドキュメントもほとんどなくて暴挙に近い決定だと思う。 「inittabが無いとなるとランレベルの設定方法はどうすりゃ良いんだ」と途方に暮れていたものの、探し回って先ほどようやく判明した。 やり方は2通りある。

1つ目は、/etc/inittabを書くという意外な解(ubuntuforums)。 実は/etc/inittabがシステムに存在している場合はそれを読みに行くらしい。 ただし、テンプレートになる設定ファイルは用意されていないので、自分で書くか、互換性に気をつけながら他のディストリビューションから持ってくるしかない。

そして、2つ目の方法(おそらくこちらが本筋)は/etc/event.d/rc-defaultという設定ファイルを編集するパターン。 先ほどの「inittabが存在すればそれを読む」というのも、このファイルから処理しているようだ。 inittabがない場合は、一番下の”telinit 2″という行に落ちる。 Ubuntu(というかupstart)にrunlevelがあったこと自体気づかなかったが、そのrunlevelが2だというのも変わっている。

結論としては、このtelinitの引数を変更することでブート時のランレベルを変更できる。

なお、各ランレベルで起動するデーモンを設定するためにsysv-rc-confというコマンドも用意されている。コマンドがない場合はapt-getでインストール可能。 Redhat系に入っているntsysvなどとほぼ同様のツール。

たとえばrunlevel 3のデーモンをsysv-rc-confで定義したうえで、/etc/event.d/rc-defaultに”telnet 3″を設定すれば、自分でカスタマイズした通りのデーモンを起動することができる。

関連記事

うるめねっと技研 – Linux派 -