みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

connman バージョン1.30以前の落とし穴

システム起動時にNFSやCIFSでリモートのディレクトリをマウントしたい場合などは 確実にネットワークがオンラインになっている必要がある。

ネットワークがオンラインになる前にマウントを試みても失敗するためだ。

systemdでネットワークインターフェイスがオンラインになるまで待ち合わせるには、 network-online.targetが使用できる。 しかしそれはsystemd-networkdで管理されているものにしか有効ではない。

つまり、connmanで起動されたネットワークインターフェイスは待ち合わせしないため、CIFSのマウントがネットワークインターフェイスの起動完了よりも先に実行されてしまうケースがある。

connmanにも同様のconnman-wait-online.serviceが提供されるが、これは1.31からとなる。 そのため1.30以前のconnmanではネットワークインターフェイスの待ち合わせができない。

ちなみにyocto環境ではjethroは1.30となり待ち合わせできない。 masterでは1.31になっているため、connman-wait-online.serviceが使用できる。