システム起動時にDHCPサービスが自動的に起動されるようにしたいと思います。どのようなコマンドを実行すればよいですか。正しいものを1つ選びなさい。
- A chkconfig --level 35 dhcpd on
- B ifconfig dhcpd 192.168.0.1 on
- C makeconfig dhcpd
- D /etc/rc.d/init.d/dhcpd start
解説
Linuxでは、システム起動時に複数のネットワークサービスが自動的に起動する。またLinuxでは、各サービスごとに必要となるプログラムを起動するためのシェルスクリプトを用意している。たとえば、DHCPサービスを提供するdhcpdは“/etc/rc.d/init.d/dhcpd”というシェルスクリプトによって起動される。
一方Linuxでは「ランレベル」という概念を用いてシステムの稼動状態を制御する。ランレベル0はシステム停止状態、ランレベル5は、Xも含めてシステムが完全に利用できる状態を意味する。一般的には、ランレベル3または5の状態にシステムが自動起動するように設定する。ランレベルの設定は、ファイル/etc/inittabで行なう。
システムが、いずれかのランレベルにあるとき、別のランレベルに移行するためにinitまたはtelinitコマンドを使う。
# init 3
ランレベルを移行する際は、いくつかのサービスが起動または停止される。Linuxにおいて、この起動や停止の作業はシェルスクリプトによって行なわれる。ランレベル3に移行するときには、ディレクトリ/etc/rc.d/rc3.dにあるシェルスクリプトが実行され、ランレベル5に移行するときには/etc/rc.d/rc5.dにあるシェルスクリプトが実行される。
したがって、たとえばdhcpdをランレベル5で起動したいのならば、シェルスクリプト/etc/rc.d/init.d/dhcpdを、ディレクトリ/etc/rc.d/rc5.dにコピーしておけばよい(ただしファイル名を変える必要がある)。これには、chkconfigコマンドが便利だ(図2)。
図2 chkconfigコマンド このコマンドを実行することにより、任意のランレベルに各サービスをコピーできる。 |
# chkconfig --level 35 dhcpd on
このコマンドにより、/etc/rc.d/init.d/dhcpdは、/etc/rc.d/rc3.dと/etc/rc.d/rc5.dにコピーされる(厳密にはコピーではなくシンボリックリンク)。結果として、ランレベル3と5に移行するときに、DHCPサービスが起動するようになる(Turbo linuxの場合“turbo service”というツールを使えば同様の設定ができる)。システム起動時には、ランレベル3または5に移行する作業が行なわれるので、DHCPサービスが自動起動されるようになる(画面3)。
画面3 /etc/rc.d/init.dディレクトリと/etc/rc.d/rc3.dディレクトリ |
つまり正解はAになる。