新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 領略Linux操作系統(tǒng)魅力:TiVo 揭秘

領略Linux操作系統(tǒng)魅力:TiVo 揭秘

作者: 時間:2012-05-22 來源:網(wǎng)絡 收藏

看一看軟件

關于 最有趣的一件事情是它有很多特殊用途的應用程序。雖然從理論上來說它有一個顯示設備,但是實際上它只能通過在屏幕上卷屏來顯示文本。系統(tǒng)中有一個可執(zhí)行文件 /tvbin/text2osd,它聽起來像是一個將數(shù)據(jù)作為屏幕顯示寫到輸出磁帶上的應用程序。還有一些非常有趣的 PNG 文件,所有這些文件的大小都是典型的視頻文件的大小,其中包含了可能需要顯示的一些消息。

雖然這些軟件有點混亂,但是實際上并不需要在一些直觀的位置上具有真正的內(nèi)容;只有開發(fā)團隊需要這些內(nèi)容。有些內(nèi)容對于其他用戶來說可能并沒有太多意義,所有的 軟件都位于 /tvbin 和 /tvlib 中,但是很多程序的配置文件都位于 /opt/tivo 中。更傳統(tǒng)的 Linux 文件系統(tǒng)的布局應該將這些文件放到 /opt/tivo/bin、/opt/tivo/lib 和 /opt/tivo/etc 中。

來看一下 Tcl 腳本,我注意到它是由 /tvbin/tivosh 解釋的。這可能是一個 tcl 解釋器。但是稍等一下,它實際上是一個符號鏈接,鏈接到一個名為 tivoapp 的程序。很多不同的程序都會鏈接到 tivoapp 上。它看起來就像是一個包含多個不同程序的統(tǒng)一的二進制文件。為什么要這樣編譯程序的原因并不非常直觀 —— 它可以降低內(nèi)存的使用,或者可以讓系統(tǒng)更難以崩潰。

混合與匹配

非常值得注意的一件事情是 具有一個非常松散的 shell 腳本、Tcl 程序和二進制程序的組合。查看一下程序,就可以了解到該程序到底做什么。例如 installNFS 腳本,是使用 bash 編寫的,它調(diào)用 text2osd 來顯示消息。這個腳本中甚至內(nèi)嵌了一個 Tcl 腳本!

對于開發(fā)來說,Linux 的一大魅力就在于它可以自由地混合并適應開發(fā)工具的要求,例如 TiVo 就充分說明了這種優(yōu)點。

系統(tǒng)啟動

與任何 Linux 系統(tǒng)一樣,TiVo 也會派生 /sbin/init,后者又會查看 /etc/inittab 的內(nèi)容來確定要執(zhí)行哪些操作。它所做的第一件事情是運行 /etc/rc.d/rc.sysinit,后者又會運行諸如 StageA_PreKickstart 和 StageG_PostApplication 之類的目錄中的文件。它們都是按照順序來執(zhí)行的。

每個這種目錄中都包含很多的腳本,這些腳本的名字類似于 rc.Sequence_150.CheckForDebug.sh。這些文件與常見的 Linux 系統(tǒng)上的 /etc/rc.d/rc3.d/S12sshd 文件類似。注意 shell 的擴展順序(例如 rc.Sequence_*.sh)用來確定這些文件的執(zhí)行順序。如果一個腳本的名字中包含字符串 .Platform,那么它就只能在所匹配的硬件上運行。

對于供應商來說這是一個很好的設計,因為他們并不需要為每臺機器都構建不同的磁盤。.Implementation 和 .Implementer 標記與此類似,它們用來標識只在某些系統(tǒng)上運行的腳本。Stage 目錄替換了 rcN.d 目錄,后者在 TiVo 系統(tǒng)上已經(jīng)不存在了。

這種組織方式使查看在啟動的每個步驟中到底執(zhí)行了哪些功能變得相當簡單。有趣的是,這些 shell 腳本被引入了父 shell 中,這樣,早期的腳本就可以為以后的腳本設置一些環(huán)境變量了。

結束語

TiVo 是眾多不同 Linux 哲學中一個非常迷人的例子,它還在不斷發(fā)展,與公司通過向用戶銷售服務和提供簡單健壯的應用程序來賺錢的哲學形成了顯著的對比。黑客發(fā)現(xiàn)的最有效的很多特性可能是讓其他人不能使用完全定制的系統(tǒng)的客戶技術支持,同時納悶它們?yōu)楹尾荒芄ぷ鳌?

從另外一方面來說,現(xiàn)在已經(jīng)進行了大量的努力來使得對系統(tǒng)的攻擊更加困難。早期的 TiVo 系統(tǒng)通常被修改成 Web 服務器。我正在查看的一個特性正如任何人都了解的一樣,不能用來運行新內(nèi)核;也不可能不經(jīng)過對硬件(PROM,用來檢查對軟件的未經(jīng)授權的修改)的攻擊就對系統(tǒng)進行大量的改變。

值得一提的是,盡管 GPL 要求 TiVo 必須公開自己的內(nèi)核源代碼,但是并沒有不讓它們構建一個不許您做任何更改的運行 Linux 的系統(tǒng)。這種系統(tǒng)有趣的方面在于,了解系統(tǒng)如何來實現(xiàn)自己的功能,以及如何使用各種開源工具和技術來構建一個嵌入式應用程序。


上一頁 1 2 3 下一頁

關鍵詞: Linux操作系統(tǒng) TiVo PNG文件

評論


相關推薦

技術專區(qū)

關閉