嵌入式Linux系统的构建
一、嵌入式Linux系统中的典型分区结构
Boot parameters
   
    Bootload
Root filesystem
Kernel
   
   
二、各个结构的分析
1、从咱们所学的硬件知识能够明白,在系统上电后需要一段程序来进行初始化(关闭WATCHDOG、改变系统时钟、初始化存储器操纵器、将更多的代码复制到内存中)。简单的说bootload确实是这么一段小程序(相当于PC机中的BIOS),初始化硬件设备、预备好软件环境,最后挪用操作系统内核。从某个观点上来看Bootload能够分为两种操作模式:启动模式和下载模式。
启动模式:上电后bootload从板子上的某个固态存储器上将操作系统加载到RAM中运行,整个进程并无效户的介入
下载模式:在这种模式下,开发人员能够利用各类命令,通过串口连接或网络连接等通信手腕从主机下载文件,将它们直接放在内存运行或是烧入Flash类固态存储设备中。
Bootload能够分为两个时期:
第一时期实现的功能:硬件设备初始化、为加载Bootload的第二时期代码预备RAM空间、复制Bootload的第二时期代码到RAM空间中、设置好栈、跳转到第二时期代码的C入口点
第二时期:初始化本时期要利用的硬件设备、检测系统内存映射、将内核镜像和根文件映
像从Flash上读到RAM空间中、为内核设置启动参数、挪用内核
2、内核的结构:
Linux内核文件数量快要2万,除去其他构架CPU的相关文件,支持S3C2410、S3C2440这两款芯片的完整内核文件有1万多个。这些文件组织结构并非复杂,他们别离位于顶层目录下的17个子目录,各个目录功能独立
目录名
描述
arch
体系结构相关的代码
block
块设备的通用函数
crypto
常用加密和散列算法,还有一些压缩和CRC校验算法
Drivers
所有的设备驱动程序,里面的每一个子目录对应一类驱动程序
fs
Linux支持的文件系统的代码,每个子目录对用一种文件系统
Include
内核头文件(基本头文件、驱动或功能部件头文件等)
Init
内核的初始化代码(不是系统的引导代码)
Ipc
进程间通信的代码
Kernel
内核管理的核心代码
lib
内核用到的一些库函数代码
Mm
内存管理代码
Net
网络支持代码,每个子目录对应于网络的一个方面
Security
安全、密钥、相关代码
Sound
音频设备的驱动程序
Ulinux内核文件放在哪sr
用来制作一个压缩的cpio归档文件:initrd的镜像,他可以作为内核启动后挂接的第一个文件系统
Documentation
内核文档
Scripts
用于配置、编译内核的脚本文件
Linu内核Makefile文件分类
名称
描述
顶层Makefile
他是所有Makefile文件的核心,从总体上控制着内核的编译、连接
.config
配置文件,在配置内核时生成。所有Makefile文件都是根据.config来决定使用哪些文件
Arch/Makefile
对应体系结构的Makefile,它用来决定哪些体系结构相关的文件参与内核的生成,并提供一些规则来生成特定格式的内核镜像
Scripts/Makefile
Makefile公用的通用规则、脚本等
Kbuild Makefile
各级目录下的Makefile,它们相对简单,被上一层Makefile调用编译当前目录下的文件
3、根文件系统
嵌入式 Linux 中都需要构建根文件系统,构建根文件系统的规那么在FHS(FilesystemHierarchy Standard)文档中,下面是根文件系统顶层目录。
三、根文件系统的制作
一、进入到/opt/studyarm 目录,新建成立根文件系统目录的脚本文create_rootfs_bash,利用命令chmod +x create_rootfs_bash 改变文件的可执行限,./create_rootfs_bash 运行
脚本,就完成了根文件系统目录的创建。create_rootfs_bash的内容为
#!/bin/sh
echo "------Create rootfs --------"
mkdir rootfs
cd rootfs
echo "--------Create ----------"
mkdir root dev etc boot tmp var sys proc lib mnt home
mkdir etc/ etc/ etc/sysconfig
mkdir usr/sbin usr/bin usr/lib usr/modules
echo "make node in dev/console dev/null"
mknod -m 600 dev/console c 5 1
mknod -m 600 dev/null c 1 3
mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp
mkdir var/lib var/lock var/run var/tmp
chmod 1777 tmp
chmod 1777 var/tmp
echo "-------make direction done---------"
二、成立动态链接库:动态链接库直接用友善之臂的,先解压友善之臂的根文件包,拷贝 lib 的内容到新建的根文件目录lib 内。
3、修改busybox目录下的Makefile文件
CROSS_COMPILE =arm-linux- _install) BusyBox installation prefix
Busybox Library Tuning --->
(6)Minimum password legth
(2)MD5:Trade Bytes for Speed
[*]Fsater /proc scanning code(+100bytes)
[*]Command line editing

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。