作为一款 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
|
[1] [2] 下一页
共6页: 上一页 1 [2] [3] [4] [5] [6] 下一页