打印本文 打印本文 关闭窗口 关闭窗口
嵌入linux 的广泛应用
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1566  更新时间:2009/4/22 23:08:08  文章录入:mintao  责任编辑:mintao
安装 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(icon_cool.gif 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)领域会出现更多!

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口