一直都是很懒,多得借来赖隆的mini2440开发板来学习arm,姑且学了点东西,决定跟着教程学学linux的移植,特以此文来记载移植过程,以供日后参看。
0.工作环境。
alex @arch~/embedded $ uname -a
Linux arch3.7-pf #1 SMP PREEMPT Fri Dec 21 10:51:38 CST 2012 x86_64 GNU/Linux
1.开始准备工作。
建立工作目录,下载源码。
mkdirembedded
源码下载:
linux-3.7.tar.xz: http://mirrors.ustc.edu.cn/linux-kernel/v3.x/linux-3.7.tar.xz
yaffs2:http://aleph1.co.uk/gitweb?p=yaffs2.git;a=snapshot;h=HEAD;
ps:yaffs2的下载一般都是使用git的吧,但是本人下载时速度很慢,故采用以上的链接下载了,其他同学可以通过git下载的。
gitclone git://www.aleph1.co.uk/yaffs2
解压源码。
tar -vxf linux-3.7.tar.xz
tar -vxf yaffs2-HEAD-52df965.tar.gz
这时,文件夹中文件为:
alex@arch ~/embedded $ ls
linux-3.7/ linux-3.7.tar.xz yaffs2-HEAD-52df965/ yaffs2-HEAD-52df965.tar.gz
2.开始检测编译
alex@arch ~/embedded $ cd linux-3.7/
alex@arch ~/embedded/linux-3.7 $ vim Makefile
把194,195,196行的原内容:
exportKBUILD_BUILDHOST := $(SUBARCH)
ARCH ?=$(SUBARCH)
CROSS_COMPILE ?=$(CONFIG_CROSS_COMPILE:"%"=%)
改为:
exportKBUILD_BUILDHOST := $(SUBARCH)
ARCH ?=arm
CROSS_COMPILE ?=arm-uknown-linux-gnueabi-
ps:这里的修改为指定编译的目标平台以及交叉编译工具,故有CROSS_COMPILE ?=arm-uknown-linux-gnueabi- 中arm-uknown-linux-gnueabi-的修改应为本机上的工具链,因为本人使用的为采用crosstool-ng生成的工具链,不一定和大家的相同,故请大家注意修改为自己使用工具链。
再ps:注意留心,工具链的最后有个“-”的。
现在试着编译一下,检测是否设置成功了。
makemini2440_defconfig
ps:在友善之臂的教程中有说是用makes3c2410_defconfig的配置进行编译的,但是本人觉得,直接用内核自带的mini2440来编译也没什么区别的。
再ps:编译的选项中其实尝试用make-jxmini2440_defconfig来编译的这样由于是启用多进程同步编译,速度会快点(x为本机的cpu核心数+1,本人的笔记本为双核的,故为make-j3)
这里一般是没有问题的,假如设置没错的话。