====== OpenDarwinでiTunes Mac/Win用サーバーを作る ======
OpenDarwinを古いPCにインストールして、iTunes Macのファイルサーバー兼daapサーバーにする。
===== 最初はLinuxで試してみた =====
OpenDarwinを試す前に、Linux (Fedora Core)をファイルサーバーにして使ってみた。ファイル名の扱いはMacもFedora CoreもUTF-8なので、メインのiTunes機であるMac miniからはサーバーのハードディスクを直接NFSでマウントしたところ、濁点つきのカナが入ったファイル名の扱いがおかしくて、ファイルを読んで書き戻すと一見同じ名前のファイルが2つできたりする。UTF-8の「方言」で、濁点つきカナを1文字としてハンドルするか、文字本体と濁点の2文字でコンポーズするかの違いらしい。
結局、Linuxのファイルシステムのまま、MacからはAppleTalk (netatalk)で、WindowsからはSambaでアクセスするようにし、FTPでの読み書きはファイルサーバー自身の中でSamba経由でマウントしてファイル名をShift-JISにして見せて、テレビにつないだiTunes Winからジュークボックス的にアクセスするときはmt-daapd経由でつなぐという、あまり気持ちよくない使いかただった。
OpenDarwinをサーバーにすれば、いろんなところがネイティブになって、もっとスマートで安定して使えるんじゃないかという期待。
===== OpenDarwin x86のインストール =====
Darwin 8.0.1はSSE2の載ったCPUでないと動かないので、OpenDarwin 7.2.1 をインストール。
ネットワークカードは、よくあるRTL8139(カニ印)チップのものはドライバが無いので使えない。DEC Tulipや3Com 3C905などのカードを探してくること。ジャンク屋に行けば100円ぐらいで売られている。
インストールCD-ROMのISOイメージをCD-Rに焼いて、CD-ROMブートするとインストール開始。
インストール後、rootのパスワードを設定、ユーザーを登録してから、リブート。
リブート時、''rd=disk0s1''とブートのオプションを手入力してやらないと立ち上がらない。
==== ブートオプションを設定 ====
一旦立ち上がったら、上記の''rd=disk0s1''を毎回入力しなくていいように、設定ファイルに書き込んでしまう。
''/Library/Preferences/SystemConfiguration/com.apple.Boot.plist''を編集
Kernel Flags
rd=disk0s1 -v
''rd=disk0s1 -v''という部分を追加。-vはverboseオプション。
===== OpenDarwinの設定 =====
[[http://www.opendarwin.info/opendarwin.org/en/faq/index.html|The OpenDarwin FAQ]]や[[http://www.miko.org/~tatyana/tech/OSX/Beginning_OSX.html|Beginning OSX]]を参考。
==== IPアドレスを静的に指定 ====
インストールした状態では、IPアドレスをDHCPから取得する設定になっているが、サーバーにするために固定のアドレスを指定する。
ncutilコマンドを使って''/Library/Preferences/SystemConfiguration/preferences.plist''の中身を変更。
# ncutil setprop '/Automatic/Built-in Ethernet/IPv4' method Manual
# ncutil setprop '/Automatic/Built-in Ethernet/IPv4' ip-address 192.168.1.10
# ncutil setprop '/Automatic/Built-in Ethernet/IPv4' router 192.168.1.1
# ncutil setprop '/Automatic/Built-in Ethernet/IPv4' subnet-mask 255.255.255.0
# ncutil setprop '/Automatic/Built-in Ethernet/DNS' name-server 192.168.1.1
==== sshd起動 ====
SSH でログインできるようにしておこう。
OpenDarwin 7.2 は Mac OS X 10.3 相当だから、sshd は xinetd 経由。
''/etc/xinetd.d/ssh''を編集する。
disable = no
==== Timezone設定 ====
http://www.opendarwin.info/opendarwin.org/en/faq/ch02.html#timezone
# rm -f /etc/localtime
# ln -s /usr/share/zoneinfo/Japan /etc/localtime
==== ntp設定 ====
''/etc/ntp.conf''に近くのntpサーバーを記入
server time.asia.apple.com minpoll 12 maxpoll 17
server ntp1.jst.mfeed.ad.jp
server time.windows.com minpoll 12 maxpoll 17
''/etc/hostconfig''で、TIMESYNCをYESに
TIMESYNC=-YES-
''ntpd''を起動
# /System/Library/StartupItems/NetworkTime/NetworkTime start
===== プログラムのインストール =====
==== DarwinPorts ====
http://darwinports.opendarwin.org/getdp/ 参照。
http://darwinports.opendarwin.org/downloads/ から、DarwinPortsのソースを入手してmake。
(注:opendarwin.org はすでに活動停止しているので、現在は http://svn.macports.org/repository/macports/downloads/DarwinPorts-1.3.2/ か http://svn.macports.org/repository/macports/downloads/MacPorts-1.4.0/ あたりから入手。MacPorts 1.5 以降は GNUstep 必須なので、ちょっと厄介)
$ ftp http://darwinports.opendarwin.org/downloads/DarwinPorts-1.1.tar.bz2
$ tar xjvf DarwinPorts-1.1.tar.bz2
$ cd DarwinPorts-1.1
$ ./configure
$ make
$ sudo make install
''/opt/local/bin''にインストールされるのでPathを通しておく。
* ''~/.cshrc'' (tcsh)
set path=($path /opt/local/bin)
* ''~/.bashrc'' (bash)
$PATH=$PATH:/opt/local/bin
export $PATH
最新版に自動アップデートして、データベースも更新。
$ sudo port -d selfupdate
==== NFS設定 ====
NetInfoまたは''/etc/exports''でNFSで接続させるディレクトリを設定。
http://www.opendarwin.info/opendarwin.org/en/faq/ch02.html#nfs_ni
OpenDarwin 7.2.1 の初期設定状態では、NFSの起動時にエラーが出ていた。スタートアップスクリプト ''/System/Library/StartupItems/NFS/NFS'' で使っている ''lockfile'' コマンドがないため、スクリプトがエラーで停止している。''procmail''をインストールして''lockfile''が使えるようにする。
同じく ''automount'' が使えるようにするため ''am-utils''をインストール。
sudo port install procmail
sudo port install am-utils
==== daapデーモン ====
iTunes共有のサーバーの役割をするdaapデーモン。
daapd と mt-daapd がある。
daapdのほうは、DarwinPortsにあるバージョンでそのまま動くが、mt-daapdはDarwinPortsにあるバージョンでは最新のiTunesで認識されないバグがあるので、mt-daapdを使う場合はソースからmakeする。
機能面では、mt-daapdのほうが積極的にアップデートされているので、おすすめ。たとえば、daapdではジャンル名がうまく表示されなかったり、コンピレーションのフラグがついている曲がアルバムとしてまとまって表示されないなど不満点がある。
=== daapd ===
http://daapd.darwinports.com/ 参照
DarwinPortsでインストール
$ sudo port install daapd
''/opt/local/etc/daapd.conf.dist''を元にして、自分の設定ファイル''/opt/local/etc/daapd.conf''を作る。
Port 3689
ServerName Radaubruder
DBName Pinguin-Musik
Password SaSiiStPPitSotC
Root ~/Music/test
Cache ~/.daapd-cache
Timescan 2
Rescan 1
=== mt-daapd ===
gdbm、libid3tag、zlibが入っていなければ、入れる。
sudo port install gdbm
sudo port install libid3tag
sudo port install zlib
一度 port install mt-daapd して、DarwinPortsに自動的にこれらをインストールさせるというのも、あり。
DarwinPorts が使えなければ、ソースからビルドするのが早いかも。
[[http://www.mt-daapd.org/|mt-daapdのサイト]]で最新のソースを取って来る。
curl http://sourceforgeのダウンロードURL > mt-daapd.tar.gz
tar xvfz mt-daapd.tar.gz''
できたmt-daapdのソースディレクトリに移動してconfigure、make。
最新のバージョン 0.2.4 で試したところ、ポート番号の取り扱いにバグがあるようで、iTunesから接続すると、iTunes側に変なエラーが出てつながらない。daapのポートである3689番につなごうとしているのにmDNS(Rendezvous改めBonjour)は26894番という違うポート番号を返している様子。ポート番号のバイト順が違う模様(big endianとlittle endianの問題)。
で、プログラムをちょっと修正。srcディレクトリの中のrend-osx.cを開いて、rend_callback()という関数の中、
usPort=msg.port;
という行を
usPort=htons(msg.port);
に書き換える(この修正はmt-daapdのご本家には[[http://www.mt-daapd.org/index.php?option=com_simpleboard&Itemid=40&func=view&id=3397&catid=2|報告済み]]で、次のcvsでは直る予定)。
書き換えたら、
./configure
gdbm.hがどこにあるか分からないというエラーが出る場合は、gdbmのインクルードファイルとライブラリのパスを指定。
./configure --with-gdbm-includes=/opt/local/include --with-gdbm-libs=/opt/local/lib
make
sudo make install
で、できあがり。
contribディレクトリの中のmt-daapd.confを/etcにコピーして、mp3ファイルの場所、サーバー名などを適宜書き換えてから、mt-daapdを立ち上げてみる。iTunesからサーバーが見えれば成功。
あとは、自動起動するようにしておく。くわしくは、[[http://wiki.mt-daapd.org/wiki/Quickstart_Macosx|mt-daapdサイトのMac OS X用の説明ページ]]など参照。
==== Bonjour (Rendezvous) のホスト名設定 ====
# scutil --set ComputerName "Darwin Server"
# scutil --set LocalHostName "darwin"
LocalHostNameが、Bonjour(元Rendezvous)でアクセスするときのホスト名。上の場合、darwin.localでアクセスできる。ComputerNameは表示用の「コンピューター名」。