航天科工嵌入式 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)的 Intel 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。目前支撑 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 系统还要)

连锁的硬件方案

下面是局部共处的吗 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: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
用户增长到了他们的嵌入式系统遭到。这漫漫生产线的限定包括了 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
    得到更多开源代码参考资料。

发表评论

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