修正:2013年12月1日 23時16分
数字比較なので、-ne
の形に修正しました。
先日上記のような記事を書いたわけですが、再度、再起動などを試してみるとまたもやサービスの起動に失敗してしまうようでした。
なぜ前回は上手いこといったのか分かりませんが、仕方がないので別の対処をすることにしました。
/etc/init.d/unbound
と/etc/init.d/nsd4
のStart句に以下のようなコードを入れることにしました。
# starting wait
# if-up & ipv6 check
ifconfig eth0 | grep inet6 | grep :Global >/dev/null 2>&1;
if [ $? -ne 0 ]; then
sleep 5
fi;
非常に古典的な手法というか強引な手段で申し訳ないのですが、ifconfigコマンドでinet6インターフェースがGlobalなアドレスを持っていなければ、Sleepを5秒入れる、というものにしました。
本当は1秒毎にリトライを繰り返すなどの処理のほうが良いのでしょうが、とりあえず簡素な形で書くことにしました。
しかしながら、Bringing up interface eth0:[ OK ]
と出るのに、IPv6アドレスがその時点でアサインされていないというのはよく分からない状態です。
これは該当部分のソースを読めということなのでしょうか・・・?
Linuxカーネル Hacks ―パフォーマンス改善、開発効率向上、省電力化のためのテクニック (2011/07/26) 池田 宗広、大岩 尚宏 他
|