实验五内核裁减和编译实验的预习报告一实验内容和背景实验背景:嵌入式驱动开发,内核开发,都无可避免的要使用Linux,尤其是做系统移植,在编译内核的时候,我们都需要把没用的内核模块给删除掉,以减少内核的文件大小,这也是嵌入式的一个特性。Linux为嵌入操作系统提供了一个极有吸引力的选择,它是个和Unix相似、以核心为基础、全内存保护、多任务、多进程的操作系统。可以支持广泛的计算机硬件,包括X86、Alpha、Sparc、MIPS、PPC、ARM、NEC、MOTOROLA等现有的大部分芯片。Linux的程序源码全部公开,任何人都可以根据自己的需要裁剪内核,以适应自己的系统。文章以将linux移植到ARM920T内核的s3c2410处理器芯片为例,介绍了嵌入式linux内核的裁剪以及移植过程,文中介绍的基本原理与方法技巧也可用于其它芯片。Linux内核的移植可以分为板级移植和片级移植。对于Linux发行版本中已经支持的CPU通常只需要针对板级硬件进行适当的修改即可,这种移植叫做板级移植。而对于Linux发行版本中没有支持的CPU则需要添加相应CPU的内核移植,这种移植叫做片级移植。片级移植相对板级移植来说要复杂许多,需要对linux内核有详尽的了解,不适合于教学。本实验采用的Linux中已经包含S5PV210处理器的移植包。本次实验的目的:1、了解和掌握内核源代码的目录结构;2、了解内核系统配置方式,了解Makefile和config.in脚本文件的作用;3、了解内核各项的内容;4、熟悉make命令的使用实验内容: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下载到扳子上运行6、重新尝试编译生成新的内核,并移植到目标板上;二实验涉及的知识点知识点1:内核裁剪。Linux内核裁减(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的图形库的。知识点2:内核编译。内核的编译在完成内核的裁减之后,内核的编译就是一个非常简单的过程。执行以下几条命令:1、makeclean这条命令是在正式编译你的内核之前先把环境给清理干净。有时你也可以用makerealclean或makemrproper来彻底清除相关依赖,保证没有不正确的.o文件存在。2、makedep这条命令是编译相关依赖文件。3、makezImage这条命令就是最终的编译命令。有时你可以直接用make(2.6.X版本上用)或makebzImage(给PC机编译大内核时用)4、makeinstall这条命令可以把相关文件拷贝到默认的目录。当然在给嵌入式设备编译时这步可以不要。因为具体的内核安装还需要你手工进行。详细:1.打开终端2、进入下载到的内核所在的目录,将下载的内核移动到/usr/src/目录下mvlinux-3.12.6.tar.xz/usr/src3、切换到/usr/src/目录下,解压缩内核压缩包。xz-dlinux-3.12.6.tar.xztar-xvflinux-3.12.6.tar将/usr/include/asm、/usr/inlude/linux、/usr/include/scsi链接到/usr/src/linux/include目录下的对应目录中cd/usr/includerm-rfasmlinuxscsiln-s/usr/src/linux-3.12.6/include/asm-genericasmln-s/usr/src/linux-3.12.6/include/linuxlinuxln-s/usr/src/linux-3.12.6/include/scsiscsi以上红色字体部分不是必做。清理内核源码中的残渣:cd/usr/src/linux-3.12.6makemrproper4、输入cdlinux-3.12.6进入解压后的目录下。内核的配置了:5、切换到root用户下,输入以下命令:tarzxvfncurses-5.9.tar.gzcdncurses-5.9./configuremakemakeinstall安装好了ncurses。6、接第四步。在终端输入以下命令:makemenuconfig7、配置需要的内容。保存退出。8、配置完成以后,开始编译内核,在终端输入make命令即可。安装内核模块:9、输入命令makemodules_install10、输入命令makeinstall此时,内核编译完成。修改启动程序配置,运行新的内核程序。11、将生成的bzImage文件和System.map文件拷贝到/boot/目录下,命令如下:cp/usr/src/linux-3.12.6/arch/x86/boot/bzImage/boot/cp/usr/src/linux-3.12.6/System.map/boot/12、在终端输入命令:mkinitramfs3.12.6-o/boot/initrd/img-3.12.6建立镜像文件输入命令:update-initramfs-c-k3.12.6再输入命令:update-grub2更新修改系统引导配置。13、进入引导程序(bootloader)的配置文件,对于不同的引导程序(LILO和GRUB),其配置文件所在路径不同。对于LILO,路径为:/etc/lilo.conf对于GRUB,路径为:/boot/grub/grub.cfg内核编译就算全部完成,可以重启电脑。