Linux 2.6.21 支持Ipv6的裁剪
来源:互联网 发布:淘宝店店长职责 编辑:程序博客网 时间:2024/05/29 14:19
一、 裁剪中所需要的开发包以及编译器
1. Linux内核: Linux 2.6.21,可从ftp://ftp.kernel.org/中下载;
2. 针对Arm的linux2.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
注:mkimage是Uboot提供的一个工具,本文采用u-boot-1.1.6,在u-boot-1.1.6目录下有一个tools目录,mkimage就在该目录下
在裁剪中,如果有什么不正确的地方可以QQ353758205
- Linux 2.6.21 支持Ipv6的裁剪
- Unity ipv6的支持
- ipv6的兼容性支持
- 日本开发支持 IPv6 的 Linux 一张光盘即可运行
- iOS 对ipv6 的支持
- iOS对IPV6的支持
- 关闭linux的ipv6
- linux的ipv6解决方案
- IPv6介绍及程序支持IPv6的障碍
- Linux的裁剪
- Socket Programming下IPv6的支持
- 支持IPv6的即时通信与文件传输
- Proftp的配置和安装 支持ipv6
- 使安卓手机支持ipv6的终极解决方法
- Delphi XE10支持IOS IPV6的处理
- C++创建支持IPv4/IPv6的Socket
- iOS App对IPv6的支持
- 测试OpenStack 对IPv6的支持
- 修改错误的rc.local文件
- 访问iis元数据库失败
- A. Ball Game
- C++面向对象编程实例——实现学生信息的添加与查询
- C#操作XML配置文件
- Linux 2.6.21 支持Ipv6的裁剪
- GCC编译过程分解
- CF:94A. Restoring Password
- Object-C 协议protocol
- Oracle 查询表字段属性的方法
- iOS网络编程-解决iCloud文档存储过程中文档冲突问题
- 界面开发概述
- (转)理解collate Chinese_PRC_CI_AS
- Java编码转换工具类