先日から自宅で動いているNetBSD2.02ベースのCobaltQubeにルーターのSyslogをとらせる為の設定を行った。
しかし、しばらくしてログを確認すると何かがおかしい。ローカルのログにルーターのログも入り、ルーターのログにもローカルのログが入ってる! なんじゃこりゃ?
調べているとsyslogdがConfigファイルを読み込む時にConfigファイルのホスト指定を認識してくれていない様子。最初はConfigファイルの書式がバージョンによって異なるのかと思い、Webで設定方法を色々と調べまわるが、特に気になる情報は無かった、しかしながら説明によってはホストの振り分けに関して記載されていないものもあったのが気にかかった。
まさかと思い、ソースファイルを調べてみる。ソースを眺めると... Configファイルのホスト指定を解釈したり、それによって処理を分岐させるコードが書かれている様子が無い。(そりゃ振り分けも出来ないわな)参考に最新(Current)のバージョンのソースを見るとこちらにはしっかりと、ホストごとの振り分けに必要なコードが入っているように見受けられる。
じゃぁ、と言うことで、最新版のバイナリからSyslogdを持ってきて無理やり動かそうとしたのだが... 流石に失敗!起動すらしてくれません。 orz なんかUNIX関係ってライブラリとかの依存関係なのか違うバージョンのバイナリ持ってきても動かないことが多いのがどうも落ち着かない(TT
途方に暮れながら、双方のソースコードやMakeファイルを眺めると、依存関係やヘッダファイル等を含めて差は無いように見受けられる。ひょっとしたらsyslogdのソース単体のコードで処理が終わっている問題かも知れないと思い立ち、ソースからsyslogdをMakeし直す事を試みてみる。
syslog.cをソースツリーに上書きし、Makeするが、Toolが無いと怒られる。仕方が無いのでbuild.sh toolsでツールチェインを作成、Cobalt自体の処理能力の低さか1・2時間掛かった。その後、再挑戦して、Make終了!
恐る恐るバイナリを実行すると上手く動いた♪ コンフィグの認識もログの記録先の振り分けも正常に動作している様子♪ と言う事で、本来のsyslogdに新しく作ったバイナリを上書きして終了。よかったよかった
それにしても、先週・先々週と組み込み用UNIX OSの勉強を兼ねて職場のLandiskにNetBSDを入れ様と必死になって努力していた事で、手順が簡単に解った。それしてなかったらToolが無いといわれた時点で頭抱えてただろうなぁ... うーん、仕事のほうは今のところ、成果は出てないけど一応経験地はアップしてるみたい。うん。
コメント