第三部分:添加iTunes服务

  按照前两节的内容完成所有的步骤后,现在应该可以登录到NSLU2上并可启动NFS了吧。这些都是一些基本技能,这次我们做的是要把它改造成一个娱乐设备。

  像大多数人一样,我也喜欢收集MP3,不过日长天久大量的mp3文件严重消耗我紧张的磁盘空间。把收集到的音乐文件转移到一个中央存储器中是一个不错的选择,这们也便于在家庭中几台不同的计算机中共享它们。做成一个音乐服务器NSLU2是不是一个适宜的对象呢?它体积足够小,可以方便地藏在家庭的影音中心下,并且它运行时十分安静,而它的存储能力只是受到你装在其中的磁盘空间大小的限制。看上去它是很适合的,可以满足我的要求。

  我们使用一个名为mt-daapd的iTunes服务器程序,在NSLU2上运行mt-daapd可以让你把所有的音乐文件存储在一个地方,并且能够提供给运行有iTunes的 Mac OSX和Windows机器使用。

  mt-daapd的一个相当有用的功能是它使用Rendezvous来在本地的网络中广播它自己的信息,也就是说其他的机器可以自动发现我们的NSLU2音乐服务器,在另外的Windows或Mac OS X机器上运行iTunes,我们这个小小的音乐服务器会自动地显示出一个可用的音乐库。简直太酷了。比起前一节中建立NFS服务来,mt-daapd的建立就会稍微复杂一些,不过不要急,一步一步地接着看,我来展示给大家看具体怎么做。

  1、收集资源

  假定你已看了前两节的内容并按其中的步骤安装好了tool-chain,这是我们为建立iTunes服务等下要用到的,如下的内容与操作步骤也假设你使用的是bash shell,如果你使用的是另外一种shell,那就不得不把它更改过来了,因为在我文章的末尾,我会从一台Mandrake系统的机器上来进行这一建立过程,在这一次,我会使用NFS方式来加载NSLU2磁盘以便我的建立过程会自动地结束于我需要运行它的地方。

  所有过程的第一步就是为我们将要建立的服务所需的包文件创建一个工作区域,在NSLU2的home目录下我创建了一个名为iTures的目录,接下来就是需要获得所有必需的各种资源数据包,我们可以很容易地从http://sourceforge.net/projects/mt-daapd下载到mt-daapd的各种资源。

  粗略浏览文档资料得知我们需要libid3tag、一个GUN的数据库管理器、用来为ID3 tag reading和gdbm的库文件,我做了一个快速的测试,显示我们还需要zlib压缩库文件。从http://sourceforge.net/project/showfiles.php?group_id=12349下载到了libid3tag,从http://ftp.gnu.org/gnu/gdbm/gdbm-1.8.3.tar.gz下载到了gdbm,从http://freshmeat.net/redir/zlib/12352/url_tgz/zlib-1.2.1.tar.gz下载到了zlib。把所有需要的数据包都放置到iTunes目录下,然后再解压它们,结束后在iTunes目录下会得到一个gdbm-1.8.3 目录,一个libid3tag-0.15.1b目录,一个mt-daapd-0.2.0目录和一个zlib-1.2.1目录。

  在开始添加服务以前,我们要设置一些在交叉编译中会使用到的公共环境变量,在本次建立过程中使用的所有数据包都被配置成使用相同的结构方式-GUN Autoconf数据包,它能够找到具体的环境变量,可知道在哪儿可找到编译器、连接器、include文件等等。

  我创建了一个setup.sh文件,文件内容定义如下:

  export BASE=/mnt/nslu2/data/jim/iTunes/
  export LINUX=$HOME/snapgear/linux-2.4.x/include/
  export TOOLSBASE=$HOME/gpl_code_2.03/usr/
  local/openrg/armsaeb/bin/armv4b-hardhat-linux
  export CC=$TOOLSBASE-gcc
  export STRIP=$TOOLSBASE-strip
  export RANLIB=$TOOLSBASE-ranlib
  export LDFLAGS=-L$BASE/lib
  export CFLAGS="-I$BASE/include/ -I$LINUX"

  (注意:在setup.sh中,每一行都是以“export TOOLSBASE”开头,下一行紧接着上一行来,中间是没有空格隔开的。)

  当LINUX指向snapgear Linux source结构时,BASE被定义为我开始所创建的工作区域的顶级目录,TOOLSBASE是交叉编译工具所在的目录,并且是CC、STRIP和RANDLIB结束的地方,要是它们执行的目录的全路径名称,LDFLAGS和CFLAGS在这个建立过程中会使用到,并且指入我们创建的工作区域和Linux source结构中。在你创建的setup.sh文件中使用你机器上的具体路径。然后“dot”这个文件,也就是setup.sh,以便这些变量可被你的工作平台使用到。现在我们准备开始做建立工作的第一步了。