HAL 项目

作者:Pascal Charest

啊,在廉价的商品硬件上破解 Linux 的乐趣。我们是蒙特利尔社区无线小组 Ile Sans Fil,该小组在 2005 年 10 月的本杂志中报道过。在过去的三年中,我们已经在我们城市的公共场所部署了运行 Linux 的嵌入式系统,以鼓励当地社区。我们的全志愿者小组现在在城市周围的咖啡馆、图书馆和公园中拥有 100 多个热点,用户超过 26,000 人。为了实现这一目标,我们使用了黑客最喜欢的 Linksys WRT54G,并开发了强制门户套件 WifiDog。

我们最新的项目是 HAL,本地艺术家中心(这个首字母缩写词在法语中也适用)。HAL 盒子是小型 NSLU 网络存储设备,我们将其本地安装在我们的某些 Wi-Fi 热点,然后远程填充当地创作者的音乐和电影。由于盒子直接位于局域网上,因此内容可以以 HDTV 分辨率流式传输,而不会出现停顿或缓冲,也不会产生带宽费用。此外,由于我们使用 Zeroconf,用户的媒体播放器会自动发现内容。除了促进意外发现之外,用户还可以使用专门为富媒体设计的熟悉界面与内容进行交互。我们希望将 HAL 服务器打造成一个文化聚会点——让路人可以轻松接触到来自该社区的艺术家的作品。

我们组合在一起的技术也可以在多种方式中使用,既可以作为单个安装,也可以跨多个站点部署在网络中。在本文中,我们将描述我们的设置,以便您可以开始自己的项目。

The HAL Project

图 1. HAL 团队:Pascal Charest、Francis Daigneault、Michael Lenczner 和 Richard Lussier(缺少 François Proulx)

硬件方面如何?

HAL 使用 Linksys 的 NSLU2 网络设备。这是一个小型电路板,配备 266MHz XScale CPU(ARM 架构,英特尔制造)、两个 USB 2.0 端口和一个 10/100Mbps 网络接口。NSLU2 是黑客们的另一个最爱。它有两个可用的替代固件,Unslung 和 OpenSlug,两者都受到活跃社区的支持。我们为这个项目选择了 OpenSlug。

由于我们无法保证场地的电气系统,我们使用自动开启电路对电路板进行物理接线。如果您想要关于如何做到这一点的说明,您应该访问网站并通读有关使您的保修失效和烧毁房屋的适当免责声明。

由于 NSLU 没有内置存储,我们连接了一个小的 Seagate 5GB 硬盘驱动器。我们使用的硬盘驱动器的外形尺寸与小型冰球相似。我们当地的硬件专家 Richard Lussier 能够将硬盘驱动器和 NSLU 板紧密地封装在一个新的外壳中,同时保持对另一个未使用的端口的访问。如果您能找到您自己的 Richard,我们建议您也这样做。

The HAL Project

图 2. HAL 1.0 版本

软件方面如何?

HAL 使用开源媒体分发软件 Firefly Media Server(前身为 mt-daapd),由 Ron Pedde 开发。Firefly 服务器使用 Apple 的 daap 协议流式传输媒体,使任何运行 iTunes 或任何其他启用 daap 的媒体播放器的人都可以访问 HAL 盒子。而且,Firefly 没有 iTunes 服务器每天五次连接的限制,这是一个优点。

要安装 Firefly,您需要在 NSLU2 上安装 Linux。由于 NSLU2 是 ARM 架构,因此您需要为 NSLU2 交叉编译的 Linux 二进制文件。如果您想在刷写任何内容之前试用该系统,您可以在您的计算机上安装适用于 Windows 和 Linux 的 x86 二进制软件包。

OpenSlug 发行版包含大多数所需的工具和库,它们已经过交叉编译并准备就绪。我们交叉编译了任何缺失的部分,并将生成的二进制文件放在 Web 上供您使用。在下面的安装说明末尾附近,您将启动一个脚本,该脚本将下载并安装它们。

为了简化 daap 流发现过程,我们使用 IETF 的 Zeroconf 工作组定义的多播 dns (m-dns) 技术。这与打印机制造商用来使 Mac 用户的安装和配置无缝衔接的技术相同。我们使用 Firefly 中包含的 m-dns 守护程序,它除了 daap 之外,不实现协议中可用的任何额外功能。这没关系;daap 是我们所需要的全部。

最后,我们通过 rsync 和一系列小型 bash 脚本将内容从中央服务器推送到 HAL 盒子。

安装时间

让我们准备好破解盒子。对于本文,我们跳过 Mac OS X 说明。这是一个特殊的复杂情况;请访问我们的网站获取更多信息。否则,这是一个四步过程:刷写设备、将操作系统移动到硬盘驱动器、安装 Firefly Media Server 并自定义您的配置。

首先,您需要刷写软件。在 Microsoft Windows 下,使用 Sercomm 的实用程序,在 Linux 下使用 upslug2。您可以通过我们的网站 www.halproject.net/wiki/Hal-LinuxJournal 找到这两者。

然后,从发行页面下载“NSLU2 的 OpenSlug 固件,二进制版本”,您也可以通过我们的网站访问该页面。

请注意——下一步是您不希望搞砸的一步。按住重置按钮并打开 NSLU 的电源。当黄灯变为红色时(大约十秒钟)松开重置按钮。如果一切正常,NSLU 的 LED 应该闪烁绿色和红色。这表明 NSLU 处于升级模式。现在,按照您的软件说明上传固件。在启动传输后大约三分钟内,软件应指示闪存过程成功。

重启 NSLU。此时,您的硬盘驱动器仍然放在您的桌子上,未插电。在启动序列结束时,一旦 NSLU 上的灯停止闪烁,将您的硬盘驱动器连接到第一个 USB 端口(靠近电源的端口)。

通过 SSH 登录到盒子。根据设备的版本、过去的设置和星体排列,IP 可能是 192.168.1.77(Linksys 的默认值)、您之前配置的静态地址,或者它可能是通过 DHCP 获得的。用户名是 root,密码是 opeNSLUg。

登录后,使用 fdisk 在 sda 设备上创建分区。

我们使用以下方案

/dev/sda1 : 500 megs, type 82 (linux)
/dev/sda2 : 258 megs, type 83 (swap)
/dev/sda3 : "the rest", type 82 (linux)

第一个分区用于操作系统(挂载在 / 上)。第二个是 Linux 交换分区。第三个将由安装脚本挂载在 /home/musique 上。

分区到位后,创建文件系统(nslu> 是提示符)

nslu> mkreiserfs -q /dev/sda1 ; mkreiserfs -q /dev/sda3
nslu> halt

NSLU 将自行关闭。拔下硬盘驱动器,然后重启 NSLU。一旦它启动,ssh登录,将 USB 硬盘驱动器重新插入同一端口(记住,靠近电源的端口?),然后启动以下三个命令

nslu> turnup init
nslu> turnup disk -i /dev/sda1 -t reiserfs
nslu> reboot

第一个命令返回各种问题(新的 root 密码、主机名、网络信息);第二个命令将 OpenSlug 操作系统复制到硬盘驱动器,第三个命令重启 NSLU。从那时起,无需再次移除硬盘驱动器。

如果一切顺利,您现在已经安装了 OpenSlug,具有您自己的主机名和您自己的自定义网络设置。这为您提供了一个很棒的小型 Linux 盒子,您可以在其中运行各种软件。OpenSlug 的软件包系统是 ipkg。开始吧!

媒体服务器

安装 HAL 非常容易——真的。您需要做的就是从 HAL_Project 服务器获取 admin.sh 脚本

nslu> wget http://files.halproject.net/lj/admin.sh
nslu> sh admin.sh

此脚本安装所有其他必需的部件(例如 mt-daapd、OpenSSH、rsync、库等)。

微调

您将需要更改默认配置。查看HAL-Help命令以获取更多信息。您还应该运行HAL-SetName来更改向 iTunes 客户端广播的名称。

就是这样。这就是从头开始构建 HAL 盒子所需的所有知识。将您的 HAL 盒子插入您的网络,以查看您现在为空的共享自动出现。您可以使用HAL-AddSources命令在 OpenSlug 提示符下添加媒体源。

未来发展

我们希望切换到比 Firefly Media Server 附带的 mdns 服务器更强大的服务器。特别是,我们希望除了 daap 共享之外,还广播其他服务。想象一下定位书签,它会自动且仅临时地添加到用户的浏览器(Safari 已经支持此功能),或者像 SubEthaEdit 这样的协作工具。

待办事项列表上的另一个重要功能是完成中央服务器。媒体同步对于两到三个 HAL 盒子来说很容易,但在更大的 HAL 部署中,中央管理工具变得必不可少。

我们也在研究其他硬件平台。本文重点介绍 Linksys NSLU2,但存在许多其他有趣的硬件。ASUS WL-HDD2.5 将 2.5 英寸硬盘驱动器外壳与 Wi-Fi 无线电配对,这对于 HAL 来说是理想的选择。但是,它的 CPU 比 NSLU 的慢得多,并且其内存几乎不存在,因此尚不清楚我们的软件是否适合或者是否可以使其适合。该设备以及许多其他设备都在我们的订购和测试列表中。

该项目开放进一步发展的另一个方面是版权保护。内容提供商(在我们的案例中,是学生运营的广播电台和艺术家团体)更有可能为该项目贡献媒体,因为他们确信媒体不会在第二天最终出现在 P2P 网络上。我们知道存在从 daap 源中提取内容的技术,但我们将努力限制这些可能性(知道我们无法完全消除它们)。

在保持这项技术适合个人 HAL 使用的同时,我们很高兴将这个项目扩展到更大的规模。我们目前已部署 12 个盒子,并计划到 2006 年底扩展到 25 个。此外,我们希望帮助社区无线小组 WirelessToronto 在不久的将来建立自己的 HAL 盒子网络。创建更丰富、更多样化、更多人访问的本地文化的目标是崇高的,但希望这个项目能够产生影响。

HAL 项目还有很多工作要做。我们期待听到那些想要卷起袖子加入进来的人们的声音。

本文的资源: /article/9459

Pascal Charest 是一名网络顾问。他是 HAL 项目的技术协调员,也是 Ile Sans Fil 的董事会成员。他花了太多晚上破解硬件。

Michael Lenczner 通过他的组织 CivicSense.ca 帮助开发免费信息基础设施。他是 Ile Sans Fil 的联合创始人,也是蒙特利尔 HAL 项目的非技术协调员。

Guillaume Marceau 是布朗大学的计算机科学研究生,也是 Ile Sans Fil 的新志愿者。

加载 Disqus 评论