我的linux内核移植笔记
宿主机:centos5.6
目标机:ok6410A
交叉编译器:arm-linux-gcc-4.3.2
交叉编译器路径:/usr/local/arm/4.3.2
要移植的内核版本:linux-2.6.36
U-BOOT:u-boot1.1.6
文件系统类型: cramfs (目前使用光盘中linux-2.6.36的文件系统)
作者:yueye
时间:2012-4-4
一、获取Linux内核源码
首先,从官网上下载linux-2.6.36的内核。
在ftp://http://www.doczj.com/doc/6ecd81da3186bceb19e8bb11.html/pub/linux/kernel/v2.6/找到。
新建目录mkdir /home/yueye/ok6410,接着将源码包放在该目录下。
解压源码包到我的工作目录
tar -zxvf linux-2.6.36.tar.gz –C /home/yueye/ok6410
二、修改Makefile
前提是你的PATH环境编译可以找到你的交叉编译工具链。
查看PATH环境变量: echo $PATH
添加环境变量:vi ~/.bashrc
在打开的文件最后加上:export PATH=/usr/local/arm/4.3.2/bin:$PATH
[root@www ok6410]# cd linux-2.6.36
[root@www linux-2.6.36]# vi Makefile
------------------------------------------
#ARCH ?= $(SUBARCH)
#CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
ARCH ?= arm
CROSS_COMPILE ?= /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-
备注:后来编译内核时出现无法找到交叉编译器的错误,这个问题郁闷了一天,原来在配置内核时要选择这个选项才能吃到我们设定的交叉编译器。
在配置内核注意要选上以下选项
Kernel Features --->
[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel (EXPERIMENTAL)
三、配置Nand Flash分区信息
在linux-2.6.36\arch\arm\mach-s3c64xx\mach-smdk6410.c文件中,添加如下内容:
//tzq@20120401 add it
#include
#include