新聞中心

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

        領略Linux操作系統魅力:TiVo 揭秘

        作者: 時間:2012-05-22 來源:網絡 收藏

        看一看軟件

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

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

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

        混合與匹配

        非常值得注意的一件事情是 具有一個非常松散的 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,用來檢查對軟件的未經授權的修改)的攻擊就對系統進行大量的改變。

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


        上一頁 1 2 3 下一頁

        關鍵詞: Linux操作系統 TiVo PNG文件

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 阆中市| 内黄县| 泰兴市| 左贡县| 内江市| 宁城县| 黎平县| 固安县| 临沭县| 巴中市| 博爱县| 沙坪坝区| 临西县| 梁山县| 中宁县| 平泉县| 苏州市| 鄂托克旗| 浦城县| 洪泽县| 新沂市| 饶阳县| 彩票| 昌都县| 永兴县| 诏安县| 彩票| 南川市| 满洲里市| 思茅市| 广昌县| 澜沧| 分宜县| 广丰县| 贡嘎县| 太谷县| 红安县| 察雅县| 房产| 石柱| 句容市|