linux2.6内核移植

上传人:小** 文档编号:88022943 上传时间:2019-04-17 格式:PDF 页数:9 大小:243.49KB
返回 下载 相关 举报
linux2.6内核移植_第1页
第1页 / 共9页
linux2.6内核移植_第2页
第2页 / 共9页
linux2.6内核移植_第3页
第3页 / 共9页
linux2.6内核移植_第4页
第4页 / 共9页
linux2.6内核移植_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《linux2.6内核移植》由会员分享,可在线阅读,更多相关《linux2.6内核移植(9页珍藏版)》请在金锄头文库上搜索。

1、Linux2.6内核移植Linux2.6内核移植 引言: 引言: 学完本章内容以后,你将能够了解以下内容: ? 什么是移植; ? Linux操作系统的内核代码结构; ? 配置和编译linux系统内核。 7.17.1 移植概念 移植概念 在同一个硬件平台上可以嵌入不同的嵌入式操作系统,就好比PC可以安装 Windows又可以安装 Linux一样。同样,有些操作系统通过移植后可以运行在不 同的硬件平台上。如果一个系统可以在不同硬件平台上运行,那么这个系统就是 可移植的。使用某一个平台的代码运行在其他平台上的过程叫做移植。本书使用 的Linux操作系统就可以通过移植,使之运行在ARM、PowerPC

2、等多种硬件平台上。 为什么要进行移植?在Linux系统内核代码中有arch目录,其中包含了不同 平台的代码,arch目录中的代码就是为多平台设计并使用的。我们知道,嵌入式 系统是“硬件可裁剪”的,因些工程师们设计的硬件电路会有所不同,从而这些 代码可能无法正确运行,我们必须要做的就是结合自己的硬件电路,对已有的内 核代码进行修改移植。 7.27.2 移植前的知识 移植前的知识 7.2.17.2.1 去除依赖关系命令说明 去除依赖关系命令说明 通常要运行的第一个命令是: cd /usr/src/linux;make mrproper 该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖

3、7.2.27.2.2 配置命令说明 配置命令说明 配置内核可以根据需要与爱好使用下面命令中的一个: #make config(基于文本的最为传统的配置界面,不推荐使用) #make menuconfig(基于文本选单的配置界面,字符终端下推荐使用) #make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用) #make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会 省去不少麻烦) 这三个命令中,make xconfig的界面最为友好,如果你可以使用Xwindow, 那么就推荐你使用这个命令。 与编译有关的命令有如下几个: #make dep #m

4、ake clean #make zImage #make bzImage #make modules #make modules_install #depmod -a 第一个命令make dep实际上读取配置过程生成的配置文件,来创建对应于 配置的依赖关系树,从而决定哪些需要编译而那些不需要; 第二命令make clean完成删除前面步骤留下的文件,以避免出现一些错误; 第三个命令make zImage和第四个命令make bzImage实现完全编译内核,二 者生成的内核都是使用gzip压缩的,只要使用一个就够了,它们的区别在于使 用make bzImage可以生成大一点的内核。 后面三个命令

5、只有在你进行配置的过程中, 在回答Enable loadable module support (CONFIG_MODULES)时选了“Yes”才是必要的,make modules和make modules_install分别生成相应的模块和把模块拷贝到需要的目录中。 严格说来,第七个命令和编译过程并没有关系,它是生成模块间的依赖关 系,这样你启动新内核之后,使用modprobe命令加载模块时就能正确地定位模 块。 7.2.37.2.3 选项形式功能说明 选项形式功能说明 随着内核的不断发展,内核选项也不断增加,本章尽量给出大部分内核选 项的含义。在内核配置中,带有“-”前缀的选项表示是当前主

6、菜单的子项, 带有“”前缀的选项表示是当前主菜单的二级子项。 每一个选项前面都有一个“ ”或“”,其含义如下。 “ ”表示该选项有两种选择方式: * 直接编译进内核 不编译 “”表示该选项有三种选择方式: 直接编译进内核 编译成模块形式,但不编译进内核 不编译进内核 7.37.3 Linux-2.6内核向MIPS平台移植 Linux-2.6内核向MIPS平台移植 7.3.17.3.1 配置和编译 buildroot 配置和编译 buildroot 1、获得buildroot工具 你可以从http:/www.buildroot.org网站获得buildroot工具包,也可以使用 我们提供给你得b

7、uildroot-20050807-ext2rootfix.tar.bz2工具包。 2、解压、配置和编译buildroot (1)解压工具包buildroot-20050807-ext2rootfix.tar.bz2 rootlocalhost tar xjf buildroot-20050807-ext2rootfix.tar.bz2 rootlocalhost cd buil* rootlocalhost/ buildroot (2)运行make 得到menuconfig配置 配置注意: Target achitecture: mipsel Toolchain options: - Ker

8、nel headers 2.6.12 - dont use a daily snapshot of uclibc - disable ccache support - disable multilib support - disable large file support - enable include target utils in toolchain Package selection for the target - busybox - dont use a daily snapshot of busybox - Furthermore select what you like. Y

9、ou dont need to select any other packages in order to get a working system. (3)运行make 生成交叉编译工具和root根文件系统 When buildroot ask for it, choose the following options: - Target processor architecture: 5. MIPS32 - Target processor endianness: 1. Little Endian - Target CPU has a memory management unit (MMU)

10、: y 7.3.27.3.2 解压内核源代码 解压内核源代码 Linux 内核的源代码包linux-2.6.12-rc1-mipscvs-20050403.tar.bz2。把 内核源代码包复制到某一个目录,进入该目录,运行以下命令: #tar jxvf linux-2.6.12-rc1-mipscvs-20050403.tar.bz2 这样将把内核源代码解压到linux-2.6.12-rc1-mipscvs-20050403目录。 7.3.37.3.3 打adm5120得补丁包 打adm5120得补丁包 向2.6.12内核打adm5120得补丁包。 rootlocalhost adm5120#

11、ln s linux-2.6.12-rc1-mipscvs-20050403 linux rootlocalhost adm5120# patch -p0 linux-2.6.12-rc1-adm.diff patching file linux/Makefile patching file linux/arch/mips/Kconfig . 7.3.47.3.4 装载缺省配置文件 装载缺省配置文件 rootlocalhost linux# cp /kernelconfig-2.6.12-rc1 .config 7.3.57.3.5 编译内核 编译内核 (1) 在linux/usr/目录下创建

12、root目录 rootlocalhost linux/usr# mkdir root (2) mount buileroot下得 root fs image rootlocalhost linux/usr# mount /home/liuz/adm5120/buildroot/root_fs_mipsel.ext2 ./root -o loop (3) 用户化root 文件系统 rootlocalhost linux/usr/root# rm linuxrc rootlocalhost linux/usr/root# ln -s bin/busybox init (4) 设置交叉开发环境,编译

13、内核 rootlocalhost linux# export PATH=/home/liuz/adm5120/buildroot/build_mipsel/staging_dir/bin:$PATH rootlocalhost linux# make CROSS_COMPILE=mipsel-linux- (5) 最后生成vmlinuz rootlocalhost linux# make vmlinuz 7.47.4 移植相关的目录 移植相关的目录 7.4.17.4.1 移植内核相关目录 移植内核相关目录 1、Documentation目录 该目录包括了许多有用的信息。 2、arch/目录 包

14、含体系架构特定的代码。每一个支持的体系架构包含一个子目录:如 ppc、arm等。并且每一种体系架构子目录下又包括四个重要的目录。 ? arch/arm/kernel 架构特定代码。 ? arch/arm/kernel/head.s 内核入口汇编文件。他包括内核入口、异常处理等相关处理代码。 他还负责初始化MMU、BSS、Stack等,最后他通过调用函数 start_kernel()(init/main.c)进入内核C程序处理部分。 ? arch/arm/kernel/setup.c 在该文件中setup_arch()函数是完成特定平台初始化功能的。其中 命令行字符串、内存开始地址、内存结束地址

15、是通过这个函数传递 的; ? arch/arm/mm 特定体系架构的内存管理代码。 ? arch/arm/lib 特定体系架构的库代码,如vsprintf等 ? arch/arm/mach-s3c2410 平台特定代码。当你做板极内核移植时,主要的区别就在这里。 ? arch/arm/ mach-s3c2410/ s3c2410.c 平台特定的初始化代码。 ? arch/arm/ mach-s3c2410/ irq.c 包含处理特定平台中断控制的代码。 3、drivers/目录 包括设备驱动代码。你可能需要增加或减少这里的代码。 4、include/asm-arm目录 包括特定体系架构的头文件

16、。 5、init/目录 包含内核初始化代码。 7.4.27.4.2 内核移植步骤 内核移植步骤 1、 在目录arch/arm下为你的目标平台创建目录(如:my_S3C2410) 2、 从和你选用平台相近的平台目录下拷贝代码到上面建立的目录下。 3、 在目录include/asm-arm下为你的目标平台创建目录(如:my_S3C2410) 该目录包括与你选用平台相关的头文件。 4、 修改上面提到的目录里的文件以适合你的平台。 5、 修改目录arch/arm下的Config文件和Makefile文件。 6、 Make defconfig 7、 Make 7.57.5 Linux mips启动分析 Linux mips启动分析

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号