微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 领略Linux操作系统魅力:TiVo 揭秘

领略Linux操作系统魅力:TiVo 揭秘

时间:05-22 来源:互联网 点击:

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

有很多有关 TiVo“黑客”的站点会介绍这样那样的事情(通常总还有其他一些事情)。毕竟,对于拥有运行 Linux 的设备,有一半的乐趣是让它做比我们想做的更多(或者略有不同)。但是我们大部分人都只需要使用 Web 服务器(在我的印象中,在我家里已经有 10 台到 15 台 Web 服务器了,包括嵌入式系统)。

下面我们为计划的 TiVo 黑客攻击给出一些建议。您可能应该假设:您要排除所有的保证,以及它不能像一台录像机那样工作。这并不是您喜欢去修补问题,而是因为,试图在发生任何微小的变化时就对机器进行修改会导致问题恶化,但是这种恶化将被对问题的意识而抵消。

如果您正在试图升级硬盘,有些在线的指南会告诉您,首先从硬件仓库找到 T10 和 T15 Torx 螺丝起子。这从某个方面来说是个好建议:TiVo 的确使用了 T10 和 T15 Torx 螺丝。然而,如果您不是那种早已搜集了很多 Torx 工具的人,那就可能并不希望搞混这个问题。幸亏有了 Kuro 和 Mac Mini,您可以选择其他价格合理的 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”,也可能是后面的某个字母。确保您清楚自己要使用哪块硬盘!

# bzip2 -1c  /dev/hde > tivo.img.bz2

注意开始可能会出现一些严重的错误;而且一段时间内可能不会有任何输出结果。这个磁盘中包含了很多 空扇区,一开始整个扇区的内容都为 0,bzip2 负责对磁盘上的内容进行压缩 —— 在到达 4,096 字节之前可能需要 1 分钟,在到达 8,192 字节时还需要几分钟。最后的文件大小大约是 560 MB,对于一个 40 GB 的磁盘映像文件来说这还不错。如果您希望从这个备份进行还原,只需要执行下面的命令:

# bzip2 -dc  tivo.img.bz2 > /dev/hde

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

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

由于磁盘并没有进行分区,我们很容易就猜想它使用了某种专用的格式。研究其格式需要花费一定的时间。 当然,要做的第一件事情是将磁盘看成裸字节。磁盘上数据的开头有点类似于启动引导程序的

root=/dev/hda7runfinaltest=2 contigmem8=16M brev=0x10

接下来是真相大揭密 —— 这个磁盘上包含了一个 Apple 分区映射:

0x0200  50 4d 00 00  00 00 00 0d  00 00 00 01  00 00 00 3f  'PM.............?'0x0210  41 70 70 6c  65 00 00 00  00 00 00 00  00 00 00 00  'Apple...........'0x0220  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  '................'0x0230  41 70 70 6c  65 5f 70 61  72 74 69 74  69 6f 6e 5f  'Apple_partition_'0x0240  6d 61 70 00  00 00 00 00  00 00 00 00  00 00 00 00  'map.............'0x0250  00 00 00 00  00 00 00 3f  00 00 00 33  00 00 00 00  '.......?...3....'

您还怀疑吗?

回顾一下,对于运行 Linux 的 PowerPC 机器来说,使用一个 Apple 分区映射是非常合理的。对于 Apple 分区映射的支持并没有什么特殊,也有很好的文档进行介绍。这对于 MIPS 系统来说并不是非常典型,但是却可以选择与 Series1 系统兼容,后者是在 PowerPC 上运行的。

严格来说,这仍然是一种专有格式;不过它已经是大家都知道了的一种格式。不幸的是,这些分区使用的都不是 OS X 所熟悉的格式,但是我

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top