作为一款 MP3 和 MPEG 播放器,Hauppauge MediaMVP 使您能够通过电视机播放数字媒体。它是一种目标明确的嵌入式设备,也是在微型硬件上的简洁 Linux® 实现的最佳例子。
除了 Hauppage MediaMVP 以外,我确实还见过更小的嵌入式 Linux 系统,但 Hauppage MediaMVP 是最小的非手持设备,它也是市面上最便宜的 Linux 系统之一。MediaMVP 在某些方面与 TiVo 非常相似:它纯粹以应用为目的,仅执行特定功能。但与 TiVo 不同的是,它没有竭力阻止用户加载他们自己的软件,毫无疑问,很多用户已经那样做了。(关于我对 TiVo 的深入探讨,请阅读我早先在 Linux 的魅力 这一专栏中撰写的文章 “TiVo 揭密”。
本文探讨了 Hauppage 提供的 “标准” 安装,还介绍了 MediaMVP Media Center(MVPMC)项目,此项目为该系统开发定制的用户环境。
[警告:按本文介绍的方法或其他任何方法修改 MediaMVP 都可能导致其无法使用,并且很可能不在厂商的担保范围内。修改风险自担。—— 编辑]在机顶盒内
MVP 是一项特别精简的小发明。从某种程度上来说,它的板载硬件甚至比 Kuro Box 还要少(关于 Kuro Box 的文章见 参考资料 部分),没有以太网,也没有足够的闪存来容纳一个内核。(实际上,对内核加以调整后可以放到 MVP 中,但他们没有这样做。)处理器是一个 STBx25xx 系列的机顶控制器,它以一个 PowerPC® 405 内核为中心构造。这种机器具有 32MB 的 RAM 和一个以太网控制器。某些版本还提供了无线功能,我所用的版本只是在母板上有一束焊接式接头,可能还有一个 CardBus 插槽。我在一个论坛中发现了一篇参考文章(见 参考资料),适于想要连接串口的用户阅读,因此这种功能也是可用的。还有一个 IR 端口,Linux 内核可通过 /dev/rawir 使用它。
STB 处理器不是普通的 PPC405,它具有内置的硬件 MPEG 解码支持,它是此类产品的绝配,使系统能够传输大量视频音频,而无需极高的处理器速度。简言之,看过所有那些关于 PowerPC 系统的市场宣传材料后,您知道了这种系统有着非比寻常的成本节约效果,而且易于修改,能够满足特定业务市场,而这就是一个具体的例子。处理器的额定速度是 252 MHz。
从硬件设计可以清楚地了解,这是一种定位明确的设备,很可能这正是该系统成本低于 Kuro Box (更不用说普通的计算机了)的原因。
在机顶盒外
在外部,MediaMVP 的功能只是搜索服务器。简化此系统的方法之一就是省略了通常要为内核和根文件系统使用的大容量闪存,这个机顶盒通过网络引导。为了避免与已有网络引导服务器发生冲突,MediaMVP 使用了非标准端口号。随产品打包发布的软件是一个仅适用于 Windows 的服务器,它结合了网络引导和流媒体服务。机顶盒在引导时会从服务器获取配置信息和名为 dongle.bin 的文件。该文件包含许多内容,有一个引导装入程序、一个 ramdisk 映像和一个内核。通过一个小小的 Perl 脚本即可轻松提取出这一切。
默认安装非常简单,只需轻松与基于 Windows 的服务器程序会话即可。如您所想,磁盘上的配置比较有趣。让人出乎意料的是,您会发现系统中包含一个 BusyBox 安装(V 0.60.5)。(参考资料 中提供了一个链接,可获得关于 BusyBox 的更多信息。)整个 ramdisk 包含略超过 2MB 的文件:其中 686KB 用于 BusyBox、1191KB 用于 MediaMVP 的 userland 软件、436KB 用于内核模块,还有一些小的配置文件。与 Tivo 精细复杂的安装相比,此安装更加简捷。
安装文件非常小,完全可以完整地重新生成这些文件。/etc/inittab 文件简直是一个简洁方面的奇迹:
清单 1. /etc/inittab 的内容
::sysinit:/etc/rcS ::respawn:-/bin/sh ::respawn:/bin/auto-dongle.sh #::respawn:/etc/serial_proxy.sh |
serial_proxy 程序是一段在端口 4000 上运行 netcat 的袖珍脚本。它被注释掉了,无论如何,发布版中已删除了 nc 二进制文件。rcS 脚本处理启动任务,auto-dongle 脚本只是运行 mpeg 解码程序。解码程序若停止会自动重新启动,看起来这是这种环境中的合理选择,在桌面系统中,您可能希望关闭发生错误的服务或发出警告,但在嵌入式设备中,这不是真正的重点。
rcS 脚本形式如下所示,补充了注释掉的位:
清单 2. /etc/rcS 脚本
#! /bin/sh #/bin/umount -a /bin/mount -a -o rw # Auto configuration mode # AUTO= AUTO=auto- # ismods for dongle /etc/insmods.sh # user state fpage /usr/bin/fpage >/dev/null 2>&1 & # set up network . /etc/${AUTO}netsh.sh |
与 inittab 文件一样,这些文件需要调整一个未出现的配置选项,这里没有普通的 netsh.sh,只安装了 auto-netsh.sh 脚本。auto-netsh.sh 脚本调整一些内核联网参数,配置 loopback 接口,并启动一个 DHCP 客户机。
尽管我的测试系统没有无线卡,但至少已经提供了无线联网的支持,“mediamvp” 二进制代码(fpage 和 mpgdec 符号连接的目标)中包含大量字符串,表示 NWID 设置和其他 802.11 术语。这可能必须用到 MediaMVP 的支持无线功能的版本中的声明。在我所看到的设备中,至少已部分地实现了无线支持。顺便说明一下,mediamvp 二进制文件并非一直是与 BusyBox 分开的,在非常早期的版本中,它们都是同一个二进制文件。有些人一直很关心这个问题,但如今 mpgdec 代码已不再发布,而 BusyBox 是以 GPL 为依据的代码。
该系统的大部分功能是隐藏的,看上去似乎绝大部分功能都要依靠 Windows 那一端。如果不使用某些软件,您就无法对这个机顶盒做过多的修改。与当前的 TiVo 系统不同,MediaMVP 未过多地考虑使您免于更新和/或替换其文件系统的内容。那么为什么要这样做呢?
了解 MVPMC 项目
MediaMVP Media Center(MVPMC)项目是随 MediaMVP 提供的软件的完全替代性选择。它可通过 NFS 或从 MythTV、ReplayTV 服务器处获取视频。也可通过 NFS 或从 SlimServer 服务器处获取音频。该软件依然处于起步阶段,许多功能还无法工作,或者无法很好地工作。(部分问题在于需要 MVMPC 开发人员向工程师请求控制器芯片的硬件文档,如果芯片的文档对开源开发人员可用,那么 MVMPC 开发人员的日子会更好过。)但另一方面,它具有开源系统的普遍优势:如果您希望对其加以修改,即可访问源代码。
MediaMVP 的引导装入程序依然需要具备一个采用正规格式的 dongle.bin 文件。此外,必须载入用于不同硬件块的内核模块,由于它们的源代码目前尚不可用,因此必须从旧系统中复制近来。然而,过程已明确,MVPMC 构建脚本可用新的根文件系统和新的内核生成映像。
MVPMC 根文件系统大于固有文件系统,但这并非总是有意义的:
清单 3. 为什么将它放在 ramdisk 上?
$ ls -ld lost+found drwx------ 2 root wheel 176128 Feb 10 20:28 lost+found |
BusyBox 二进制文件的版本实际上是 1.0,但它比最初安装的版本(0.60.5)要小,只需占用 600KB,而与之关联的命令更多。我无法确定究竟是什么原因导致旧版本的体积更大。总体上来说,该系统包含的文件比最初随 MediaMVP 发布的系统中要多得多,言外之意就是,随 MediaMVP 发布的系统所使用的部分数据文件必定是嵌入在可执行文件之中或从服务器处传入的。MVPMC 系统提供了一套更为完善的 shell 实用工具集 —— 不是说它们完成的功能多,而是考虑到缺乏登录方法!但 MVPMC 系统表现出了倾向于调试的征兆;您需要自行添加连接的方式,但只要能够登录,您就可以随意使用挂钩程序,任意连接了。
MVPMC 项目在运行时从服务器处获得额外的配置,与机顶盒下载的 dongle.bin 文件(包含内核和文件系统)相应,它会获取一个 dongle.config 文件,通过 /etc/rcS 即可轻松运行此文件。因此,如果您希望运行 telnetd,只需将其添加到您的 dongle.config 文件中即可。
此项目持续的开发工作表明,尽管它尚未达到与最初配套发行的系统一样的稳定程度,但将来有可能提供更广泛的功能。价格也是一个难题,改进低价硬件的一种方法就是提供免费软件(啤酒业中就是这样做的)。局限性显而易见,设备本身实质上没有什么扩展的选项,除了播放媒体之外,它几乎没有其他用途。另外,构建一个 Multiple Arcade Machine Emulator(MAME)平台的想法充满诱惑,有多种基于 IR 的远程系统,响应时间令人满意,硬件也将是最佳匹配。需要重新审视构建流程,但它终将实现。
袖珍的环境
MVP 是您有可能遇到的最小的 Linux 系统之一,在许多方面来说,它的硬件规格都要低于手持设备(例如 Zaurus,详见我的 Linux 的魅力 专栏中的 “Linux 的魅力: Zaurus 引领嵌入式 Linux”),而局部存储的缺乏引起了对根文件系统的迫切需求。其他系统有能力轻而易举地忽略这里或者那里的数兆字节,但 MVP 必须竭力保持一切最小。类似地,较低的 RAM 占用率也使得密切关注内存泄露问题变得及其重要。
这也就表示,这个环境对于 Linux 来说非常容易处理。Linux 开发人员一直都有这样的习惯:刻意地以因 “过慢” 或 “过小” 而忽略的机器为目标。我们不是没有听说过,十年前的机器现在依然在作为服务器使用,运行着现代的 Linux。因此,很多最艰难的工作已经完成了,举例来说,Linux 很好地脱离了可用的任何类型的臃肿用户界面,Linux 内核的模块化程度也很高。Userland 的可适应性甚至更高,在您尝试构建一个需耗用近千兆字节的系统时(如今的许多发布版都会占用规模相当的空间),这一点非常重要。
就我使用过的嵌入式 Linux 系统来说,在为那些不了解、不关心操作系统是什么或者仅仅希望使机顶盒正常工作起来的用户提供透明性方面, MediaMVP 可能做得最出色。在其他系统中,OS 有一定的侵入性,在 MediaMVP 中,OS 实际上是不可见的,这与 TiVo 相同。然而,MediaMVP 包含了 Linux 产品的灵活性,这或许是因为它是作为硬件的一部分销售的,而不是那种要您使用付费服务的加密设备。
对于一般的终端用户,修改系统的理论选择根本就不是什么值得关注的议题:有时是这样,大多数 TiVo 所有者甚至从未考虑过他们的播放器上是否存在着 “某种类型的操作系统”,他们也不会发现修改后的系统中有什么好处值得他们花费时间和精力去进行这样的修改工作,但是,对于那些确实处于某些原因迫切希望或需要修改系统的人来说,有这种选择是一件好事。MediaMVP 的开放性会带来意外的收获。
此外,修改可自由进行之后,即使是没有兴趣进行修改的用户也会得到一定的好处,讨论 MediaMVP 的论坛中包括有一些显然不了解 Linux 的用户发表的帖子,但他们都对自己的视频播放器有了更多的选择而倍感高兴。我认为,在 Linux 上构建这一系统的决策看上去取得了重大的成功,以大概 100 美元的价格销售这种出色的瘦客户机产生的负面效应无疑纯属偶然。
上一页 [1] [2]