我的linux内核移植笔记.doc
文本预览下载声明
我的linux内核移植笔记
宿主机:目标机:交叉编译器:arm-linux-gcc-交叉编译器路径:/usr/local/arm/要移植的内核版本:linux-2.6.3文件系统类型: (目前使用光盘中linux-2.6.的文件系统)2012-4-4
获取Linux内核源码
首先,从官网上下载linux-2.6.36的内核。
在/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文件中,添加如下内容:
//tzqadd it
#include linux/mtd/mtd.h
#include linux/mtd/partitions.h
#include plat/nand.h
/*我的开发板Nand Flash大小为1GB,按如下大小进行分区*/
3.1 建立分区表
/************************************
* tzqadd it
* Configuring Nandflash on SMDK6410
************************************/
struct mtd_partition ok6410_nand_part[] = {
{/*1MB*/
.name = Bootloader,
.offset = 0,
.size = (1 * SZ_1M),
.mask_flags = MTD_CAP_NANDFLASH,
},
{/*5MB*/
.name = Kernel,
.offset = (1 * SZ_1M),
.size = (5*SZ_1M) ,
.mask_flags = MTD_CAP_NANDFLASH,
},
{/*120MB*/
.name = User,
.offset = (6 * SZ_1M),
.size = (120*SZ_1M) ,
},
{/*THE LESS SIZE ALL*/
.name = File System,
.offset = MTDPART_OFS_APPEND,
.size = MTDPART_SIZ_FULL,
}
};
注释:
name:?代表分区名字
size:?代表flash分区大小(单位:字节)
offset:?代表flash分区的起始地址(相对于0x0的偏移)
4个区,分别存放bootloader,?kernel,?以及以便以后扩展使用的用户文件系统空间。
Nand?flash中起始地址.?分区大小.?记录如下:bootloader:
start:?0 len:
显示全部