资源描述:
《实验三linux内核移植》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验内容H—Linux内核移植一、实验目的根据前两次实验的基础上做Linux内核移植实验,为以后移植应用程序做准备(P84)。二、实验内容在Linux下利用交叉编译工具配置编译zlmage并烧写到arm开发箱屮。三、实验步骤(1)实验准备从网上下载Linux的最新版本,解压后可以看到它的全部源代码,我们这里以linux-2.6.24为例,实现Linux的内核移植。mkdir・p/arm2410/kemelcd/arm2410/kemel#wgetftp://192.16&4.210/crosstool/linux・2.
2、6.24.tar.bz2cp/mnt/hgfs/kernel/crosstool/linux-2.6.24.tar.bz2・tar-xjvflinux-2.6.24.tar.bz2cdlinux-2.6.24(2)修改顶层Makefile在顶层Makefile先要定义交叉编译器,这里就使用我们第一次实验屮构建的交叉编译器。查找ARCH,在193行左右修改确认ARCH和CROSSCOMPILE的值ARCH?=armCROSSCOMPILE?=arm-linux-如果学生机上没有交叉编译环境,先从教师机上下载交叉编译环境或
3、者通过共享冃录来解压已经做好的交叉编译环境。#wgetftp://192.168.4.210/u-boot/arm-linux-gcc.tar.bz2#tar・xjvfarm-linux-gcc.tar.bz2・C/tar-xjvf/mnt/hgfs/kemel/u-boot/arm-linux-gcc.tar.bz2-C/#通过共亨口录为了方便使用ami・linux・gcc,我们可以把它所在的目录添加到环境变量中gedit/etc/profile在exportPATH前面插入PATH=/arm2410/crossto
4、ol/gcc-4.1.l-glibc-2.3.2/arm-linux/bin/:$PATH这样一句,以后启动就可以直接使用arm-linux-gcc了。要使环境变量立马生效,可以使用下面的命令。source/etc/profile~~我们可以用arm-linux・gcc來查看交叉编译器版本,如果是4.1.1就是正确的。(3)设置NandFlash分区信息表设置NandFlash的分区信息表是为内核启动以后加载文件系统用的,可以将NandFlash看成我们PC机的硬盘,对NandFlash的分区看成是对硬盘的分区,硬盘可
5、以分成C盘,D盘之类,而NandFlash则可以分成很多块,每块有不同的名字、大小和用途。下面是对Super-ARM实验箱的NandFlash进行分区的情况(参考表5-1-1):>第0块命名为“uboot”,它用来存放u-boot.bin映像,起始地址是NandFlash的0x000000,最大0x30000个字节;>第1块命名为“kernel",用來存放内核,起始地址是NandFlash的0x30000,最大0X1D0000个字节;>第2块命名为lootfs”,用来存放根文件系统,起始地址是NandHash的0x20
6、0000,最大30M字节;>笫3块命名为”ext・fsl“,留给用户存放其他文件系统,起始地址是NandFlash的0x2000000,最大32M字节;至于具体要怎么分,这样根据你的目标机的NandFlash來定,不能一概而论。分区的方法就是修改arch/arm/plat-s3c24xx口录卜•的common-smdk.c文件:执彳了gcditarch/ann/plat-s3c24xx/common-smdk.c命令,找到:staticstructmtd_partitionsmdk_dcfault_nand_part[
7、],在其中填入下面的内容(将原来的内容覆盖)[0]={.name="uboot°,.size=0x30()()0,.offset=0,},[11={.name="kernel",.offset=0x30000,.size=Ox1D0000,},[2]={.name="rootfs",.offset=SZ_2M,.size=SZ_lM*30,},[3]={.name="ext-fsl",.offset=SZ_32M,.size=SZ_32M,(4)添加devfs文件系统支持为了我们的内核支持devfs,以及在启动时能自动
8、挂载/dev。编辑fs/Kconfig:在907行menuHPseudofilesystems"bjfil添加如下代码:configDEVFS_FSbool"/devfilesystemsupport(OBSOLETE)"defaultyconfigDEVFS.MOUNTboolnAutomaticallymountatboot1