实验5linux内核的裁剪移植
实验5 linux内核的裁剪移植
一、实验目的:
学习利用menuconfig配置文件进行裁减内核,编译内核并移植到开发板上。
二、实验内容
一、开发环境
宿主机:ubuntu10.04
开发板:tiny6410
编译器:4.3.2
二、内核移植
1.下载源码
/pub/linux/kernel/v2.6/linux-2.6.38.tar.bz2
此实验所需的文件放到/home/embedded/11目录下:
linux-2.6.38.tar.bz2, yaffs2.tar.bz2
s3c_nand.c , s3c_nand_mlc.fo ,nand_base.c ,Kconfig ,regs-nand.h
2.解压
( 进入根目录下的/home/poplar/expr4/kernel目录,解压源码)
# cd /home
# mkdir poplar/expr4/kernel –p
# cd /home/poplar/expr4/kernel
# cp /home/embedded/11/linux-2.6.38.tar.bz2 ./
tar xvfj /home/poplar/expr4/kernel/linux-2.6.38.tar.bz2
3.修改架构,编译器(需要在arm上运行,所以用交叉编译器)
解压完进入解压出来的linux-2.6.38目录
#cd linux-2.6.38
#vi Makefile?(或者用gedit)
191行改为???
?ARCH?????????????= arm //191行
CROSS_COMPILE?= /usr/local/arm/4.3.2/bin/arm-linux-
(找到其交叉编译环境,把路径加全) //192行
4.生成默认配置文件
#cp arch/arm/configs/s3c6400_defconfig .config
如省略这个操作的话后面会找不到System Type
Linux内核中已经自带了关于我们6410开发板的配置。
5.修改配置项
#make menuconfig
System Type->[*] MINI6410?? 选上,
6.拷贝NAND FLASH驱动到根目录下的/home/poplar/expr4/kernel下的linux-2.6.38里相应的文件位置处(以下的文件在实验五文件夹里有)
drivers/mtd/nand/s3c_nand.c
? ? ??arch/arm/plat-samsung/include/plat/regs-nand.h
drivers/mtd/nand/s3c_nand_mlc.fo
drivers/mtd/nand/nand_base.c
drivers/mtd/nand/Kconfig
执行命令:
#cp /home/embedded/11/s3c_nand.c ./drivers/mtd/nand/
#cp /home/embedded/11/s3c_nand_mlc.fo ./drivers/mtd/nand/
#cp /home/embedded/11/nand_base.c ./drivers/mtd/nand/
#cp /home/embedded/11/Kconfig ./drivers/mtd/nand/
#cp /home/embedded/11/regs-nand.h ./arch/arm/
plat-samsung/include/plat/
7修改nand 驱动makefile
输入指令#cd drivers/mtd/nand
#vi Makefile
drivers/mtd/nand/Makefile中20行增加obj-$(CONFIG_MTD_NAND_S3C) += s3c_nand.o末尾再增加obj-$(CONFIG_MTD_NAND_S3C) += s3c_nand_mlc.fo8.增加相应选项
输入指令#cd /home/poplar/expr4/kernel/linux-2.6.38
#make menuconfig
??Device Drivers--->?
???????????? Memory Technology Device (MTD) support??--->
???????????????????????????? [*]?? MTD partitioning support
??????????????????????????????[*]???? Command line partition tab