航天科工嵌入式 Linux 应用:概述

转载:http://www.ibm.com/developerworks/cn/linux/embed/embl/overview/index.html

 

从腕表到基于群集的一流统计机

在对嵌入式 Linux 的行使及其环境做了一番观望之后,接下去 Darrick 艾狄生(Addison)将一步步地教你怎么建立开发这些应用的软、硬件条件。

0航天科工 1
评论:

Darrick
Addison

(dtadd95@bellatlantic.net),
高级软件工程师/顾问, ASC Technologies Inc.

2001 年 8 月 01 日

  • 航天科工 2内容

前几天 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)的 AMD 386
微处理器上运行的很好了。由于内存要求经常是急需的运用所主宰的,比如 Web
服务器或者 SNMP 代理,Linux 系统竟然足以仅使用 256 KB ROM 和 512 KB RAM
举行工作。由此它是一个瞄准嵌入式市场的轻量级操作系统。

与传统的实时操作系统相相比(RTOS),接纳象嵌入式 Linux
这样的开放源码的操作系统的另外一个功利是 Linux 开发企业看来会比 RTOS
的供应商更快地支撑新的 IP 协议和另外协议。例如,用于 Linux
的装置驱动程序要比用于生意操作系统的配备驱动程序多,如网络接口卡(NIC)驱动程序以及并口和串口驱动程序。

闪存

快闪 RAM 内存是大多数 Palm
设备用来储存操作系统的专用的存储器。它具备允许操作系统升级的优点,还足以用来数字式蜂窝电话、数字式照相机、LAN
交流机、PC
卡、数字式机顶盒、嵌入式控制器和此外小型设备。嵌入式系统,如嵌入式
Linux,不要求有磁盘驱动器,虽然可能拔取任何的内存社团形式。由此假若,打个倘使,Linux
用完了闪存,它就足以将中间有些当作只读的文件系统来囤积额外的程序和静态数据。

主导 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。近来帮忙 红米68K、MCF5206 和 MCF5207 ColdFire 微处理器。

uLinux― 在 386 上运行的 tiny Linux 分发版。

ThinLinux ― 面向专用的相机服务器、X-10 控制器、MP3
播放器和其余类似的嵌入式应用的最小化的 Linux 分发版。

回页首

软件和硬件要求

多多的用户接口工具和次序提高了 Linux
基本内核的多效率性。就此而论,可以把 Linux
看作是如此一个接连范围,从只有存储器管理、任务转换和定时器服务最小化的微内核一直到完全的一多元文件系统和网络服务的效用完善的服务器。

微小的嵌入式 Linux 系统仅需要六个为主元素:

  • 指点实用程序
  • Linux 微内核,由内存管理、进程管理和定时服务组合
  • 初步化过程

要实现最低限度的做事力量,您还索要添加:

  • 硬件驱动程序
  • 一个或五个应用进程,以提供所需效率

乘机要求的充实,您可能还索要:

  • 一个文件系统(可能是在 ROM 或者是 RAM 里)
  • TCP/IP 网络栈
  • 储存半须臾态数据和提供交换空间的磁盘
  • 32 位内置 CPU(所有完全的 Linux 系统都急需)

连锁的硬件方案

下边是一些存活的为 Linux 操作系统定制的嵌入式硬件方案。

PLEB:带有 ARM SA-1100 / ArmLinux Ucsimm / Uclinux Flash EPROM
的袖珍 Linux 嵌入式机器。

Linux Lab: Linux Lab 方案意在协理人们开发 Linux
数据收集和进程控制软件。它计划提供从硬件支撑到利用开发的大规模范围内采纳的准绳开发条件。

决定器域网:Linux GPIB 的控制器域网(CAN)总线驱动程序;Linux GPIB
包是一个对一般性 GPIB(IEEE 488.1) 硬件的匡助包。驱动程序襄助 National
Instruments AT-GPIB、TNT488.2 以及 PCII 和 PCIIa
板。这多少个包里有完全的支付环境,包括测试和布局工具、库以及对 tcl 和 python
语言的协助。

回页首

硬件平台选项

挑选特级硬件的长河会一定复杂,问题起源于公司里面政策、成见、其余方案的遗留问题、紧缺宏观的或者纯粹的音讯以及资本
― 需考虑总的产品成本,而不仅是 CPU 本身。有时,一旦把 CPU
使用其它外围设备所必备的总线逻辑和延迟时间考虑在内,那么高效而减价的 CPU
也说不定变得昂贵。要总括任意给定的品种所需的 CPU
速度,首先要切切实实地探访为了做到一个加以的任务 CPU
得运行多快然后再乘以三。还要确定总线需要周转多快。如若还有二级总线,比如
PCI 总线,那么将它们也考虑在内。一条慢的总线(即一条被 DMA
通信阻塞的总线)将会强烈下跌高速 CPU 的速度。下边是部分嵌入式 Linux
应用的特等硬件解决方案。

Bright Star Engineering:布赖特(Wright) 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
用户增长到了她们的嵌入式系统中。这条生产线的限制包括了 8×2 到 40×4
的字符 LCDs、20×2 和 20×4 的 VFD 加上 240×64 图形 LC(128×128
还在生养其中)。运用展现器的通信不是由此 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 程序来终结指导进程。现在:

  1. 解压缩 Sysvinit 归档文件
  2. 进入 src 目录
  3. 复制 $EMBPART/sbin 目录下的 init 可执行文件

Sysvinit 包在 contrib 目录下也有 C 语言版的 start-stop-daemon。

  1. 编译
  2. 复制 $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
功用强大、可靠、灵活而且装有伸缩性,再添加它援助大气的处理器系统布局、硬件设备、图形援助和通信协议,这多少个都使它作为广大方案和制品的软件平台越来越流行。

由于可以公开免费获取 Linux 源代码,因而对 Linux
和它匡助的软件组件的广大改动和布局也收获了不断改进,以满足使用 Linux
的市场和运用的有余需求。此外还有小型版本和实时增强版本。尽管 Linux
先导是用作 PC 体系布局的操作系统,但是现在早已有了非 X86 CPU
的版本(带或不带内存控制单元),包括 PowerPC、ARM、MIPS、68K
甚至是微控制器。但是,请留意,在不久的以后,在广大其他的信息技术(IT)领域会冒出更多!

参考资料

  • 你可以参考本文在 developerWorks 全球站点上的
    英文原稿.
  • 收获完全的 ETLinux Linux 分发版。
  • 看一下多用户、基于网络的 Linux 版本
    LEM
  • LOAF,“Linux On A
    Floppy”版本, 象 uLinux 一样,在
    386 上运行。
  • 你仍是可以够收获 不带 MMU 的 Linux 系统和
    uClinux
  • ThinLinux 是用于专用的相机服务器、X-10
    控制器、MP3 播放器以及其余一些近乎的嵌入式应用的最小化的 Linux
    分发版。
  • RTLinux
    就是最早在新墨西哥农业高校开发的健全时 Linux API。
  • EL/IX 是遵照 POSIX 的强壮时 Linux API。
  • Ash
    是个要命小的 Bourne shell。
  • Sysvinit
    Linux 最常用的 init 包。大家将会用到 init 和 C 语言版的
    start-stop-daemon。
  • 请阅读 LILO
    文档
  • 要确立新的分区,在新的分区建立 ext2 文件系统,请阅读
    LFS-HOWTO
  • 实时 Linux 是专业 Linux
    操作系统的恢弘。它提供了一种简易的、流畅的实时程序,它把正规化 Linux
    内核作为最低优先级的职责来推行。它不仅允许插入用户定义的、优先级更高的(实时)任务,还同意利用标准
    Linux 成熟的劳动的功效。
  • RTAI 是一套建立在 Linux
    内核修改最少的功底之上的模块(添加/修改了大约 70
    行),实现了实时硬件抽象层(RTHAL),实时应用程序接口(RTAI)建立在该层上。RTAI
    服务实现了水源模块级的硬朗时,用户空间级的安宁实时。您也能够到
    rtai.org 查找更多关于 RTAI 的资料。
  • Zentropix
    重点介绍实时 Linux
    并提供开发工具、襄助、培训科目和一张经过测试的由安排管理的实时 Linux
    安装 CD。
  • 访问 IBM 嵌入式 Linux
    首页
  • 查阅 IBM 的嵌入式 Linux
    产品和开发人士技术援助
  • 浏览 developerWorks收获更多的 Linux
    参考资料
  • 浏览 developerWorks
    拿到更多开放源代码参考资料

发表评论

电子邮件地址不会被公开。 必填项已用*标注