CentOS 5.3 にminidlnaを突っ込んだ記録

SONYBRAVIA J3000(KDL-32J3000)と相性の合うLinux向けDLNAサーバがやっと見つかったのでメモ。

環境は?

こんな感じ。

  • サーバ側
    • CentOS 5.3 i386
    • ハード的にはExpress5800/110Ge
  • クライアント側
    • SONY BRIVIA J3000 (KDL-32J3000)

そもそもLinux向けDLNAサーバ*1って何があるのか

自分が知る限りでは下の4つ。

MediaTomb

導入自体はすんなりいく。方法についてはここらへんを参考に。
ただうちの環境では、クライアント側(TV)からサーバが見つからなかったのでパス。

TwonkyMedia

試してない。というかそもそもLinux版が見つからない。

FUPPES

導入でコケる。
最初はここを参考にしてみたものの、依存関係の解決がどーにも上手くいかないのでパス。
次にソースからmakeしてみたものの、やっぱり依存関係グダグダな上に

libtool: link: unsupported hardcode properties

とか怒られて発狂。

minidlna

最近出てきたものらしく、日本語の情報は少なめ。

とりあえず参考にしたのはここらへん。

MiniDLNA | KURO-BOXの館 ZQwoonetSNS-CoDE-
ReadyNAS ファームウェア更新 - Hieの日記

sourceforgeからDLできるstatic版にはバイナリが入っていて、それ使うのは何となく気持ち悪いので自分でmake。

$ cvs -d:pserver:anonymous@minidlna.cvs.sourceforge.net:/cvsroot/minidlna login

パスワード聞かれるのでそのままEnter(パスワード無し)

$ cvs -z3 -d:pserver:anonymous@minidlna.cvs.sourceforge.net:/cvsroot/minidlna co -P minidlna
$ cd minidlna
# make

makeすると、足りないライブラリをかなり親切に教えてくれるのでそれに従いライブラリを突っ込む。

makeが通ったらmake install

# make install

設定ファイルの編集。/etc/minidlna.confを書き換え。media_dirをこんな感じに。

media_dir=A,/mnt/datadisk/media/audio
media_dir=V,/mnt/datadisk/media/video
media_dir=P,/mnt/datadisk/media/picture

daemonの起動スクリプトを/etc/rc.d/init.dにコピー。

# cp linux/minidlna.init.d.script /etc/rc.d/init.d/minidlna

このスクリプトDebianな環境向けに書かれてるらしく、start-stop-daemonとか使っちゃってます。が、Redhatな環境にはそんなもん存在しないので、編集。というかほぼ書き換え。log_daemon_msg()とlog_end_msg()に関しては、面倒なのでechoで。真面目に書くならここ曰く

log_daemon_msg() { logger "$@"; }
log_end_msg() { [ $1 -eq 0 ] && RES=OK; logger ${RES:=FAIL}; }

で行ける模様。(ためしてない)

#!/bin/sh

# chkconfig: 345 99 10

MINIDLNA=/usr/sbin/minidlna
ARGS='-f /etc/minidlna.conf'
PIDFILE=/var/run/minidlna.pid
LOCKFILE=/var/lock/subsys/minidlna

test -f $MINIDLNA || exit 0

. /etc/rc.d/init.d/functions

start(){
    echo -n "Starting minidlna : "
    daemon --pidfile $PIDFILE $MINIDLNA $ARGS
    RETVAL=$?
    [ $RETVAL -ne 0 ] && failure
    [ $RETVAL -eq 0 ] && touch $LOCKFILE && success
    echo
    return $RETVAL
}
stop(){
    echo -n "Stopping minidlna : "
    killproc -p $PIDFILE $MINIDLNA
    RETVAL=$?
    [ $RETVAL -ne 0 ] && failure
    [ $RETVAL -eq 0 ] && rm -f $LOCKFILE && success
    echo
    return $RETVAL
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart|reload)
        stop
        start
        ;;
    status)
        status $MINIDLNA
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|reload|status}"
        exit 1
esac

exit 0

で、こいつを自動起動するように。

# chmod 755 /etc/rc.d/init.d/minidlna
# chkconfig --add minidlna
# chkconfig minidlna on

で、起動。

# /etc/rc.d/init.d/minidlna start

これで、クライアント側にtuxのアイコンが現れるはず。ソースのicons.cを書き換えてmakeし直せば、アイコンは変えられそう。

ちなみにこいつ、ファイルを追加しても自動では再スキャンしてくれない模様(←まだあんまりよく分かってない)。一旦daemon止めて/tmp/minidlna/files.db消してdaemon上げないと、追加したファイルを見つけてくれないっぽい。ここらへんは、暇な時にソース読んで確認。

*1:というよりUPnPサーバ?DLNAUPnPの関係が今一つ分かってませんごめんなさい