无线家庭音乐广播—改造 NSLU2 以释放您的音乐
和许多消费者一样,在过去的几年里,我的音乐 CD 收藏数量也失控地增长。随着硬盘价格的下降和 CD 抓取速度的提高,我抓住机会将我的 CD 翻录成 MP3 和 Ogg Vorbis 格式;成堆的杂乱无章的 CD 成为了过去,被放逐到我壁橱后面的盒子里。虽然将音乐收藏翻录到我的电脑中消除了成堆的 CD,但也带来了新的问题。我的几个家人共用我存储音乐的电脑;这意味着如果我想播放专辑,我不得不打断我儿子用 WINE 驱动的 Deus Ex 游戏。更糟糕的是,我没有一种方法可以将音乐从我的电脑传输到房子另一边的立体声音响,而且是以低损耗和无电缆的方式。我一想到要听我们狭小的电脑房间里廉价电脑扬声器播放的音乐就感到不寒而栗。我等待着一款能够解决我问题的产品出现,但没有出现。最终,我决定将几种技术组合在一起,构建我完美的解决方案。最终,我想要一个设置,使我能够将我的音乐库从我的电脑转移到网络附加存储 (NAS) 上,以最小的信号损失播放我的音乐,并消除使用家用电脑作为中间人的必要性。
我一直对那些将计算机硬件的功能扩展到超出原始产品工程师愿景的项目着迷。以此为背景,我的目标是将几个现有的硬件和软件链接在一起,以构建我的音频收藏的最优利用。我描述的是一种将我的音乐库存储在启用 Linux 的 Linksys NSLU2 NAS 设备上的方法,通过 mt-daapd(一个充当 Linux 和其他 POSIX UNIX 的 iTunes (DAAP) 服务器的程序)来广播音乐库,并通过 Roku Labs SoundBridge(一个网络音乐播放器)将音乐发送到我的立体声音响。当然,有很多方法可以完成这个项目,可以进行替换——用全尺寸 Linux 服务器代替 Linksys NSLU2,从服务器到家用立体声音响的长音频线缆——但是,我发现这是最优雅和实用的解决方案。令我惊讶的是,我发现了一个蓬勃发展的用户社区,他们渴望相同的配置类型。
首要任务是确定一种将我的音乐库从我的计算机转移到网络存储介质的方法。我的最初计划是将我老化的奔腾 III 塔式机转换为 Linux 文件和媒体服务器,该服务器将支持跨网络的音乐视频,同时足够灵活以实现任何其他服务。我放弃了这个想法,因为我担心主要处于空闲状态的设备的功耗,仅仅为了听 Beastie Boys 的最新音乐而启动服务器似乎不是一个可行的选择。此外,我狭小的电脑房间空间非常有限,另一台机器会增加热量和噪音水平。
我在 Linksys NSLU2 网络链接存储单元中找到了完美的替代品,这是一款 NAS 设备,允许连接两个外部 USB 2.0 硬盘或闪存驱动器,并通过 10/100 以太网连接将它们连接到网络。NSLU2 具有基于 Web 的界面,允许跨网络配置文件和数据共享。NSLU2 包装在一个方便的设备中,它比我的外置硬盘还小,重量不到 6 盎司,正常使用时的功耗不到 9W,并且很容易放在书架上或电脑空间的未使用角落。它由一个适度的 Intel IXP420 ARM CPU 驱动,运行频率为 133MHz,具有 32MB 的内部闪存 RAM,我找到了一个存储设备,但尚未确定一种提供文件服务的方法。
一些 Linksys 设备使用 Linux 作为底层操作系统;因此,根据 GPL 许可证的要求,必须发布其源代码。大量的 Linux 程序员和开发人员已经接受了 Linksys 产品线,包括 NSLU2(昵称为 Slug),并扩展了这些设备的功能。已经出现了几种替代固件的“流派”或“分支”,这些固件扩展了设备的功能。我选择的固件替代品,也是迄今为止最用户友好的,是 Unslung 流派,它保留了原始产品的功能,保留了与 Linksys 原始固件的兼容性,但允许用户向 NSLU2 添加程序和功能。另一个流行的选择是 OpenSlug 固件,这是一个使用 OpenEmbedded 生成的流派,它包含一个完全可定制的 Linux 内核和根文件系统。OpenSlug 安装了一个最小的操作系统占用空间,足以启动硬件并允许安装其他软件。这允许高度可配置和可扩展的安装,并鼓励基于用户需求的功能定制——可以将其视为 NSLU2 固件世界的 Slackware。Unslung 和 OpenSlug 都托管在 NSLU2 Linux Wiki 网站上(参见在线资源),并拥有一大批支持者。在撰写本文时,最新的 Unslung 固件是 5.5,并且被认为是稳定的。使用 Unslung 功能升级 NSLU2 分为两个部分:将固件安装到 NSLU2,然后“卸载”连接的 USB 硬盘或闪存设备。此过程非常简单,并且在固件随附的 README 文件中得到了很好的文档记录。在整个过程中应严格遵循说明,以避免“砖化” NSLU2。升级固件就像访问设备 Web 界面并使用固件升级实用程序一样简单。完成后,必须卸载外部磁盘。在卸载期间,原始根 NSLU2 jffs2 文件系统被复制到外部 USB 磁盘上,并添加了其他目录。每次设备在固件升级且连接的磁盘被卸载后启动时,它都会运行一个脚本,该脚本指示 NSLU2 加载存储在外部驱动器上的根文件系统,而不是 NSLU2 闪存中的文件系统。这允许用户将 NSLU2 使用的代码存储在硬盘上,而不是设备 RAM 中。
虽然程序可以为 NSLU2 交叉编译,但已经移植了超过 6,500 个软件包。大多数用户会发现使用 ipkg 系统安装软件更容易;apt 用户会发现这很熟悉。ipkg 系统允许网络下载,满足软件包依赖性,并管理程序的安装、升级和删除。升级 NSLU2 后,需要正确配置 ipkg 系统,并且需要更新下载新软件包所需的源列表。Telnet 进入 NSLU2 后,发出以下命令
#ipkg update #ipkg install unslung-feeds # ipkg update
常用的 ipkg 命令有ipkg list, ipkg status和ipkg install <软件包名称>以安装特定的程序。这些软件包使 NSLU2 成为真正有能力的 Linux 设备;用户报告称,他们将 NSLU2 用作 Web、文件、邮件、Asterisk、媒体、Squid 和许多其他服务器应用程序。
为了将 NSLU2 从一个简单的 NAS 转换为强大的音乐服务器,使用了由 Ron Pedde 编写和维护的程序 mt-daapd。mt-daapd 充当 iTunes 服务器;它是 Apple 的 DAAP 协议的多线程实现,它广播音乐库以供与 iTunes 兼容的客户端使用。虽然 mt-daapd 可以驻留在 Linux 服务器上,但我选择使用 NSLU2 在我的网络上按需提供音乐,同时满足我对低功耗和节省空间的需求。Ron 积极维护 mt-daapd 程序,并在他的网站上(参见资源)主持有关该程序的问题和讨论;有一个活跃的用户群体,他们在网站论坛中分享知识并帮助新用户。
由于我预计将流媒体传输到 Roku Labs SoundBridge,我知道我受到的限制不是 mt-daapd 支持的协议,而是下游客户端是否支持通过 DAAP 协议播放文件格式。SoundBridge 将播放 MP3、非 FairPlay 无损 aac、aiff、WAV 格式以及 mt-daapd 广播的 Shoutcast 流。如果我打算通过 Ourtunes(一个开源的跨平台 Java iTunes 客户端)播放音乐,我可以让 mt-daapd 通过 DAAP 协议提供 MP3、WAV 和 OGG 格式。还有文件系统插件(gnome-vfs-daap 和 kde daap ioslave),允许 Rhythmbox 和 JuK 播放 mt-daapd 广播的音乐。Ron 指出,最新最前沿的“夜间版本”mt-daapd 支持服务器端转换;这允许将 wma、OGG 和 flac 文件类型转换为 .wav 格式并流式传输到下游客户端,并使任何可以播放 .wav 文件的客户端都可以播放转换后的文件。一个重要的注意事项是,mt-daapd 无法广播从 iTunes 音乐商店购买并受到数字保护的 aac DRM 文件。
掌握了这些信息后,我们在 NSLU2 上安装 mt-daapd。如果用户对最新的稳定版本(在撰写本文时为 0.2.3)感到满意,则安装就像 Telnet 进入 NSLU2 并发出以下命令一样简单#ipkg install mt-daapd以下载和安装该程序及其任何依赖项。要继续该过程,用户导航到 NSLU2 默认网络共享 /DISK 1/public(或从控制台导航到 /share/hdd/data/public),并创建一个子文件夹 /mp3,用于存储音乐文件。然后重新启动服务器,并通过发出以下命令初始化音乐数据库#/opt/etc/init.d/S60mt-daapd。如果 NSLU2 重新启动,此脚本将重新启动 mt-daapd。NSLU2 现在是一个 iTunes (DAAP) 服务器。要对此进行测试,请打开连接到网络的 iTunes 客户端,您会注意到左侧的音乐商店和 90 年代音乐之间有一个新的蓝色条目,标题为 mt-daapd。您的 iTunes 服务器的名称、密码、目录和其他变量可以通过编辑 /opt/etc/mt-daapd/mtdaapd.conf 来配置。
这涵盖了简单的方法,但更复杂的方法呢?Ron 最新功能集的不太稳定的夜间软件包可在 mt-daapd 网站上下载。Ron 不祥地指出,夜间版本是“开发代码...测试的次数明显少于稳定代码,并且很可能无法工作”。无论是否不祥,夜间软件包从未让我失望。在撰写本文时,最新的夜间软件包是 mt-daapd_0.2.2-1_armeb.ipk。要安装夜间软件包,请下载夜间软件包的副本并将其复制到 NSLU2 上的目录中;大多数用户选择 $HOME 目录。Telnet 进入 NSLU2 并导航回包含 .ipk 文件的目录后,命令#ipkg install mt-daapd_0.2.2-1_armeb.ipk下载任何依赖项并安装 mt-daapd。
就是这样!这两种方法都导致将 NSLU2 配置为本地网络上任何一台设备的 iTunes (DAAP) 服务器。在继续之前,安装一些软件包,这些软件包将提高您使用 NSLU2 的生活质量。我建议安装三个:Bash shell、用于轻量级安全 shell 访问的 DropBear 和用于从控制台下载文件的 wget。每个都可以通过在命令行中键入ipkg install xxx并将 bash、dropbear 和 wget 替换为 xxx 来轻松安装。
此时,NSLU2 正耐心地等待在您的网络上提供音乐服务。虽然可以使用 Windows 或 Mac 客户端访问音乐,但最初的意图是通过我的家用立体声音响系统以原始音质播放音乐。我可以从电脑到立体声音响拉一根电缆,但更具吸引力的解决方案是 Roku Labs SoundBridge。该设备配置了一个标准的有线以太网端口和可选的 CompactFlash 802.11b 适配器;我选择使用后者连接到我的网络。在将数字光纤 Toslink 连接从 SoundBridge 连接到我的立体声音响后,我启动了设备,并使用方便的遥控器输入了我的无线网络和加密数据(一个明显的缺点是该设备仅支持 WEP 加密)。快速检查以确保从 DHCP 服务器颁发了 IP 地址,并且 SoundBridge 已投入使用。SoundBridge 自动检测到我的 mt-daapd 库,我使用方便的遥控器从 NSLU2 选择和播放音乐。mt-daapd 支持静态和智能播放列表,并在对 mt-daapd 进行少量配置后将这些传递给 SoundBridge。该设备还将播放保存的播客和互联网广播电台;我的 NSLU2 已成功通过 DAAP 协议向我的家用立体声音响提供音乐服务数月。这是一种非常可靠和高效的跨本地网络提供音乐的方法,这得益于 Linux 社区中大量的开发人员和爱好者。
本文的资源: /article/8643。
John MacMichael(CISSP、GSEC、CWNA)是一名海军军官和信息专业人士,在信息保障领域工作。他认为自己是一名熟练的 Linux 用户,并在工作和家庭中使用各种发行版,包括 Slackware、Debian、Red Hat 和几个 Live 发行版;他尚未找到自己最喜欢的。他欢迎您在 johnny@757.org 处发表评论。