歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

嵌入式應用—腕表到基於群集的超級計算機

現在 Linux 廣泛用於各類計算應用,不僅包括 IBM 的微型 Linux 腕表、手持設備(PDA 和蜂窩電話)、因特網裝置、瘦客戶機、防火牆、工業機器人和電話基礎設施設備,甚至還包括了基於集群的超級計算機。讓我們看一下 Linux 用作嵌入式系統需要提供哪些功能,以及它在目前可用的選擇中最具吸引力的原因所在。    嵌入式系統的出現  用於控制設備的計算機,也叫做嵌入式系統,它的歷史幾乎和計算機自身的歷史一樣長。它們最初於六十年代晚期在通訊中被用於控制機電電話交換機。由於在過去的十多年裡,計算機產業不斷朝著更小的系統方向發展,嵌入式系統也與之一起為這些小型機器提供了更多的功能。漸漸地,就需要把這些嵌入式系統連接到某種網絡上,因而也就產生了對網絡棧的要求,這提高了系統的復雜程度並要求更多的存儲器和接口,還有,您猜對了,操作系統的服務。    七十年代晚期出現了用作嵌入式系統的現成的操作系統,現在有許多可行的選擇方案。其中,一些主要的競爭者開始嶄露頭角,比如,VxWorks、pSOS、Neculeus 和 Windows CE。    在嵌入式系統中使用 Linux 的優點和缺點  雖然大多數 Linux 系統運行在 PC 平台上,但 Linux 也可以作為嵌入式系統的可靠主力。Linux 流行的“back-to-basics”方法使得它的安裝和管理比 UNIX 更加簡單靈活,這對於那些 UNIX 專家們來說又是一個優點,他們已經因為 Linux 中有許多命令和編程接口同傳統的 UNIX 一樣而賞識它了。    典型的壓縮包裝 Linux 系統經過打包,在擁有硬盤和大容量內存的 PC 機上運行,嵌入式系統可不要這麼高的配置。一個功能完備的 Linux 內核要求大約 1 MB 內存。而 Linux 微內核只占用其中很小一部分內存,包括虛擬內存和所有核心的操作系統功能在內,只需占用 Pentium CPU 系統的 100 K 內存。只要有 500 K 的內存,一個有網絡棧和基本實用程序的完全的 Linux 系統就可以在一台 8 位總線(SX)的 Intel 386 微處理器上運行的很好了。由於內存要求常常是需要的應用所決定的,比如 Web 服務器或者 SNMP 代理,Linux 系統甚至可以僅使用 256 KB ROM 和 512 KB RAM 進行工作。因此它是一個瞄准嵌入式市場的輕量級操作系統。    與傳統的實時操作系統相比(RTOS),采用象嵌入式 Linux 這樣的開放源碼的操作系統的另外一個好處是 Linux 開發團體看來會比 RTOS 的供應商更快地支持新的 IP 協議和其它協議。例如,用於 Linux 的設備驅動程序要比用於商業操作系統的設備驅動程序多,如網絡接口卡(NIC)驅動程序以及並口和串口驅動程序。    核心 Linux 操作系統本身的微內核體系結構相當簡單。網絡和文件系統以模塊形式置於微內核的上層。驅動程序和其它部件可在運行時作為可加載模塊編譯到或者是添加到內核。這為構造定制的可嵌入系統提供了高度模塊化的構件方法。而在典型情況下該系統需結合定制的驅動程序和應用程序以提供附加功能。    嵌入式系統也常常要求通用的功能,為了避免重復勞動,這些功能的實現運用了許多現成的程序和驅動程序,它們可以用於公共外設和應用。Linux 可以在外設范圍廣泛的多數微處理器上運行,並早已經有了現成的應用庫。    Linux 用於嵌入式的因特網設備也是很合適的,原因是它支持多處理器系統,該特性使 Linux 具有了伸縮性。因而設計人員可以選擇在雙處理器系統上運行實時應用,提高整體的處理能力。例如,您可以在一個處理器運行 GUI,同時在另一個處理器上運行 Linux 系統。    在嵌入式系統上運行 Linux 的一個缺點是 Linux 體系提供實時性能需要添加實時軟件模塊。而這些模塊運行的內核空間正是操作系統實現調度策略、硬件中斷異常和執行程序的部分。由於這些實時軟件模塊是在內核空間運行的,因此代碼錯誤可能會破壞操作系統從而影響整個系統的可靠性,這對於實時應用將是一個非常嚴重的弱點。    另一方面,現成的 RTOS 完全是為實時性能而設計的,它通過在由用戶而非系統級進程啟動時分配給某個進程以高於其它進程的優先級的方式來實現可靠性。進程在操作系統看來就是在內存裡或硬盤驅動器上執行的程序。給他們指定進程 ID 或者數字標識符為的是讓操作系統跟蹤正在執行的程序和這些程序的相關聯的優先等級。這樣的方式保證了 RTOS 時間能比 Linux 提供更高的可靠性(可預見性)。但最重要的,這還是一種更加經濟的選擇。    不同類型的嵌入式 Linux 系統  已經有許多嵌入式 Linux 系統的示例;可以有把握地說,某種形式的 Linux 能在幾乎任一台執行代碼的計算機上運行。例如,ELKS(可嵌入 Linux 內核子集)方案計劃在 Palm Pilot 上使用 Linux。下面列出了一些更加廣為人知的小型嵌入式 Linux 版本:    ETLinux — 設計用於在小型工業計算機,尤其是 PC/104 模塊上運行的 Linux 的完全分發版。    LEM — 運行在 386 上的小型(< 8 MB)多用戶、網絡 Linux 版本。    LOAF — “Linux On A Floppy”分發版,運行在 386 上。    UClinux — 在沒有 MMU 的系統上運行的 Linux。目前支持 Motorola 68K、MCF5206 和 MCF5207 ColdFire 微處理器。    uLinux — 在 386 上運行的 tiny Linux 分發版。    ThinLinux — 面向專用的照相機服務器、X-10 控制器、mp3 播放器和其它類似的嵌入式應用的最小化的 Linux 分發版。    軟件和硬件要求  許多的用戶接口工具和程序增強了 Linux 基本內核的多功能性。就此而論,可以把 Linux 看作是這樣一個連續范圍,從只有存儲器管理、任務轉換和定時器服務最小化的微內核一直到完整的一系列文件系統和網絡服務的功能完善的服務器。    最小的嵌入式 Linux 系統僅需要三個基本元素:    引導實用程序  Linux 微內核,由內存管理、進程管理和定時服務構成   初始化過程   要實現最低限度的工作能力,您還需要添加:    硬件驅動程序   一個或多個應用進程,以提供所需功能   隨著要求的增加,您可能還需要:    一個文件系統(可能是在 ROM 或者是 RAM 裡)   TCP/IP 網絡棧   儲存半瞬態數據和提供交換空間的磁盤   32 位內置 CPU(所有完全的 Linux 系統都需要)     硬件平台選項  挑選最佳硬件的過程會相當復雜,問題起源於公司內部政策、成見、其它方案的遺留問題、缺乏全面的或者精確的信息以及成本 — 需考慮總的產品成本,而不僅僅是 CPU 本身。有時,一旦把 CPU 使用其它外圍設備所必需的總線邏輯和延遲時間考慮在內,那麼快速而廉價的 CPU 也可能變得昂貴。要計算任意給定的項目所需的 CPU 速度,首先要現實地看看為了完成一個給定的任務 CPU 得運行多快然後再乘以三。還要確定總線需要運行多快。如果還有二級總線,比如 PCI 總線,那麼將它們也考慮在內。一條慢的總線(即一條被 DMA 通信阻塞的總線)將會顯著降低高速 CPU 的速度。下面是一些嵌入式 Linux 應用的最佳硬件解決方案。    Bright Star Engineering:Bright Star Engineering 的 ipEngine-1 是支持嵌入式 Linux 的信用卡大小的單片機。它利用了基於 PowerPC 的 CPU,並提供了一組板上外設,有 Ethernet、LCD/視頻控制器、USB、串口 I/O 以及一個 16K 門的可由用戶配置的 FPGA。BSE 的嵌入式 Linux 配置允許 Linux 從 ipEngine 的板上 4MB 閃存中引導。    Calibri:CalibriTM-133 是將嵌入式 Linux 作為其操作系統來使用的網絡設備,它方便使用、緊湊,並且可以用於多種用途。它為防火牆、VPN 和路由要求提供了一種高效、低成本的解決方案。    EmbeddedPlanet:EmbeddedPlanet 創造了後 PC 時代的計算機,它出現時就裝有 MontaVista 的 HardHat Linux。由基於 PowerPC 的計算引擎和匹配的 I/O 卡驅動,Linux Planet 裝在一個彩色的透明盒子裡並且帶有觸摸屏,還可以訪問數字及模擬 I/O。    Eurotech:Eurotech 提供了嵌入式 PC SBC 並資助了 ET-Linux,一個為在小型工業計算機上運行而專門設計的基於 glibc 2.1.2 的完全的 Linux 系統。    Microprocess Ingenierie:Microprocess 為產業和嵌入式市場開發、生產以及銷售標准的和定制的產品。Microprocess 在實時軟件方面活動范圍遍及全球,並具有系統集成的專業知識。它的產品,比如 740 PowerPC compactPCI 板可以與標准的 Linux 分發版或者嵌入式 Linux 版本一起訂購。    Moreton Bay:Moreton Bay 發布基於 Linux 的 Internet 路由器,其范圍在 NETtel 2520 和 NETtel 2500 之間。這些小型的、易於連接的智能路由器解決方案設計旨在為平面網絡提供簡便、安全和價格適中的外部網友好的虛擬私有網絡(VPN)。NETtel 路由器系列運行的是嵌入式 Linux 內核。現有一套開發工具能夠把定制代碼存在閃存中並在 NETtel 內部執行。代碼可能含有特定的加密或者身份驗證協議,或者在 NETtel 被用作遠程控制設備代碼時,會含有一些本地監視腳本。    Matrix Orbital:這是個可選的、但不是推薦的附加項。Matrix Orbital 生產的一系列串行 LCD 和 VFD 被許多 Linux 用戶添加到了他們的嵌入式系統中。這條生產線的范圍包括了 8x2 到 40x4 的字符 LCDs、20x2 和 20x4 的 VFD 加上 240x64 圖形 LC(128x128 還在生產之中)。運用顯示器的通信不是通過 RS232 就是通過 I2C 實現的,兩者都是其所有模塊上的標准。模塊的 BIOS 中包含一個全面的命令集。    實時嵌入式 Linux 應用  有關嵌入式系統最重要的事務之一就是要求有一個實時操作系統。這裡實時有好幾種定義。對有些人來說,實時意味著在 1 微秒的時間內對事件作出反應,但對另外一些人來說,那就可能是 50 毫秒了。實時的硬度也各不相同。一些系統需要硬實時響應,在很短的時間內對事件作出確定性響應。但是,當我們對許多系統進行仔細分析時,我們發現事實上對響應時間的要求只是接近實時。實時的要求常常是時間和緩沖空間的折衷。隨著內存越來越便宜,CPU 速度越來越快,現在接近實時比硬實時更加常見,許多商用的所謂實時操作系統遠非硬實時。通常情況下,當您進入這些系統的詳細設計部分時,就需提高警惕必須非常仔細地設計驅動器的中斷和應用以滿足實時要求。    RT-Linux(實時擴展的 Linux 系統)裡含有時間緊要的函數可以用中斷管理器來精確控制中斷處理,從而很好地確保了關鍵性中斷可以在需要時得到執行。這種方法的硬度主要取決於 CPU 中斷結構和環境轉換的硬件支持。這種方法可以滿足廣泛范圍內的實時要求。即使沒有實時擴展,Linux 也能很好地處理多個事件流。例如,運行於低端 Pentium 上的 Linux PC 系統能讓多個 10BaseT 接口有效地執行,同時又以全速的 56KBPS 運行字符級串口,而不會丟失任何數據。    值得考慮的實時硬件和軟件 Linux API 有 RTLinux、RTAI、EL 和 Linux-SRT。RTLinux 是一個最初在新墨西哥理工學院開發的硬實時 Linux API。RTAI(DIAPM)是由 Polytechnic Politecnico di Milano(DIAPM)航天工程部的程序員們開發的 RTLinux 實時 API 的副產品。EL/IX 是一個計劃中的基於 POSIX 硬實時 Linux API,由 Red Hat 發起。Linux-SRT 是個實時 API 的軟實時替代品,它可以使所有的 Linux 程序無需修改或者重新編譯即可增強性能。    請參閱本文後面的參考資料部分,查找有關前面內容的資料和一些 Web 站點,那裡提供了用於不同類型的標准 Linux 操作系統的軟件擴展、開發工具、支持以及培訓課程。    短暫的確定性響應時間  某些實時嵌入式系統需要迅速對外部事件作出響應,以完成一項特定任務。比如,嵌入一枚導彈的一個定制的微控制器在指引導彈瞄准它周圍環境的一個特定目標之前,需要迅速對諸如移動目標、天氣和人等的外部事件作出迅速響應。短暫的確定性響應時間是指嵌入式系統可以確定它對外部事件作出響應的時間。    配置步驟  現在讓我們來看一下如何 make LEM,它是一個小型的可嵌入 Linux 分發版,既提供網絡又提供 X 服務器。您可以下載該分發版,盡管它並非必需。您需要一個完全的 Linux 分發版來建立自己的嵌入式 Linux 操作系統,其中將包括您所需要的一切(實用程序、源代碼、編譯器、調試器和文檔)。下面是能用來 make LEM 的軟件列表:    TinyLogin:TinyLogin 是一套 tiny UNIX 實用程序,它用於登錄嵌入式系統、接受其驗證身份、為其修改密碼,並能維護其用戶和用戶組。為了增強系統安全性它還支持影子口令。正如它的名字所暗示的,TinyLogin 非常小,對嵌入式系統上的 BusyBox 是極好的補充。    BusyBox:BusyBox 是一個多調用的二進制文件,它提供了 POSIX 式的命令和專用函數的最小子集。它適合於非常小的嵌入式系統,比如引導磁盤等等。特別用於 Debian 拯救/安裝系統(它激發了對最初的 BusyBox 的開發)、Linux Routeur 方案、LEM、lineo 及其它地方。Busybox 是由 Erik Andersen 維護的。    Ash:Ash 是個非常小的 Bourne shell。    Sysvinit:Sysvinit 是 Linux 最常用的 init 包。我們將會用到 init 和 C 語言版 start-stop-daemon。    創建引導磁盤  引導磁盤本質上是一張裝有微縮的、自含式 Linux 系統的軟盤。它可以執行許多和完全的 Linux 系統相同的功能。下面的材料基於 Bootdisk-HOWTO(請參閱參考資料)。    第 1 步:Bios  所有的 PC 系統都是通過執行 ROM(明確地說,BIOS)中的代碼從引導磁盤的 0 柱面 0 扇區加載扇區,從而開始引導過程。引導驅動器通常是第一個軟盤驅動器(在 DOS 下指定為 A:,而 Linux 下指定為 /dev/fd0)。然後 BIOS 試圖執行這個扇區。大多數可引導磁盤的 0 柱面 0 扇區上包括了以下兩種內容中的一種:    來自加載程序,比如 LILO 的代碼,該加載程序定位、加載並運行內核以開始正常引導   一個操作系統,比如 Linux 的內核,的開頭部分     如果 Linux 內核直接裸拷貝到磁盤、硬盤驅動器或者其它介質上,那麼磁盤的第一個扇區將是 Linux 內核本身的第一個扇區。第一個扇區從引導設備上加載內核的其余部分繼續引導過程。    第 2 步:引導加載程序  您可以用一個象 LILO 這樣的加載程序執行引導過程。它允許開發和生產平台在同一硬件上共存,並且允許通過重新引導來實現從一個平台到另一平台的切換。LILO 引導加載程序是由 bios 加載的。然後它加載內核或者其它操作系統的引導扇區。它還提供了一個簡單的命令行接口,以根據其選項交互地選擇要引導的項。請參閱參考資料,獲取更多關於 LILO 的信息。    第 3 步:內核  內核檢查硬件並加載根設備,然後查找根文件系統的 init 程序並執行該程序。    第 4 步:Init  Init 是將要在您的 Linux 操作系統上運行的所有其它進程的父進程。它會觀察其子進程,並在需要的時候啟動、停止、重新啟動它們。Init 從 /etc/inittab 獲取所有信息。    第 5 步:Inittab  /etc/inittab 文件通過引用名為 /etc/rc... 的腳本安裝系統。它還擁有 getty 工具的條目用來處理登錄過程。    第 6 步:登錄過程  對於每個允許用戶使用的控制台,inittab 文件裡都有一個 getty。getty 會啟動 /bin/login 來驗證用戶口令。    第 7 步:創建新的分區  摘自 LFS-HOWTO(請參閱參考資料):在安裝新的 Linux 系統之前,我們需要一個空的 Linux 分區來安裝新系統。如果您已經有一個 Linux Native 分區可用,您就可以跳過這一步和下面一步。選擇合適的硬盤(如 /dev/hda,如果您想在基本的主 IDE 磁盤上建立新的分區的話)啟動 fdisk 程序(或者 cfdisk,如果您更喜歡 cfdisk 的話)。創建一個 Linux Native 分區,寫入分區表並退出 (c)fdisk 程序。如果您被通知需要重新引導系統以確保分區表被更新,那麼請在繼續下面的步驟之前重新引導系統。    第 8 步:在新的分區上創建一個 ext2 文件系統  摘自 LFS-HOWTO(請參閱參考資料):我們用 mke2fs 命令創建一個新的 ext2 文件系統。把 $LFS 作為唯一的選項,這樣文件系統就建立了。從現在起,我將把這個新建的分區稱作 $EMBPART。$EMBPART 應該被換成您創建的分區。    第 9 步:加載分區  為了訪問這個新建的文件系統,您必須安裝它。要安裝分區,您要建立一個 /mnt/hda? 目錄並且在 shell 提示符下輸入下列內容:    mkdir /mnt/hda?  mount $EMBPART /mnt/hda?    如果您在 /dev/hda4 建立了分區並把它安裝到 /mnt/hda4 上,那麼您需要返回到把文件復制到目錄 $EMBPART/usr/sbin 下的那一步,並把那個文件復制到目錄 /mnt/hda4/usr/bin 下。完成了第 14 步的最後一個命令後再執行這一步(復制 $EMBPART/usr/sbin 目錄下的文件)。    第 10 步:填充文件系統  根文件系統必須包括支持一個完全的 Linux 系統所需的全部內容。我們將要建立一個與文件層次標准(參見參考資料)相去不遠的目錄結構。    第 11 步:目錄  新安裝的文件系統的 mkdir 命令建立了以下目錄:    /proc  proc 文件系統要求的目錄存根  /etc  系統配置文件  /sbin  關鍵的系統二進制文件  /bin  被視為系統組成部分的基本的二進制文件  /lib  提供實時支持的共享庫  /mnt  維護用的安裝點  /usr  附加的實用程序和應用軟件    cd /mnt/hda/   mkdir bin dev home proc sbin usr boot etc liv mnt root tmp var   mkdir -p usr/bin usr/sbin usr/share usr/lib   mkdir -p etc/config etc/default etc/init.d etc/rc.boot   mkdir -p etc/rc0.d etc/rc1.d etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rc6.d etc/rcS.d     /dev  dev 目錄是執行設備輸入/輸出要求的存根。這個目錄下的每個文件都可以用 mknod 命令建立。您可以用下面的指令從您的桌面 Linux 直接復制要求的 dev 條目以節省時間:  cp -dpR /dev /mnt    安裝 TinyLogin 以及登錄從屬需求  TinyLogin(請參閱參考資料部分進行安裝)將為您安裝不足 35kb 的下列工具:  /bin/addgroup、/bin/adduser、/bin/delgroup、/bin/deluser、/bin/login、/bin/su、/sbin/getty、/sbin/sulogin 和 /usr/bin/passwd。    第 12 步:配置 TinyLogin  摘自 TinyLogin README:TinyLogin 模塊化後可以幫助您只配置必需的組件從而縮小二進制長度。要關閉不想要的 TinyLogin 組件,只需編輯 tinylogin.def.h 文件並用 C++ 風格的(//)注釋將您不想要的部分注釋掉。    第 13 步:安裝 TinyLogin  在編譯完成以後,生成了一個 tinylogin.links 文件,它隨後被 make install 用來為所有的內編譯函數創建指向 tinylogin 二進制文件的符號連接。缺省情況下,make install 會在 pwd /_install 中放入一個符號連接林,除非您已經定義了 PREFIX 環境變量。    第 14 步:安裝 Sysvinit 和 start-stop daemon  在內核加載完成後,它會運行 init 程序來結束引導進程。現在:    解壓縮 Sysvinit 歸檔文件   進入 src 目錄   復制 $EMBPART/sbin 目錄下的 init 可執行文件   Sysvinit 包在 contrib 目錄下也有 C 語言版的 start-stop-daemon。    編譯   復制 $EMBPART/usr/sbin 下的文件   第 15 步:配置 Sysvinit  Sysvinit 需要一個名為 inittab 的配置文件,它應該在 $EMBPART/etc 目錄下。下面是 LEM 分發版中使用的配置文件:    清單 1. Inittab 配置腳本    # /etc/inittab: init(8) configuration.  # $Id: inittab,v 1.6 1997/01/30 15:03:55 miquels EXP $  # Modified for LEM 2/99 by Sebastien HUET   # default rl.  id:2:initdefault:  # first except in emergency (-b) mode.  si::sysinit:/etc/init.d/rcS  # single-user mode.  ~~:S:wait:/sbin/sulogin  # /etc/init.d executes the S and K scripts upon change  # 0:halt 1:single-user 2-5:multi-user (5 may be X with xdm or other) 6:reboot.  l0:0:wait:/etc/init.d/rc 0  l1:1:wait:/etc/init.d/rc 1  l2:2:wait:/etc/init.d/rc 2  l3:3:wait:/etc/init.d/rc 3  l4:4:wait:/etc/init.d/rc 4  l5:5:wait:/etc/init.d/rc 5  l6:6:wait:/etc/init.d/rc 6  # CTRL-ALT-DEL pressed.  ca:12345:ctrlaltdel:/sbin/shutdown -t1 -r now  # Action on special keypress (ALT-UpArrow).  kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work."  # /sbin/mingetty invocations for runlevels.  1:2345:respawn:/sbin/getty 9600 tty1  2:23:respawn:/sbin/getty 9600 tty2  #3:23:respawn:/sbin/getty tty3 #you may add console there  #4:23:respawn:/sbin/getty tty4    第 16 步:創建初始的引導腳本  就象在 inittab 文件裡看到的一樣,Sysvinit 需要在它自己的目錄下的一些附加腳本。    第 17 步:創建必需的目錄和基礎文件  用下面的命令來創建目錄:    清單 2. 創建目錄和基礎文件的腳本    cd $EMBPART/etc  mkdir rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d init.d rcS.d rc.boot    進入解壓縮後的 Sysvinit 源目錄  把 debian/etc/init.d/rc 復制到:$EMBART/etc/init.d  進入 $EMBPART/etc/init.d/ 目錄  創建一個與 LEM 中的文件類似的新文件 rcS:    清單 3. RCS 腳本    #!/bin/sh  PATH=/sbin:/bin:/usr/sbin:/usr/bin  runlevel=S  prevlevel=N  umask 022  export PATH runlevel prevlevel  /etc/default/rcS  export VERBOSE  # Trap CTRL-C only in this shell so we can interrupt subprocesses.  trap ":" 2 3 20  # Call all parts in order.  for i in /etc/rcS.d/S??*  do      [ ! -f "$i" ] && continue      case "$i" in          *.sh)              (                  trap - 2 3 20                  . $i start              )              ;;          *)              $i start              ;;      esac  done  # run the files in /etc/rc.boot  [ -d /etc/rc.boot ] && run-parts /etc/rc.boot    把可執行文件從您的分發版復制到 $EMBPART/bin。    第 18 步:添加基礎腳本  這裡用的許多命令是 UNIX/Linux 命令,對嵌入在 UNIX shell 腳本內部的路徑進行設置、導出等操作。    清單 4. 注釋行    < !-reboot---------------------------------------------->     創建一個新文件 reboot,它包含以下內容:    清單 5. Reboot 腳本    #!/bin/sh  PATH=/sbin:/bin:/usr/sbin:/usr/bin  echo -n "Rebooting... "  reboot -d -f -i  < !-halt---------------------------------------------->     創建新文件 halt,它包含以下內容:    清單 6. Halt 腳本    #!/bin/sh  PATH=/sbin:/bin:/usr/sbin:/usr/bin  halt -d -f -i -p  < !-mountfs---------------------------------------------->     總結  在嵌入式應用的領域裡,從因特網設備到專用的控制系統,Linux 操作系統的前景都很光明。所有新造的微型計算機芯片中大約有 95% 都是用於嵌入式應用的。由於 Linux 功能強大、可靠、靈活而且具有伸縮性,再加上它支持大量的微處理器體系結構、硬件設備、圖形支持和通信協議,這些都使它作為許多方案和產品的軟件平台越來越流行。  

 




Copyright © Linux教程網 All Rights Reserved