?
快捷搜索:  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)?,F在您獲得了一個 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 的系統。這種系統有趣的方面在于,懂得系統若何來實現自己的功能,以及若何應用各類開源對象和技巧來構建一個嵌入式利用法度榜樣。

免責聲明:以上內容源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

您可能還會對下面的文章感興趣:

快三平台开户