实验2  构建嵌入式Linux系统

一.实验目的

理解嵌入式Linux内核和文件系统构建过程,掌握Linux内核裁剪、编译等过程,掌握基于busybox构建嵌入式文件系统命令工具等内容,并利用相关工具制作文件系统。

二.实验内容

实验2.1 配置和编译UBOOT

实验2.2 裁剪和编译内核

实验2.3 制作文件系统

三.预备知识

Linux使用等

四.实验设备及工具(包括软件调试工具)

硬件:ARM 嵌入式开发平台、PC 机Pentium100 以上、串口线。

软件: WinXP或UBUNTU开发环境。

五.实验步骤

5.1 UBOOT配置及编译

步骤【参看04- Tiny6410 Linux开发指南.pdf文档1.5.1节】:

第一步,解压缩uboot源码,命令__tar  xzvf _u-boot-mini6410-20111018.tar.gz__
,在解压后的文件夹下,可以看到Makefile文件,是整个uboot源码包编译的总Makefile,负责整个uboot的裁剪、编译等过程。

第二步,实验设备使用128M内存,处理器采用S3C6410,生成配置文件命令为 make mini6410_nand_config-ram128  。

第三步,编译UBOOT命令为 make,编译完成后生成uboot.bin,该文件存储在/opt/FrendlyARM/u-boot-mini6410目录下。

5.2 内核裁剪及编译

步骤【参看04- Tiny6410 Linux开发指南.pdf文档1.6.1节】:

第一步,解压缩Linux内核源码,命令tar  xzvf  linux-2.6.38-20141014.tgz
,在解压缩后的文件夹下,可以看到Makefile文件,是整个Linux内核源码包编译的总Makefile,负责整个Linux内核的裁剪和编译工作。

第二步,内核源码裁剪

方式1:通常情况下linux根目录下有个.config文件,该文件是宏文件,每个宏和一定的源码文件关联,如果注释掉相应宏,则对应源码将不会被编译进linux内核映像文件中。

        实验1----打开该文件可以选择注释掉部分宏,如CONFIG_NET=y,重新编译会发现内核文件zImage大小为 3M
字节,或者到net目录下发现所有的c文件 未被编译 (A.被编译 B.未被编译)。

        实验2----重新打开.config文件,取消注释宏CONFIG_NET=y,重新编译会发现内核文件zImage大小为2.985M
字节,或者到net目录下发现所有的c文件 被编译  (A.被编译 B.未被编译),且net目录下的所有被编译后的目标文件被连接成一个目标文件built-in-o


方式2:在shell环境下,进入内核源码顶层目录,执行命令make menuconfig
命令,进入图形环境下裁剪Linux内核。找到“网络支持选项”,按空格键取消选择,并保存退出,重新打开.config文件,发现宏CONFIG_NET是否被定义B.
被注释(A. 被定义  B.被注释 ),重新编译会发现内核文件zImage大小为2.985M字节,或者到net目录下发现所有的c文件 未被编译 (A.被编译
B.未被编译)。

第三步,编译内核,命令为 make zImage ,编译完成后生成zImage,该文件存储在
/opt/FrendlyARM/u-boot-mini6410/arch/arm/boot目录下。

5.3 内核添加自己代码的方式

本例以添加一个RC4加密算法为例来进行

第一步,找到内核源码存放加密算法的文件夹,位于/opt/FrendlyARM/linux-2.6.38/crypt目录

第二步,在该目录下编写代码rc4.c文件,文件仅简单包含如下内容

#include <linux/kernel.h>

void rc4ENCrypt()

{

        printk("THIS IS A SIMPLE TEST,NO USE\n");

        return;

}

第三步,打开该文件夹下Kconfig文件,添加如下代码【红色加粗斜体部分】

if CRYPTO

comment "Crypto core or helper"

config RC4ENCRYPT

        bool "RC4 ENCRYPT SUPORT"

        help

                 this is a simple test ,no use

第四步,执行make menuconfig,在其中找到"RC4 ENCRYPT SUPORT"选项,并选中,退出配置,在.config文件中,_有__
(A.有  B.没有)宏CONFIG_RC4ENCRYPT。

第五步,打开crypt目录下的Makefile文件,添加如下代码【红色加粗斜体部分】

obj-$(CONFIG_CRYPTO_WORKQUEUE) += crypto_wq.o

obj-$(CONFIG_CRYPTO_FIPS) += fips.o

obj-$(CONFIG_RC4ENCRYPT) +=rc4.o

第六步,编译内核,并查看crypt目录下 有 (A.有  B.没有)rc4.o文件

       

5.4 文件系统构建

步骤【参看04- Tiny6410 Linux开发指南.pdf文档1.7~1.8节】

第一步,解压缩busybox,命令为 tar xzvf busybox-1.17.2-20101120.tgz
,解压缩完成后,可以看到在目录下有Makefile文件和.config文件,Makefile文件负责编译,具体编译哪些文件依据.config文件。打开fa.config文件,查看其中宏。

第二步,裁剪命令,执行命令make menuconfig,去除其中部分选项,保存退出,查看.config文件,可以看到相应宏定义也发生变化了。

第三步,编译文件,命令为make,安装到相应的文件夹,命令为make install,到对应的文件夹下查看生成的命令文件。

第四步,创建配置文件,将busybox源码目录下的etc文件夹拷贝到刚才的文件夹下

第五步,拷贝已经移植好的lib到刚才的文件夹下

第六步,创建文件夹dev proc tmp等,

第七步,利用工具将文件夹制作成根文件系统,命令为 mkubimage-mlc2 rootfs_qtopia_qt4
rootfs_qtopia_qt4-mlc2.ub。

5.4 按照文档【03- Tiny6410刷机指南.pdf中2.2.1】进行烧写

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信