目次
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
を編集
<key>Kernel Flags</key> <string>rd=disk0s1 -v</string>
rd=disk0s1 -v
という部分を追加。-vはverboseオプション。
OpenDarwinの設定
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 が使えなければ、ソースからビルドするのが早いかも。
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のご本家には報告済みで、次の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からサーバーが見えれば成功。 あとは、自動起動するようにしておく。くわしくは、mt-daapdサイトのMac OS X用の説明ページなど参照。
Bonjour (Rendezvous) のホスト名設定
# scutil --set ComputerName "Darwin Server" # scutil --set LocalHostName "darwin"
LocalHostNameが、Bonjour(元Rendezvous)でアクセスするときのホスト名。上の場合、darwin.localでアクセスできる。ComputerNameは表示用の「コンピューター名」。