快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

和记娱到h88285:Linux 的魅力 TiVo 揭密



每小我都已经知道 TiVo 可以“运行 Linux”。在这一期的“Linux 进展”中,Peter 将先容一下在 TiVo 上安装的 Linux 系统。钻研 TiVo 系统可以展示出一个公司是若何从桌面操作系统转换到嵌入式系统的。

有很多有关 TiVo“黑客”的站点会先容这样那样的工作(平日总还有其他一些工作)。终究,对付拥有运行 Linux 的设备,有一半的乐趣是让它做比我们想做的更多(或者略有不合)。然则我们大年夜部分人都只必要应用 Web 办事器(在我的印象中,在我家里已经有 10 台到 15 台 Web 办事器了,包括嵌入式系统)。

下面我们为计划的 TiVo 黑客进击给出一些建议。您可能应该假设:您要扫除所有的包管,以及它不能像一台录像机那样事情。这并不是您爱好去修补问题,而是由于,试图在发生任何微小的变更时就对机械进行改动会导致问题恶化,然则这种恶化将被对问题的意识而抵消。

假如您正在试图进级硬盘,有些在线的指南会奉告您,首先从硬件仓库找到 T10 和 T15 Torx 螺丝起子。这从某个方面来说是个好建议:TiVo 切实着实应用了 T10 和 T15 Torx 螺丝。然而,假如您不是那种早已汇集了很多 Torx 对象的人,那就可能并不盼和记娱到h88285望搞混这个问题。亏得有了 Kuro 和 Mac和记娱到h88285 Mini,您可以选和记娱到h88285择其他价格合理的 PowerPC® 的硬件。

对付这个实验,我的选择是 40 小时的 TiVo。这是一台 Series2 机械,这意味着它不如 Series1 机动和开放。不幸的是,这是今朝它们所贩卖的惟一产品,好在价格不贵。

备份

平日,在计划要做一些可能会改动电子器件的改动时,首先要进行备份。在对 TiVo 进行加电之前,我对全部磁盘进行了备份。这要打开机械(应用 T10 Torx 对象),松开驱动器(照样应用 T10),并拔出驱动器(应用 T15)。现在您获得了一个 40 GB 的硬盘。将这个硬盘放到一个老的 x86 Linux 机械中,您会看到一个不能识别的分区表。是以,在 Tivo 上并不存在分区(例如 /dev/hde1),而是一整块磁盘。这并没有什么问题。

图 1. TiVo 内视图

在我的系统中,我将这块磁盘放到了一个驱动器插槽中,系统将其辨觉得 /dev/hde。假如您应用一个外部的驱动器插槽,那么系统可能将其辨觉得 /dev/sdX,此中“X”是一个字母;假如您没有其他 SCSI 或者伪 SCSI 设备,那么这个字母可能便是“a”,也可能是后面的某个字母。确保您清楚自己要应用哪块硬盘!

清单 1. 进行备份

# bzip2 -1ctivo.img.bz2

留意开始可能会呈现一些严重的差错;而且一段光阴内可能不会有任何输出结果。这个磁盘中包孕了很多 空扇区,一开始全部扇区的内容都为 0,bzip2 认真对磁盘上的内容进行压缩 —— 在到达 4,096 字节之前可能必要 1 分钟,在到达 8,192 字节时还必要几分钟。着末的文件大年夜小大年夜约是 560 MB,对付一个 40 GB 的磁盘映像文件来说这还不错。假如您盼望从这个备份进行还原,只必要履行下面的敕令:

清单 2. 反向还原

# bzip2 -dc/dev/hde

假如您的磁盘上已经有一些数据,这个映像文件可能会远弘远年夜于 560 MB。此处假设您具有与 TiVo 磁盘差不多的余暇空间。

那么,磁盘上有什么内容呢?

因为磁盘并没有进行分区,我们很轻易就猜想它应用了某种专用的款式。钻研其款式必要花费必然的光阴。

当然,要做的第一件工作是将磁盘当作裸字节。磁盘上数据的开首有点类似于启动向导法度榜样的设置设置设备摆设摆设:

清单 3. 之前见过这个启动设置设置设备摆设摆设吗?

root=/dev/hda7

runfinaltest=2 contigmem8=16M brev=0x10

这为我们能够期望获得什么内容供给了很好的思惟。首先,它似乎是设计用来更新一个文件系统,同时在别的一个文件系统上运行,这样能使更新加倍安然。稀罕的是:这为文件系统供给了正确的块偏移量和大年夜小。这阐明现在可以从新在 Linux 机械上装上这个磁盘并查看这些文件系统的内容了。

清单 6. 具体懂得文件系统的内容

# dd if=/dev/hde bs=512 count=524288 skip=44169517 of=root1.img

# dd if=/dev/hde bs=512 count=524288 skip=44701998 of=root2.img

# dd if=/dev/hde bs=512 count=262144 skip=45488430 of=var.img

这显示 Root 1 文件系统尚未款式化;它只是和记娱到h88285 256 MB 的空字节。而 Root 2 文件系统的内容异常抱负:

清单 7. 好极了!

# file root2.img

root2.img: Linux rev 0.0 ext2 filesystem data

# mount -o loop root2.img /mnt

# ls /mnt

.  bin diag etc    initrd  lib     mnt proc sbin tvbin var

.. dev dist etccombo install lost+found opt res  tmp  tvlib

# mount -o loop var.img /mnt/var

# ls /mnt/var

.  a  dev  etc lost+found mnt  packages run  tmp

.. bin dist log mess    mtab persist  state utils

安然性

采纳专用系统的毛病之一是,TiVo 具有一些旨在防止别人改动它的“安然性”特点。这是一个异常简单的经济学问题 —— 以 100 美元的价格贩卖具有硬盘和 TV 谐调器的通用 MIPS 系统的任何公司很快就破产了。对付现在来说,我们只是要懂得一下 Linux 是若何在这个系统上运行的,而不是懂得若何改动它。

来看一下 Tcl 脚本,我留意到它是由 /tvbin/tivosh 解释的。这可能是一个 tcl 说冥器。然则稍等一下,它实际上是一个符号链接,链接到一个名为 tivoapp 的法度榜样。很多不合的法度榜样都邑链接到 tivoapp 上。它看起来就像是一个包孕多个不合法度榜样的统一的二进制文件。为什么要这样编译法度榜样的缘故原由并不异常直不雅 —— 它可以低落内存的应用,或者可以让系统更难以崩溃。

混杂与匹配

异常值得留意的一件工作是 TiVo 具有一个异常疏松的 shell 脚本、Tcl 法度榜样和二进制法度榜样的组合。查看一下法度榜样,就可以懂得到该法度榜样到底做什么。例如 installNFS 脚本,是应用 bash 编写的,它调用 text2osd 来显示消息。这个脚本中以致内嵌了一个 Tcl 脚本!

对付开拓来说,Linux 的一大年夜魅力就在于它可以自由地混杂并适应开拓对象的要求,例如 TiVo 就充分阐清楚明了这种优点。

系统启动

与任何 Linux 系统一样,TiVo 也会派生 /sbin/init,后者又会查看 /etc/inittab 的内容来确定要履行哪些操作。它所做的第一件工作是运行 /etc/rc.d/rc.sysinit,后者又会运行诸如 StageA_PreKickstart 和 StageG_PostApplication 之类的目录中的文件。它们都是按照顺序来履行的。

每个这种目录中都包孕很多的脚本,这些脚本的名字类似于 rc.Sequence_150.CheckForDebug.sh。这些文件与常见的 Linux 系统上的 /etc/rc.d/rc3.d/S12sshd 文件类似。留意 shell 的扩展顺序(例如 rc.Sequence_*.sh)用来确定这些文件的履行顺序。假如一个脚本的名字中包孕字符串 .Platform,那么它就只能在所匹配的硬件上运行。

对付供应商来说这是一个很好的设计,由于他们并不必要为每台机械都构建不合的磁盘。.Implementation 和 .Implementer 标记与此类似,它们用来标识只在某些系统上运行的脚本。Stage 目录调换了 rcN.d 目录,后者在 TiVo 系统上已经不存在了。

这种组织要领使查看在启动的每个步骤中到底履行了哪些功能变得相称简单。有趣的是,这些 shell 脚本被引入了父 shell 中,这样,早期的脚本就可以为今后的脚本设置一些情况变量了。

停止语

TiVo 是浩繁不合 Linux 哲学中一个异常迷人的例子,它还在赓续成长,与公司经由过程向用户贩卖办事和供给简单壮实的利用法度榜样来赢利的哲学形成了显明的比较。黑客发明的最有效的很多特点可能是让其他人不能应用完全定制的系统的客户技巧支持,同时纳闷它们为何不能事情。

从别的一方面来说,现在已经进行了大年夜量的努力来使得对系统的进击加倍艰苦。早期的 TiVo 系统平日被改动成 Web 办事器。我正在查看的一个特点正如任何人都懂得的一样,不能用来运行新内核;也弗成能不颠末对硬件(PROM,用来检查对软件的未经授权的改动)的进击就对系统进行大年夜量的和记娱到h88285改变。

值得一提的是,只管 GPL 要求 TiVo 必须公开自己的内核源代码,然则并没有不让它们构建一个不许您做任何变动的运行 Linux 的系统。这种系统有趣的方面在于,懂得系统若何来实现自己的功能,以及若何应用各类开源对象和技巧来构建一个嵌入式利用法度榜样。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: