《构建嵌入式Linux系统》
实验报告
学生姓名: 刘涛 学 号: B12040909 专业班级: NIIT9班
指导教师: 孙国梓 完成时间: 2015.5.8
实验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 zxvf u-boot-mini6410-20111018.tar.gz,在解压后的文件夹下,可以看到Makefile文件,是整个uboot源码包编译的总Makefile,负责整个uboot的裁剪、编译等过程。
第二步,实验设备使用128M内存,处理器采用S3C6410,生成配置文件命令为
#cd /opt/FriendlyARM/ /u-boot-mini6410 #make mini6410_nand_config-ram128。
第三步,编译UBOOT命令为#make,编译完成后生成uboot.bin,该文件存储在/opt/FriendlyARM/ /u-boot-mini6410目录下。
5.2 内核裁剪及编译
步骤【参看04- Tiny6410 Linux开发指南.pdf文档1.6.1节】:
第一步,解压缩Linux内核源码,命令______________________________________,在解
压缩后的文件夹下,可以看到Makefile文件,是整个Linux内核源码包编译的总Makefile,负责整个Linux内核的裁剪和编译工作。
第二步,内核源码裁剪
cp config_linux_mini6410 .config make clean make zlmage
方式1:通常情况下linux根目录下有个.config文件,该文件是宏文件,每个宏和一定的源码文件关联,如果注释掉相应宏,则对应源码将不会被编译进linux内核映像文件中。
实验1----打开该文件可以选择注释掉部分宏,如CONFIG_NET=y,重新编译会发现内核文件zImage大小为___3.1MB_______字节,或者到net目录下发现所有的c文件__B_(A.被编译 B.未被编译)。
实验2----重新打开.config文件,取消注释宏CONFIG_NET=y,重新编译会发现内核文件zImage大小为___3.6MB_______字节,或者到net目录下发现所有的c文件__A_(A.被编译 B.未被编译),且net目录下的所有被编译后的目标文件被连接成一个目标文件_____build-in.o_____。
方式2:在shell环境下,进入内核源码顶层目录,执行命令make menuconfig命令,进入图形环境下裁剪Linux内核。找到“网络支持选项”,按空格键取消选择,并保存退出,重新打开.config文件,发现宏CONFIG_NET是否被定义__B__(A. 被定义 B.被注释 ),重新编译会发现内核文件zImage大小为___3.6MB_______字节,或者到net目录下发现所有的c文件_A__(A.被编译 B.未被编译)。
第三步,编译内核,命令为__make zImage____,编译完成后生成zImage,该文件存储在
____/opt/FriendlyARM/linux-2.6.38/arch/arm/boot_目录下。
5.3 内核添加自己代码的方式
本例以添加一个RC4加密算法为例来进行
第一步,找到内核源码存放加密算法的文件夹,位于______/opt/FriendlyARM/linux-2.6.38/crypto__目录
第二步,在该目录下编写代码rc4.c文件,文件仅简单包含如下内容 #include
第三步,打开该文件夹下Kconfig文件,添加如下代码【红色加粗斜体部分】 if CRYPTO
comment \ config RC4ENCRYPT bool \ help this is a simple test ,no use
第四步,执行make menuconfig,在其中找到\选项,并选中,退出配置,在.config文件中,____A________(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_______(A.有 B.没有)rc4.o文件
5.4 文件系统构建
步骤【参看04- Tiny6410 Linux开发指南.pdf文档1.7~1.8节】
第一步,解压缩busybox,命令为______________________________________,解压缩完
成后,可以看到在目录下有Makefile文件和.config文件,Makefile文件负责编译,具体编译哪些文
件依据.config文件。打开fa.config文件,查看其中宏。
第二步,裁剪命令,执行命令______makemenuconfig______,去除其中部分选项,保存退出,查看.config文件,可以看到相应宏定义也发生变化了。
第三步,编译文件,命令为_make_,安装到相应的文件夹,命令为____make install______,到对应的文件夹下查看生成的命令文件。
第四步,创建配置文件,将busybox源码目录下的etc文件夹拷贝到刚才的文件夹下 第五步,拷贝已经移植好的lib到刚才的文件夹下 第六步,创建文件夹dev proc tmp等,
第七步,利用工具将文件夹制作成根文件系统,命令为___ _。
5.4 按照文档【03- Tiny6410刷机指南.pdf中2.2.1】进行烧写
四、 昰罘昰这样分罘开合罘来才叫做真噯 五、 时间长了,没有恨啦,只有满满的遗憾,和懊悔,也许再恨一个人,时间长也会成为想念吧。 六、 最后,最后,还是寂寞依旧。 七、 有一天你会发现 、 我是多么的重要 八、 爱一个人是幸福的累。恨一个人是痛苦的累。头疼。但还是祝福你。你的世界没有我也许会更好。 九、 我还在原地等你,你却已经忘记曾经来过这里
十、 没有什么过不去,只是再也回不去。 十一、 如若我比她先认识你,是不是你会许我一个地久天长。 十二、 每个人的生命中都有一个刺青爱人,大火不能熄灭,众水不能淹没。 十三、 不是因为讨厌一个人的点点滴滴才开始讨厌ta,是因为讨厌一个人才讨厌ta的点点滴滴,一句话,一个表情都讨厌。 十四、 背道而驰的感觉你懂吗?讨厌一个人很累,要捡起所有点点滴滴恨一个人需要浪费美丽的时间,所以忘记所有才是漂亮的活法。行动与口头承诺。所做,所说,所厌烦的。一点一点地暴露无疑…陌生人,朋友,恋人。只不过是飞蛾成蝶的过程到飞蛾扑火消失殆尽。直到变成嗜之以鼻的日子。 十五、 每处一个对象,就伤一个人,那么沵活着是来伤人/.? 十六、 越来越理解老牟说讨厌一个人吃饭了。没错,是认识很多人,也有些许好友,但并不是谁你都想约饭的。一个人,一盒饭,一台电视,好惨的。 十七、 你能不能对我在冷漠一点呢,至少让我以为你不在爱我了 十八、 ﹌ 曾几何时,我们以为自己深深的爱着的一个人。后来,我们才知道,那不是爱,那只是对自己说谎。 十九、 恨一个人的感觉,可以很透彻。 二十、 如果世界上有后悔药,那我宁愿一切如初。 二十一、 我希望有个人能明白我冷言冷语中的温暖。 二十二、 我永远都忘不了你笑着对我说不用了,永远都忘不了你留给我冷冷的背影,只要我活着我绝不会再让我的感情变的廉价,只要我活着我就会告诉我自己,在我心底有一个人,我恨她,人们都说有多深的爱就有多深恨,那么,从现在起就让我恨你,看看我有多爱你,尽管恨一个人的过程是痛苦,那也值!