环境:debian 6 linux 2.6.35.7

arm-linux-gcc:

 

LINUX只是一个内核,不能算是操作系统。操作系统还包括更多的东西,比如用户界面。我们要做的第一步是要让内核在目标版运行起来。

移植准备

1. 目标板

已经安装bootloader目标板。

2.交叉工具链

可以网上下载已经编译好的工具链,需要将路径放入环境变量PATH。

3. 内核源码

下载新的内核,在http://www.kernel.org/pub/linux/kernel/,可以下载任意版本内核。最好选稳定版本,也就是第二位为偶数的。我下载的是

linux-2.6.35.7.tar.gz

3.烧写工具

可以将镜像烧进目标板的工具,根据不同目标版而定。可通过网口,SD卡下载。

开始移植

shell进入包含内核包路径,解压内核tar -zvxf linux-2.6.35.7.tar.gz.按TAB键可以补全。解压完毕后会生成linux-2.6.35.7文件夹。

修改顶层Makefile。

ARCH                   =? ARM,

CORSS_COMPILE =? arm-linux-

如不修改,将会默认ARCH=x86

载入CPU默认配置

在arch/arm/configs下面,有各种配置,我们需要的是缺省配置s5pv210_deconfig,在内核根目录下执行make s5pv210_deconfig,s5pv210_deconfig配置将会写进根目录下的.config。

配置内核

在根目录下执行最常用的make menuconfig,将会载入.config的内容。由于我们现在只是先将内核运行起来,直接采用缺省配置就行。一般是采用串口来检测内核的运行情况,有一个地方要注意一下,就是在配置内核的时候设置图中第四个选项。表示选择哪个串口输出低级信息,这个要根据你所使用处理器的哪个串口来决定。配置完后记得保存。


linux 内核软件如何移植Android上 linux内核移植教程_linux

 

设置mach-type

将内核下载进入开发板,必须要先设置mach-type,mach-type保存在arch/arm/tools/mach-type.h。mach-type要与bootloader中的mach-type对应才能正确下载内核。

 

编译内核

在内核根目录下make clean,清楚以前编译留下的文件,否则有可能出现错误。接着make zImage。编译完成后,将会在arch/arm/boot生成zImage文件。将其下载进板内,正确设置串口终端,将会看到启动信息。表示内核正确运行。


补充:

修改 Boot Options:

linux 内核软件如何移植Android上 linux内核移植教程_根目录_02


修改 arch/arm/tools中的mach-types

  

linux 内核软件如何移植Android上 linux内核移植教程_串口_03

修改 arch/arm/mach-s5pv210/include/mach/ 中的memory.h

linux 内核软件如何移植Android上 linux内核移植教程_根目录_04