热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux的魅力MediaMVP内幕

Linux的魅力MediaMVP内幕--Linux通用技术-Linux编程与内核信息,下面是详情阅读。
  除了Hauppage MediaMVP 以外,我确实还见过更小的嵌入式 Linux 系统,但 Hauppage MediaMVP 是最小的非手持设备,它也是市面上最便宜的 Linux 系统之一。MediaMVP 在某些方面与 TiVo 非常相似:它纯粹以应用为目的,仅执行特定功能。但与 TiVo 不同的是,它没有竭力阻止用户加载他们自己的软件,毫无疑问,很多用户已经那样做了。(关于我对 TiVo 的深入探讨,请阅读我早先在 Linux 的魅力 这一专栏中撰写的文章 “TiVo 揭密”。

  本文探讨了 Hauppage 提供的 “标准” 安装,还介绍了 MediaMVP Media Center(MVPMC)项目,此项目为该系统开发定制的用户环境。

  在机顶盒内

  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 美元的价格销售这种出色的瘦客户机产生的负面效应无疑纯属偶然。
推荐阅读
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 项目需要将音视频文件上传服务器,考虑并发要求高,通过七牛来实现。直接上代码usingQiniu.IO;usingQiniu.IO.Resumable;usingQiniu.RPC; ... [详细]
  • PHP编程能开发哪些应用?
    导读:很多朋友问到关于PHP编程能开发哪些应用的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览: ... [详细]
  • mysql5.6 多实例 主从安装_MySQL5.6一主多从的半同步复制实例
    半同步简介:在默认情况下,MySQL的复制是异步的,这意味着主服务器及其从服务器是独立的。异步复制可以提供最佳的性能,因为主服务器在将更新 ... [详细]
  • 提示信息_局域网内互发提示信息
    本文由编程笔记#小编为大家整理,主要介绍了局域网内互发提示信息相关的知识,希望对你有一定的参考价值。【局域网内互发提示信息】准备工作:1.rege ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • Introduction(简介)Forbeingapowerfulobject-orientedprogramminglanguage,Cisuseda ... [详细]
  • NFS文件共享系统
    1、概述:NFS(NetworkFileSystem)意为网络文件系统,它最大的功能就是可以通过网络,让不同的机器不同的操作系统可以共享 ... [详细]
author-avatar
用户tznpaynnl5
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有