Linux内核主要由进程调度、内存管理、虚拟文件系统、网络接口和进程间通信5个子系统组成。Linux内核移植需要设置环境变量,并修改以下方面:
(1)根目录
修改根目录下的Makeflle文件,打开最上层目录下的Makefile文件,这个文件中需要修改的内容包括以下两个方面。
指定目标平台:
移植前ARCH:=$(shelluname-m|sed-es/i.86/......)
移植后ARCH:=arm
指定交叉编译器:
移植前CROSS_COMPILE=
移植后CROSS_COMPILE=arm-Linux-
(2)arch目录
arch目录存放着和体系结构相关部分的内核代码。在arch/arm中需要修改Makefile文件,添加下面内容。移植后:
TEXTADDR决定内核起始运行地址,即image.ram应下载的位置。
(3)config.in
config.in是配置文件,运行“makemenuconfig”命令时出现的菜单就是config配置的。在config文件中加入相关信息。
添加CONFIG_ARCH_S3C2410子选项。移植后:
其他选项:
(4)arch/arm/boot
编译出来的内核存放在这个目录中。(www.xing528.com)
Makefile移植后:
ZRELADDR用于决定内核解压后数据输出的地址。ZTEXTADDR为Bootloader的压缩内核文件固压Flash的起始地址,即从哪个位置开始执行BootLoader。若启动时直接执行,则将其设为0;若自带BIOS需要跳到想要的地址,则可以改为所要的位置。
通过compressed/Makefile文件创建一个压缩的Linux镜像。此文件中用到的SYSTEM、ZTEXTADDR、ZBSSADDR和ZRELADDR是从arch/arm/boot/Makefile获得的。移植后
其中,head-s3c2410.o是由head-s3c2410.s文件经过编译产生的,主要用来初始化处理器。
(5)arch/arm/def-configs目录
这里定义了一些平台的config文件,如lart和assert等。把配置好的文件复制到这里即可。
(6)arch/arm/kernel目录
这个目录下的内容是与硬件平台相关的内核代码。增加S3C2410的支持。移植后:
增加其他功能,移植后:
在适当的地方加入debug-armv.s和entry-armv.s中的代码。函数是setup_arch用来完成和体系相关的初始化工作,如对物理内存结构的初始化等。
在Linux内核编译之前首先要配置内核。配置内核的命令包括makeconfig、make oldconfig、makemenuconfig和makexconfig等。每个命令都将产生config文件,并在每一个C源文件中加上<Linux/config.h>,使define的宏CONFIG_XXX起全局性的作用。
编译内核需要3个步骤,分别是
●执行“makedep”建立内核依赖关系。
●执行“makezImage”创建内核镜像文件。
●执行“makemodules”创建内核模块。
生成内核以后,接下来就是安装它。对每一个内核配置来说,需要没有压缩的内核镜像(zImage或bzlmage)、压缩的内核镜像、内核的符号映射文件(System.map)以及配置文件(config)4个文件。生成的zImage(bzImage)文件是平台相关的,它在Makefile文件中设置。使用ARM平台生成的镜像文件位于/arch/arm/boot/zImage目录下。其他3个文件在内核代码的根目录下。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。