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は表示用の「コンピューター名」。

darwin/install.txt · 最終更新: 2008/06/01 18:12 by osamu
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0