嵌入式实验5内核裁减和编译实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验五内核裁减和编译实验的实验报告一实验目的1、了解和掌握内核源代码的目录结构;2、了解内核系统配置方式,了解Makefile和config.in脚本文件的作用;3、了解内核各项的内容;4、熟悉make命令的使用二实验环境预装redhat9.0(内核版本2.4.x)的pc机一台,CVT-A8嵌入式实验箱一台(已构建嵌入式Linux系统),以太网线一根,交叉编译工具链,Linux2.4.x版本源代码。三实验步骤1、察看和了解Linux内核的目录及内容;2、察看和了解Linux内核的Makefile文件及作用;3、察看和了解Linux内核的config.in文件及作用;4、使用menuconfig或Kconfig察看内核编译选项及作用;5、开关某些编译选项,自己裁剪一个Linux内核;cd/opt/cvtech/kernel-s5pv210ls查看源码目录下的文件makemenuconfig:出现配置界面,选择某些进行配置编译,会在顶层源码目录下生成.config的配置文件。在顶层makefile中CROSS_COMPILE的位置加入交叉编译工具基本配置已经作好,保存退出执行makezImage命令生成内核,编译完成后在arch/arm/boot路径下生成zImage,拷贝它到tftp目录下,并通过tftp下载到扳子上运行5、重新尝试编译生成新的内核,并移植到目标板上;cd/opt/cvtech/kernel-s5pv210:ls查看源码目录下的文件Vimakefile:WQ保存退出:makemenuconfig:编译zimagecdarchs:Ziamge:Ping超级终端:zimaghe下载完成:四实验思考1.嵌入式操作系统内核为什么要是可裁剪的?在编译内核的时候,我们都需要把没用的内核模块给删除掉,以减少内核的文件大小。2.内核裁剪的常用命令?(1)安装新内核:i)将新内核copy到/usr/src下,#tarxzvflinux-2.6.38.4.tar.gz-----解压缩.ii)将名为linux的符号链接删掉,这是旧版本内核的符号链接.#ln-slinux-2.6.38.4linux------建立linux-2.6.38.4的符号链接linux.(2)设置内核.#cd/usr/src/linux#makemrproper-----删除不必要的文件和目录.#makemenuconfig生成一个.config文件运行:1)makeconfig:进入命令行,可以一行一行的配置,这不好使用所以我们不具体介绍。2)makemenuconfig:进入我们熟悉的menuconfig菜单。3)makexconfig:在2.4.X以及以前版本中xconfig菜单是基于TCL/TK的图形库的。3.编译进内核和模块加载的区别?从驱动的入口函数看,两者是一样的。当我们选择将驱动编译成模块时,MODULE宏就会被定义,如果没有定义MODULE宏,那么驱动初始化函数就会带有.initcall6.init属性,那么在其编译时将会被安排到__initcall_start和__initcall_end范围之间,而INITCALLS宏定义在include/asm-generic/Vmlinux.lds.h中。在kernel启动时,会执行如下函数:init-do_basic_setup-do_initcallsdo_initcalls中会把.initcall.init中的函数依次执行一遍,所以在内核启动过程中执行了module_init(fn)函数,也就实现了自动加载模块的目的。五实验心得通过本次实验,了解和掌握了内核源代码的目录结构,了解了内核系统配置方式,了解了Makefile和config.in脚本文件的作用,了解了内核各项的内容,熟悉了make命令的使用。在实验开始时对一些指令的使用不是很熟悉,后来经过查资料后慢慢的就弄懂了,还遇到了一些很简单的问题,但因为不是很熟悉操作,所以会被卡住,但最后在同学的帮助下解决了问题,让我认识到了平时所看到的理论知识不进行实际的操作很难真正的掌握,所以在注重理论知识的同时我们应该加强动手能力。

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功