Fedora15のネットワークではまった話

ここに書く話は、本当に些細なことである。 この情報が役に立つ人などほとんどいないだろうが、 メモとして書くことにする。

前書き

私は内側のネットワークでこれまでFedora 13を使っており、 今回fedora 15にアップデートしてみた。 すると、起動に+5分の余計な時間が掛かるようになり、 起動後はネットワークが使えない状態となっていた。

しかしながら、起動後にログインして、 "/etc/init.d/network start" とすると、ネットワークは正常に起動する。 これは、なぜであろうかと調べてみたのが今回の話である。

原因

結論から書くと、"/etc/sysconfig/network-scripts/ifcfg-*"のファイル内に、

NM_CONTROLLED=no

という記述が無かったのが、このトラブルの理由である。

この記述を加えた後は、通常通りの速さで起動し、 起動時よりネットワークが利用できる状態となっている。

原因の詳細

fedora 15では、従来のSysV init系ではなく、 systemdにより各種デーモン等が起動されている。 もちろん、従来のSysV init系の記述が無くなったわけではなく、 systemd経由でrc?.d以下のスクリプトが順次起動される。

おそらく今回問題となったのは、SysV init系で起動される"network"と、 systemdで起動されるdbus-daemonの順序と思われる。 私のfedora 15では、networkが先でdbus-daemonは後である。

networkは内部でifcfg-lo等を読み込みながら ネットワークの設定を行うのだが、 先のNM_CONTROLLEDがnoでないときには、 nmcliと言うコマンドを使って問い合わせを行う。

このnmcliが、おそらくdbusを使っており、 dbus-damemonが動いていない場合、 黙り込んで戻ってこないようなのである。

すると、設定が進まないままnetworkは止まってしまう。 5分経ってsystemdに中断されて、OSは立ち上がるものの、 ネットワークは使えない状態のままと言うことになるのである。

ifcfg-*の中でNM_CONTROLLEDがnoであるなら、 nmcliによる問い合わせが行われないため、 dbus-daemonが動作していなくても問題なく設定が先に進み、 ネットワークが使える状態となるのである。

おわりに

ここで書いた原因の詳細は、 たぶんこうだろうという当て推量となっている。 だから、別のもっとスマートな解決法もあるのかも知れない。

また、fedora 15もクリーンインストールすれば、 ここに書いた問題にあたることも無いのであろう。