Linux 2.6.21 支持Ipv6的裁剪

来源:互联网 发布:淘宝店店长职责 编辑:程序博客网 时间:2024/05/29 14:19

一、 裁剪中所需要的开发包以及编译器

1. Linux内核: Linux 2.6.21,可从ftp://ftp.kernel.org/中下载;

2. 针对Armlinux2.6.21裁剪补丁,2.6.21-at91.patch.gz,下载地址http://www.pudn.com/downloads121/sourcecode/embed/detail530788.html

3. 交叉编译器:本文采用arm-linux-gcc3.4.1版本,下载地址 http://www.handhelds.org/download/projects/toolchain/

4.  busybox下载,本文采用busybox-1.9.2版本,能正确生成,下载地址http://www.busybox.net


二、 建立交叉编译环境

由于arm-linux-gcc-3.4.1默认的安装路径是/usr/local/,所以直接将arm-linux-gcc-3.4.1.tar.bz2放在根目录下解压。

#cd /

#tar jxvf arm-linux-gcc-3.4.1.tar.bz2

使用arm-linux-gcc -v 检查交叉编译器是否安装成功,正常情况下可以显示出版本信息,如果看不到,在/root/.bash_profile 文件中增加

export PATH=$PATH:/usr/local/arm/3.4.1/bin

然后重起系统。只有用arm-linux-gcc -version命令能够看到交叉编译器的版本信息,安装才算成功。

注:如果不设置PATH=$PATH:/usr/local/arm/3.4.1/bin,也是可以的,只要设置CROSS_COMPILE ?=/usr/local/arm/3.4.1/bin/arm-linux-

三、 内核修改

1. 下载上面提到的内核文件以及补丁,先将内核解压到/usr/src/下,会生成linux-2.6.21目录。

解压命令:tar jxvf *.bz2或者tar zxvf *.gz

2. 进入linux-2.6.21目录下,将补丁2.6.21-at91.patch.gz拷贝到该目录下,然后给linux-2.6.21打上补丁,只有打上补丁,才能针对arm.

打补丁命令为:zcat 2.6.21-at91.patch.gz |patch -p1;

3. 将/arch/arm/mach-at91/configs/at91rn9200ek_defconfig拷贝到linux-2.6.21目录下,重命名为.config,

命令为cp arch/arm/configs/at91rn9200ek_defconfig .config

4. 修改Makefile 

打开内核原代码根目录下的Makefile,找到如下两行:

ARCH ?=$(SUBARCH)

CROSS_COMPILE ?=

修改为:

ARCH ?=arm

CROSS_COMPILE ?=/usr/local/arm/3.4.1/bin/arm-linux-

5. 若板子上的U-boot,不支持zImage

由于我的板子上的U-boot,不支持zImage,另外machine ID不支持AT91RM9200EK.需要作如下修改:

linux-2.6.21/arch/arm/mach-at91/board-ek.c 中的

MACHINE_START(AT91RM9200EK,"Atmel AT91RM9200-EK") 改为

MACHINE_START(AT91RM9200,"Atmel AT91RM9200-EK")

6. AT91RM9200开发:为Linux2.6.20添加Nor Flash MTD驱动

    MTD的驱动程序都集中在drivers/mtd里面。我们需要做的,仅仅是在drivers/mtd/maps下增加自己的分区表,网上有参考的代码。

   配置内核make .config,增加支持ipv6的选项.

  另:增加MTD,和相应的文件系统的支持。

  Devices Drivers --->

            Memory Technology Devices (MTD) --->

                 <*> Memory Technology Device(MTD) support

                 <*> MTD partitioning support

                 <*> Direct char device access to MTD devices

                 <*> Caching block device access to MTD devices

                 RAM/ROM/Flash chip drivers --->

              <*> Detect flash chips by Common Flash Interface(CFI) probe

                  <*> Support for Intel/Sharp flash chips

                 Mapping drivers for chip access --->

                  <*> CFI Flash device mapped on AT91RM9200(该下只能选一个)

    File Systems --->

           Miscellaneous filesystems --->

                这里选择cramfs或者Jffs2的支持,这样文件就可以被保存下来。

7. 编译内核,生成uImage

$ make clean
$ make zImage

若要生成uImage就另外在执行以下两句话

$ /usr/local/arm/3.4.1/bin/arm-linux-objcopy -O binary -S vmlinux linux.bin
$ gzip -v9 linux.bin
$./mkimage -A arm -O linux -T kernel -C gzip -a 0x20008000 -e 0x20008000 -d linux.bin.gz uImage

注:mkimageUboot提供的一个工具,本文采用u-boot-1.1.6,在u-boot-1.1.6目录下有一个tools目录,mkimage就在该目录下


在裁剪中,如果有什么不正确的地方可以QQ353758205





原创粉丝点击