——Kconfig
——Makefile
——.config
FHS标准是众多的Linux发布包有了可以遵循的标准,使得软件和用户可以预测已经安装了的文件和目录的位置。它定义了如下的内容,定义了文件系统中每个区域的用途。
/bin: 普通用户和root用户都能执行的基本程序
——ping, mknod, mount, tar, grep, gzip, etc
/sbin: root用户能执行的基本程序
——int, insmod, route, mkfs, rmmod, ifconfig
/usr/bin: 更多非必须的用户程序
——autorun, bibtex, latex, biff, ftp, wc, whereis, whoami
/usr/sbin: 更多非必须的root工具程序
——automount, httpd, in.telnetd, in.talkd, sendmai
/lib: 启动系统和运行基本命令时需要的动态库文件
/usr/lib: 所有的其他库
/usr/lib/xxx: 一些工具包的私有库 ——如:/usr/lib/perl5
——BusyBox 项目是由Bruce Perens in 在1996创建的,是在 GNU GPL 许可协议下发行的开源软件。 http://www.busybox.net/
——Busybox是一个UNIX系统工具集,它将很多普通的UNIX工具集成到一个很小的可执行文件中,为普通用户提供大多数常用的命令;
——BusyBox 可以编译成一个静态可执行程序,也可以使用glibc 或者 uClibc编译成一个使用动态库的可执行程序
——编译Busybox步骤
-下载代码,解压代码
-配置Busybox
-$ cd P R J R O O T − PRJROOT - PRJROOT− make menuconfig
主要配置有哪些命令等
交叉编译和安装
——和配置Linux内核选项一样,在Busybox源码根目录中输入make menuconfig命令:
标准C函数库在交叉编译器的目录下
例如我们的交叉编译器在/opt/crosstool
那么标准C库所在的目录:
/opt/crosstool/4.9.4/arm-sice-linux-gnueabi/sysroot/lib/
jpeg库
png库
Qt库
需要移植(获取源码、并且交叉编译这些源码来得到对应的库)
——系统配置文件,一般需要自己编写,是linux系统在引导是需要读取的,如果没有系统配置文件,将会导致系统启动错误。下面是Linux系统的引导过程。
——/sbin/init 是默认的第一个用户空间程序
——启动系统服务程序,自动运行的程序等 (sshd, X server…)
——嵌入式linux系统使用busybox 的 init 程序
——init程序是由内核启动的1号程序,在启动过程中,会读取系统配置文件inittab,根据这个文件来启动系统。
——下面介绍inittab文件的格式:
inittab 文件中,每一行是一条启动规则,文件由多条启动规则组合而成,每一条的启动规则如下:
id : runlevels : action : process
由三个”:”号,分成4个段,每一个段的含义如下:
id: 此处id指明程序的控制台如(ttySAC0),如果程序不需要交互, 则ID为空
runlevels : 不支持runlevel, 被忽略
process : 将执行的命令和命令的命令行参数
action : 动作类型,决定process启动的时机,启动类型等。action的值只有8个,如下表。
读取文件inittab
执行 inittab 中所有action 为sysinit的命令
执行 inittab 中所有action 为wait 的命令
执行 inittab 中所有action 为 once的命令
循环运行
-运行 inittab中所有action 为 respawned 的命令
-运行 inittab中所有action 为 askfirst的命令
rcS文件中,执行命令”/bin/mount -a”这个命令需要fstab文件来挂载文件系统。
然后启动mdev程序来生成设备文件。