Macが届いたのでTeraStationにアクセスしたところ、見事に日本語が化けている。FreeBSDのsamba3にアクセスすると化けないので、TeraStationのsamba2とMacの文字コード問題なんだろう。
OpenTeraのsambaはiconv周りの問題で使えないので、自分でsambaをビルドすることにする。
参考にしたのは2010/02/03:TerastationPROのLinuxBox化(下)。先にここを見ておけば文字化けでreflashすることもなかったんだけどね。
私の場合、以前root奪取してgccとか入れてあったので、使えるものは使う方向で行く。(一からやった方が他の人の参考になるんだろうけど、TeraStationのスペック的にコンパイル時間がかかるので)
と言う訳で現在のTeraStationがどう言う状態になっているかと言うと、以下のような感じ。
  • OpenTeraは適用していない
  • ln -s /mnt/array1/opt /opt してある。/mnt/array1/opt は以前Vineのrpmから入れたり、ビルドしたりしたもの。
  • /optに何を入れたかはほとんど覚えていない。
  • とりあえず、/opt/bin:/opt/usr/bin:/opt/usr/local/bin/ にPATHを通すscriptを書いて、sambaビルド時には実行しておく。(rootの.bashrcとかには怖くて入れない)
  • 上記スクリプトで、/opt/usr/lib:/opt/usr/local/libにLD_LIBRARY_PATHを通しておく。(私の環境だと、/opt/lib/libc.soにLD_LIBRARY_PATHを通してしまうと、何もできなくなってしまう)

まずは、sambaのソースを持ってくる。現在の安定板の最新と言うことで samba-3.5.8。(ちなみに、FreeBSDには3.5.6が入っていた)
展開すると、トップにはconfigureとか存在しない。3.0くらいまでは source ってディレクトリがあったけど、何故かsource3とsource4と言うディレクトリがあり、howto4.txtとか言うファイルもあって、「あれ?間違えて samba4 持ってきた?」とか思うが、どうみても3.5.8である。
とりあえず、source3でconfigureを実行してみると、エラーが出るのでいろいろ手を打つ。(元の状態(optに何が入っているか)がわからないので、ちっとも参考にならないと思うけど)
  • まずは、/usr/lib/libc_nonshared.a がないと言って ld がエラーになるので、ln -s /opt/usr/lib/libc_nonshared.a /usr/lib する。
  • 次に、stdio.h がないと言って cpp がエラーになるので、 ln -s /opt/usr/include /usr/include する。
  • 次に、linux/limits.h がないと言って(略)、ln -s /opt/usr/src /usr/src する。
これで、オプションなしのconfigureは通るようになったので、TeraStationのconfigureオプションを考える。
./configure --prefix=/opt/usr/local/samba \ 
   --with-piddir=/var/run \ 
   --with-libiconv=/opt/usr/local
参考にしたサイトと違うのは、prefixと、libiconvの場所。krb5とadsはいらないと思ったので外した。configdirは$PREFIX/etcで良いので指定しない。
途中、headの-lオプションがないとか、dirnameがないとか言ってるが、一応最後までconfigureが実行されて、Makefile-noincludesと言うファイルができる。試しに make -f Makefile-noincludesってやるとビルドが始まったけど、やっぱり dirname がないとか言ってる。
そこで、busyboxにheadとdirnameを追加してリビルド。
しかし、headには-lオプションなんてない。FreeBSDのmanで見てもないので、何かエラーメッセージを読み間違えたか?
dirnameが使えるようにして再度 configureを実行したところ、Makefileができたのでmakeする。
すると、libnetapi.soをビルドするところで __dn_expand が見つからないとか言ってコンパイルエラーになる。
昔sshdをビルドしようとしてはまったときとまったく同じ状況だったので、MakefileのLIBSの行に /lib/libresolv.so.2を追加。
今度は、 /usr/lib/libpthread_nonshared.a がないと言われるので、 ln -s /opt/usr/lib/libpthread_nonshared.a /usr/lib/ で無理矢理回避。
ここまでやってやっとバイナリができたので、make install。
/etc/init.d/smb stop でオリジナルのsamba2を止めて、前回失敗したOpenTeraが作成したsmb.conf を /opt/usr/local/samba/lib にコピーしてみる。
試しに、/opt/usr/local/samba/sbin/smbd -D で起動してみると、libwbclient.so が見つからないと言って起動しないので、LD_LIBRARY_PATH=/opt/usr/local/samba/lib をつけて起動する。
すぐに死んでしまうので、/opt/usr/local/samba/var/log.smbd を確認すると、
smbd/server.c:659(open_sockets_smbd)
  open_sockets_smbd: No sockets available to bind to.
と言うエラーが出てうまく動かない。
smb.conf に interfaces = lo eth0 とか足してもダメなので、libc周りがおかしいせいなんじゃないかと思う。
この辺でお手上げなので、おかしい環境で続けるのはやめて、一度昔入れた /opt は捨てて、冒頭に挙げた参考URLの通りにやってみることにする。
と、言うわけで続く。

カテゴリ

トラックバック(0)

このブログ記事を参照しているブログ一覧: TeraStationのsambaを3にする(失敗編)

このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/2611

コメントする

このブログ記事について

このページは、falseが2011年4月29日 07:55に書いたブログ記事です。

ひとつ前のブログ記事は「OpenTera(2)」です。

次のブログ記事は「TeraStationのsambaを3にする(成功編)」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

広告

Powered by Movable Type 6.1.1