【正文】
25:multiuser (5 may be X with xdm or other) 6:reboot. l0:0:wait:/etc/l1:1:wait:/etc/l2:2:wait:/etc/l3:3:wait:/etc/l4:4:wait:/etc/l5:5:wait:/etc/l6:6:wait:/etc/ CTRLALTDEL pressed. ca:12345:ctrlaltdel:/sbin/shutdown t1 r now Action on special keypress (ALTUpArrow). kb::kbrequest:/bin/echo Keyboard Requestedit /etc/inittab to let this work. /sbin/mingetty invocations for runlevels. 1:2345:respawn:/sbin/getty 9600 tty1 11 2:23:respawn:/sbin/getty 9600 tty2 3:23:respawn:/sbin/getty tty3 you may add console there 4:23:respawn:/sbin/getty tty4 Step 16. Creating initial boot scripts As seen in the inittab file, Sysvinit needs additional scripts in its own directories. Step 17. Creating the necessary directories and base files Use the following mand to create the directories: cd $EMBPART/etc mkdir Go to the unpacked Sysvinit source directory Copy the debian/etc/:$EMBART/etc/ Go to the $EMBPART/etc/Create a new file rcS like those in LEM: !/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 CTRLC only in this shell so we can interrupt subprocesses. trap : 2 3 20 Call all parts in order. for i in /etc/* do [ ! f $i ] amp。amp。 continue case $i in *.sh) ( trap 2 3 20 . $i start ) 。 *) $i start 12 。 esac done run the files in /etc/ [ d /etc/ ] amp。amp。 runparts /etc/ Copy runparts from your distro to $EMBPART/bin. Step 18. Adding base scripts A lot of the mands being used here are UNIX/Linux mands that set, export, etc. paths that are embedded inside of a UNIX shell script. !reboot Create a new file reboot containing the following: !/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin echo n Rebooting... reboot d f i !halt Create a new file halt containing the following: !/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin halt d f i p !mountfs Nine. Summary The Linux operating system has a very bright future in the area of embedded applications for anything from Inter appliances to dedicated control systems. Roughly 95% of all newly manufactured microputer chips are used for embedded applications. The power, reliability, flexibility, and scalability of Linux, bined with its support for a multitude of microprocessor architectures, hardware devices, graphics support, and munications protocols have established Linux as an increasingly popular software platform for a vast array of projects and products. Because Linux is openly and freely available in source form, many variations and configurations of Linux and its supporting software ponents have evolved to meet the diverse needs of the markets and applications to which Linux is being adapted. There are small footprint versions and realtime enhanced versions. Despite the origins of Linux as 13 a PC architecture operating system, there are now ports to numerous nonx86 CPUs, with and without memory management units, including PowerPC, ARM, MIPS, 68K, and even microcontrollers. But look out, there39。s more ing in the near future for many other Information Technology (IT) domains! 1 嵌入式 Linux 應(yīng)用:概述 現(xiàn)在 Linux 廣泛用于各類計(jì)算應(yīng)用,不僅包括 IBM 的微型 Linux 腕表、手持設(shè)備( PDA 和蜂窩電話)、因特網(wǎng)裝置、瘦客戶機(jī)、防火墻、工業(yè)機(jī)器人和電話基礎(chǔ)設(shè)施設(shè)備,甚至還包括了基于集群的超級(jí)計(jì)算機(jī)。讓我們看一下 Linux 用作嵌入式系統(tǒng)需要提供哪些功能,以及它在目前可用的選擇中最具吸引力的原因所在。 一、 嵌入式系統(tǒng)的出現(xiàn) 用于控制設(shè)備的計(jì)算機(jī),也叫做 嵌入式系統(tǒng) ,它的歷史幾乎和計(jì)算機(jī)自身的歷史一樣長。它們最初于六十年代晚期在通訊中被用于控制機(jī)電電話交換機(jī)。由于 在過去的十多年里,計(jì)算機(jī)產(chǎn)業(yè)不斷朝著更小的系統(tǒng)方向發(fā)展,嵌入式系統(tǒng)也與之一起為這些小型機(jī)器提供了更多的功能。漸漸地,就需要把這些嵌入式系統(tǒng)連接到某種網(wǎng)絡(luò)上,因而也就產(chǎn)生了對(duì)網(wǎng)絡(luò)棧的要求,這提高了系統(tǒng)的復(fù)雜程度并要求更多的存儲(chǔ)器和接口,還有,您猜對(duì)了,操作系統(tǒng)的服務(wù)。 七十年代晚期出現(xiàn)了用作嵌入式系統(tǒng)的現(xiàn)成的操作系統(tǒng),現(xiàn)在有許多可行的選擇方案。其中,一些主要的競(jìng)爭(zhēng)者開始嶄露頭角,比如, VxWorks、 pSOS、 Neculeus 和 Windows CE。 二、 在嵌入式系統(tǒng)中使用 Linux 的優(yōu)點(diǎn)和缺點(diǎn) 雖然大多數(shù) Linux 系統(tǒng)運(yùn)行在 PC 平臺(tái)上,但 Linux 也可以作為嵌入式系統(tǒng)的可靠主力。 Linux 流行的“ backtobasics”方法使得它的安裝和管理比 UNIX 更加簡單靈活,這對(duì)于那些 UNIX 專家們來說又是一個(gè)優(yōu)點(diǎn),他們已經(jīng)因?yàn)? Linux 中有許多命令和編程接口同傳統(tǒng)的 UNIX 一樣而賞識(shí)它了。 典型的壓縮包裝 Linux 系統(tǒng)經(jīng)過打包,在擁有硬盤和大容量內(nèi)存的 PC 機(jī)上運(yùn)行,嵌入式系統(tǒng)可不要這么高的配置。一個(gè)功能完備的 Linux 內(nèi)核要求大約 1 MB 內(nèi)存。而 Linux 微內(nèi)核只占用其中很小一部分內(nèi)存,包括虛擬內(nèi)存和所有核心的操作系統(tǒng)功能在內(nèi),只需占用 Pentium CPU 系統(tǒng)的 100 K 內(nèi)存。只要有 500 K 的內(nèi)存,一個(gè)有網(wǎng)絡(luò)棧和基本實(shí)用程序的完全的 Linux 系統(tǒng)就可以在一臺(tái) 8 位總線( SX)的 Intel 386 微處理器上運(yùn)行的很好了。由于內(nèi)存要求常常是需要的應(yīng)用所決定的,比如 Web 服務(wù)器或者 SNMP 代理, Linux 系統(tǒng)甚至可以僅使用 256 KB ROM 和 512 KB RAM 進(jìn)行工作。因此它是一個(gè)瞄準(zhǔn)嵌入式市場(chǎng)的輕量級(jí)操作系統(tǒng) 。 與傳統(tǒng)的實(shí)時(shí)操作系統(tǒng)相比( RTOS),采用象嵌入式 Linux 這樣的開放源碼的操作系統(tǒng)的另外一個(gè)好處是 Linux 開發(fā)團(tuán)體看來會(huì)比 RTOS 的供應(yīng)商更快地支 2 持新的 IP 協(xié)議和其它協(xié)議。例如,用于 Linux 的設(shè)備驅(qū)動(dòng)程序要比用于商業(yè)操作系統(tǒng)的設(shè)備驅(qū)動(dòng)程序多,如網(wǎng)絡(luò)接口卡( NIC)驅(qū)動(dòng)程序以及并口和串口驅(qū)動(dòng)程序。 核心 Linux 操作系統(tǒng)本身的微內(nèi)核體系結(jié)構(gòu)相當(dāng)簡單。網(wǎng)絡(luò)和文件系統(tǒng)以模塊形式置于微內(nèi)核的上層。驅(qū)動(dòng)程序和其它部件可在運(yùn)行時(shí)作為可加載模塊編譯到或者是添加到內(nèi)核。這為構(gòu)造定制的可嵌入 系統(tǒng)提供了高度模塊化的構(gòu)件方法。而在典型情況下該系統(tǒng)需結(jié)合定制的驅(qū)動(dòng)程序和應(yīng)用程序以提供附加功能。 嵌入式系統(tǒng)也常常要求通用的功能,為了避免重復(fù)勞動(dòng),這些功能的實(shí)現(xiàn)運(yùn)用了許多現(xiàn)成的程序和驅(qū)動(dòng)程序,它們可以用于公共外設(shè)和應(yīng)用。 Linux 可以在外設(shè)范圍廣泛的多數(shù)微處理器上運(yùn)行,并早已經(jīng)有了現(xiàn)成的應(yīng)用庫。 Linux 用于嵌入式的因特網(wǎng)設(shè)備也是很合適的,原因是它支持多處理器系統(tǒng),該特性使 Linux 具有了伸縮性。因而設(shè)計(jì)人員可以選擇在雙處理器系統(tǒng)上運(yùn)行實(shí)時(shí)應(yīng)用,提高整體的處理能力。例如,您可以在一個(gè)處理器運(yùn)行 GUI,同時(shí)在另一個(gè)處理器上運(yùn)行 Linux 系統(tǒng)。 在嵌入式系統(tǒng)上運(yùn)行 Linux 的一個(gè)缺點(diǎn)是 Linux 體系提供實(shí)時(shí)性能需要添加實(shí)時(shí)軟件模塊。而這些模塊運(yùn)行的內(nèi)核空間正是操作系統(tǒng)實(shí)現(xiàn)調(diào)度策略、硬件中斷異常和執(zhí)行程序的部分。由于這些實(shí)時(shí)軟件模塊是在內(nèi)核空間運(yùn)行的,因此代碼錯(cuò)誤可能會(huì)破壞操作系統(tǒng)從而影響整個(gè)系統(tǒng)的可靠性,這對(duì)于實(shí)時(shí)應(yīng)用將是一個(gè)非常嚴(yán)重的弱點(diǎn)。 另一方面,現(xiàn)成的 RTOS 完全是為實(shí)時(shí)性能而設(shè)計(jì)的,它通過在由用戶而非系統(tǒng)級(jí)進(jìn)程啟動(dòng)時(shí)分配給某個(gè)進(jìn)程以高于其它進(jìn)程的優(yōu)先級(jí)的方式來實(shí)現(xiàn)可靠性。進(jìn)程在操作系統(tǒng)看來就是在內(nèi)存里或硬盤驅(qū)動(dòng)器上執(zhí)行的程序。給他們指定進(jìn)程 ID 或者數(shù)字標(biāo)識(shí)符為的是讓操作系統(tǒng)跟蹤正在執(zhí)行的程序和這些程序的相關(guān)聯(lián)的優(yōu)先等級(jí)。這樣的方式保證了 RTOS 時(shí)間能比 Linux 提供更高的可靠性(可預(yù)見性)。但最重要的,這還是一種更加經(jīng)濟(jì)的選擇。 三、 不同類型的嵌入式 Linux 系統(tǒng) 已經(jīng)有許多嵌入式 Linux 系統(tǒng)的示例;可以有把握地說,某種形式的 Linux 能在幾乎任一臺(tái)執(zhí)行代碼的計(jì)算機(jī)上運(yùn)行。例如, ELKS(可嵌入 Linux 內(nèi)核子集)方案計(jì)劃在 Palm Pilot 上使用 Linux。下面列出了一些更加廣為人知的小型嵌入式 Linux 版本