重新移植了一下内核--记之备忘
2011-04-09 20:38
330 查看
博主按:虽然以前移植过,但是隔得时间太长,当时又没有记录,岁数大了记性不好,这次移植又遇到了一些问题,搞了一天才搞好。以此为鉴,特记之。此文只是备忘,不是详细的移植教程,所以新接触移植的同志们还是参考一下网上的资料,有很多非常详细的。
开发环境:
1. 开发板:杨创utu2440-S-V41
2. 原内核:Linux2.6.24
3. 原文件系统:yaffs2 Busybox1.13
4. 原交叉编译器:编译内核用3.4.1,编译Qtopia用3.3.2
5. 原图形界面:Qtopia PDA Edition Version
6. 移植内核:Linux2.6.31
7. 移植文件系统:yaffs2 Busybox1.15.2
8. 新交叉编译器:统一使用4.1.2来编译内核,Qt和Busybox1.15.2
9. 移植图形界面:qt-everywhere-opensource-src-4.6.2
移植原因: 板子自带的图形界面版本太低,我想使用较新的4.6.2版,但问题是原2.6.24的内核只能使用arm-linux-gcc-3.4.1版本编译,而用这个版本的交叉编译器编译4.6.2的Qt却编译不过去。另外用和系统不同的交叉编译器来编译程序可能会出现各种问题(我的就是在板子上运行时提示找不到文件)。 为了一劳永逸,以后杜绝这些问题。我决定移植新的内核和文件系统,统一在交叉编译器4.1.2下。
移植过程:
一、安装交叉编译器 我的安装目录为/usr/local/arm/4.3.2 我用的操作系统是ubuntu10.04,所以修改了一下/etc/bash.bashrc ,在最后添加一行: PATH=/usr/local/arm/4.3.2/bin:$PATH 重新启动一下终端就可以使用了。
二、 内核的移植
1. 重写板文件 原开发板带的板文件mach-utu2440.c不能直接在Linux2.6.31的内核中使用,改来改去的也比较麻烦,所以干脆重写板文件。以内核中的mach-smdk2440.c为基本模板,主要修改了其中的nand分区,dm9000中断号,s3c2410fb_display结构体,uart的配置等等,都比较简单,也没出问题,不记录。
2. 修改Makefile和mach-types 在进行内核配置之前要先修改上面这两个文件。 其中Makefile中需要指定体系结构和交叉编译器, 在183行, ARCH = arm CROSS_COMPILE = arm-linux- mach-types中需要修改机器码,因为我是基于mach-smdk2440.c修改的板文件,而且修改其中的MACHINE_START(S3C2440, "SMDK2440")这一行为MACHINE_START(LEI2440, "LEI2440"), 所以在mach-types中我添加了一行 LEI2440 ARCH_LEI2440 LEI2440 **** 其中****为机器码,是要和bootloader匹配的,否则不能正确引导内核。 又由于其中增加了ARCH_LEI2440,所以要修改Kconfig和Makefile, 添加相应的配置选项和编译选项。
3. 添加驱动 基本上就是添加驱动文件, 配置Kconfig和Makefile
4. 配置内核 很简单,没有出错,不记录。只是注意要选择ARM EABI选项。另外修改一下Boot Options中的Default kernel command string为: noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200
5. make uImage s 如果使用vivi引导,需要make zImage
三、文件系统移植
1. 建立一个文件夹,在其中建立文件系统相对应的文件夹,基本上包括 bin, etc, dev, home, lib, mnt, opt, proc, root, sbin, sys, tmp, usr, var
2. 解压busybox1.15.2,修改Makefile 第164行 CROSS_COMPILE = arm-linux- 第190行 ARCH = arm
3. make menuconfig进行配置。基本上使用默认设置就可以了
4. make
5. make install
6. 把安装文件夹(默认的配置情况下是名为_install文件夹)中的bin sbin usr linuxrc
开发环境:
1. 开发板:杨创utu2440-S-V41
2. 原内核:Linux2.6.24
3. 原文件系统:yaffs2 Busybox1.13
4. 原交叉编译器:编译内核用3.4.1,编译Qtopia用3.3.2
5. 原图形界面:Qtopia PDA Edition Version
6. 移植内核:Linux2.6.31
7. 移植文件系统:yaffs2 Busybox1.15.2
8. 新交叉编译器:统一使用4.1.2来编译内核,Qt和Busybox1.15.2
9. 移植图形界面:qt-everywhere-opensource-src-4.6.2
移植原因: 板子自带的图形界面版本太低,我想使用较新的4.6.2版,但问题是原2.6.24的内核只能使用arm-linux-gcc-3.4.1版本编译,而用这个版本的交叉编译器编译4.6.2的Qt却编译不过去。另外用和系统不同的交叉编译器来编译程序可能会出现各种问题(我的就是在板子上运行时提示找不到文件)。 为了一劳永逸,以后杜绝这些问题。我决定移植新的内核和文件系统,统一在交叉编译器4.1.2下。
移植过程:
一、安装交叉编译器 我的安装目录为/usr/local/arm/4.3.2 我用的操作系统是ubuntu10.04,所以修改了一下/etc/bash.bashrc ,在最后添加一行: PATH=/usr/local/arm/4.3.2/bin:$PATH 重新启动一下终端就可以使用了。
二、 内核的移植
1. 重写板文件 原开发板带的板文件mach-utu2440.c不能直接在Linux2.6.31的内核中使用,改来改去的也比较麻烦,所以干脆重写板文件。以内核中的mach-smdk2440.c为基本模板,主要修改了其中的nand分区,dm9000中断号,s3c2410fb_display结构体,uart的配置等等,都比较简单,也没出问题,不记录。
2. 修改Makefile和mach-types 在进行内核配置之前要先修改上面这两个文件。 其中Makefile中需要指定体系结构和交叉编译器, 在183行, ARCH = arm CROSS_COMPILE = arm-linux- mach-types中需要修改机器码,因为我是基于mach-smdk2440.c修改的板文件,而且修改其中的MACHINE_START(S3C2440, "SMDK2440")这一行为MACHINE_START(LEI2440, "LEI2440"), 所以在mach-types中我添加了一行 LEI2440 ARCH_LEI2440 LEI2440 **** 其中****为机器码,是要和bootloader匹配的,否则不能正确引导内核。 又由于其中增加了ARCH_LEI2440,所以要修改Kconfig和Makefile, 添加相应的配置选项和编译选项。
3. 添加驱动 基本上就是添加驱动文件, 配置Kconfig和Makefile
4. 配置内核 很简单,没有出错,不记录。只是注意要选择ARM EABI选项。另外修改一下Boot Options中的Default kernel command string为: noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200
5. make uImage s 如果使用vivi引导,需要make zImage
三、文件系统移植
1. 建立一个文件夹,在其中建立文件系统相对应的文件夹,基本上包括 bin, etc, dev, home, lib, mnt, opt, proc, root, sbin, sys, tmp, usr, var
2. 解压busybox1.15.2,修改Makefile 第164行 CROSS_COMPILE = arm-linux- 第190行 ARCH = arm
3. make menuconfig进行配置。基本上使用默认设置就可以了
4. make
5. make install
6. 把安装文件夹(默认的配置情况下是名为_install文件夹)中的bin sbin usr linuxrc
相关文章推荐
- 重新移植了一下内核--记之备忘
- S3C2440重新编译内核及移植QT4.7.3
- 升级内核版本后,需要重新编译一下网卡驱动
- 1.移植3.4内核-分析内核启动过程,重新分区,烧写jffs2文件系统
- vmware下重新编译内核必选选项(备忘)
- FL2440移植linux2.6.33内核(备忘)
- FL2440移植linux2.6.33内核(备忘)(之二)
- FL2440移植linux2.6.33内核(备忘)(之三)
- FL2440移植linux2.6.33内核(备忘)(之四)
- S3C2440重新编译内核及移植QT4.7.3
- 重新为FS2410移植内核过程中遇到的初始化console节点失败问题
- 2.2linux内核移植简介
- 移植gtk,这个配置有点早,可以了解一下他的工作流程
- Linux-2.6内核移植过程中常见问题及解决方法[转]
- fs2410 linux-2.6.35内核移植中的RTC问题--drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
- 【引用】Linux-2.6.32.2内核在mini2440上的移植(一)---构建自主开发环境
- 【引用】Linux-2.6.32.2内核在mini2440上的移植(四)---根文件系统制作(1)
- FL2440 Linux-3.0内核最小系统移植
- 移植内核学习笔记4-----内核之裁剪及ECC简介及制作补丁
- 为AM335x移植Linux内核主线代码——了解dts