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″を設定すれば、自分でカスタマイズした通りのデーモンを起動することができる。
