<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 領(lǐng)略L(fǎng)inux操作系統魅力:TiVo 揭秘

領(lǐng)略L(fǎng)inux操作系統魅力:TiVo 揭秘

作者: 時(shí)間:2012-05-22 來(lái)源:網(wǎng)絡(luò ) 收藏

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

注意開(kāi)始可能會(huì )出現一些嚴重的錯誤;而且一段時(shí)間內可能不會(huì )有任何輸出結果。這個(gè)磁盤(pán)中包含了很多 空扇區,一開(kāi)始整個(gè)扇區的內容都為 0,bzip2 負責對磁盤(pán)上的內容進(jìn)行壓縮 —— 在到達 4,096 字節之前可能需要 1 分鐘,在到達 8,192 字節時(shí)還需要幾分鐘。最后的文件大小大約是 560 MB,對于一個(gè) 40 GB 的磁盤(pán)映像文件來(lái)說(shuō)這還不錯。如果您希望從這個(gè)備份進(jìn)行還原,只需要執行下面的命令:

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

如果您的磁盤(pán)上已經(jīng)有一些數據,這個(gè)映像文件可能會(huì )遠遠大于 560 MB。此處假設您具有與 磁盤(pán)差不多的空閑空間。

那么,磁盤(pán)上有什么內容呢?

由于磁盤(pán)并沒(méi)有進(jìn)行分區,我們很容易就猜想它使用了某種專(zhuān)用的格式。研究其格式需要花費一定的時(shí)間。 當然,要做的第一件事情是將磁盤(pán)看成裸字節。磁盤(pán)上數據的開(kāi)頭有點(diǎn)類(lèi)似于啟動(dòng)引導程序的

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

接下來(lái)是真相大揭密 —— 這個(gè)磁盤(pán)上包含了一個(gè) 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 機器來(lái)說(shuō),使用一個(gè) Apple 分區映射是非常合理的。對于 Apple 分區映射的支持并沒(méi)有什么特殊,也有很好的文檔進(jìn)行介紹。這對于 MIPS 系統來(lái)說(shuō)并不是非常典型,但是卻可以選擇與 Series1 系統兼容,后者是在 PowerPC 上運行的。

嚴格來(lái)說(shuō),這仍然是一種專(zhuān)有格式;不過(guò)它已經(jīng)是大家都知道了的一種格式。不幸的是,這些分區使用的都不是 OS X 所熟悉的格式,但是我的 Mac Mini 可以讀取這個(gè)分區表。下面是這個(gè)分區表映射的內容:

Partition map (with 512 byte blocks) on '/dev/rdisk1'#:                type name                       length   base     ( size )1: Apple_partition_map Apple                          63 @ 12:               Image Bootstrap 1                     1 @ 441613243:               Image Kernel 1                     8192 @ 44161325 (  4.0M)4:                Ext2 Root 1                     524288 @ 44169517 (256.0M)5:               Image Bootstrap 2                     1 @ 446938056:               Image Kernel 2                     8192 @ 44693806 (  4.0M)7:                Ext2 Root 2                     524288 @ 44701998 (256.0M)8:                Swap Linux swap                 262144 @ 45226286 (128.0M)9:                Ext2 /var                       262144 @ 45488430 (128.0M)10:                 MFS MFS application region     524288 @ 45750574 (256.0M)11:                 MFS MFS media region         33494098 @ 46799150 ( 16.0G)12:                 MFS MFS application region 2   524288 @ 46274862 (256.0M)13:                 MFS MFS media region 2       44161260 @ 64       ( 21.1G)Device block size=512, Number of Blocks=80293248 (38.3G)DeviceType=0x0, DeviceId=0x0

這為我們能夠期望得到什么內容提供了很好的思想。首先,它好像是設計用來(lái)更新一個(gè)文件系統,同時(shí)在另外一個(gè)文件系統上運行,這樣能使更新更加安全。奇怪的是:這為文件系統提供了精確的塊偏移量和大小。這說(shuō)明現在可以重新在 Linux 機器上裝上這個(gè)磁盤(pán)并查看這些文件系統的內容了。

# 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 文件系統尚未格式化;它只是 256 MB 的空字節。而 Root 2 文件系統的內容非常理想:

# file root2.imgroot2.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

安全性

采用專(zhuān)用系統的缺點(diǎn)之一是, 具有一些旨在防止別人修改它的“安全性”特性。這是一個(gè)非常簡(jiǎn)單的經(jīng)濟學(xué)問(wèn)題 —— 以 100 美元的價(jià)格銷(xiāo)售具有硬盤(pán)和 TV 諧調器的通用 MIPS 系統的任何公司很快就破產(chǎn)了。對于現在來(lái)說(shuō),我們只是要了解一下 Linux 是如何在這個(gè)系統上運行的,而不是了解如何修改它。

注意,ext2 文件系統在不同系統之間的兼容性意味著(zhù)您可以選擇使用一個(gè)普通的 Linux 機器。您甚至可以設置一個(gè)交叉編譯器以及相關(guān)的工具,后面我們會(huì )更詳細地進(jìn)行介紹。然而,不要期望能夠很容易地修改內容;盡管已經(jīng)可以這樣做了,但是這并不意味著(zhù)這非常簡(jiǎn)單。記住,這是一個(gè)專(zhuān)有的可以實(shí)現錄像功能的硬件。更不必說(shuō),有很多公司都非常希望難以對它做較大修改。

在這個(gè)特定的 模型中,在加載內核之前,要進(jìn)行一個(gè)硬件安全性檢查。然后,內核本身具有一個(gè)內嵌的 RAMdisk,其中包含了一些安全性特性;我們可以對在硬盤(pán)上找到的代碼進(jìn)行比較,例如 /var/utils/checkkernel.tcl 腳本。

值得指出的是,在原始安裝中有大量的額外空間。根文件系統使用了 54 MB 的空間,還有 182 MB 的剩余空間;/var 使用了 3 MB,還有 116 MB 的空閑空間。當然,這樣做的目的是為了存儲大量的數據,例如您需要監視的程序。



關(guān)鍵詞: Linux操作系統 TiVo PNG文件

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>