Linux系统中添加IPv6模块(TQ2440开发板)
2013-12-18 13:01
323 查看
TQ2440开发板自带的内核镜像(Linux-2.6.30.4)并没有支持IPv6协议栈,对网卡添加IPv6地址是不被允许的,出现“ifconfig: socket: Address family not supported by protocol”这个错误信息:
![](http://img.blog.csdn.net/20131218124339015)
图1 TQ2440自带内核不支持IPv6协议栈
可以2种方法来使内核支持:
1)重新配置内核,编译镜像,使之支持IPv6
2)编译IPv6协议栈模块,利用insmod方式加载模块
依次在内核配置单选择Networking support -> Networking options -> The IPv6 protocol
![](http://img.blog.csdn.net/20131218123644062)
图2 make menuconfig配置单:Networking support
![](http://img.blog.csdn.net/20131218123658609)
图3 make menuconfig配置单:Networking options
![](http://img.blog.csdn.net/20131218123703984)
图4 make menuconfig配置单:The IPv6 protocol
由于需要将IPv6协议栈编译进内核,所以选择“*”的方式。
这样编译好的内核镜像zImage.bin就可以支持IPv6,将其烧进TQ2440开发板中即可。
利用这种方法时,在之前配置单选择时候,将“*”替换为“M”,表示以模块方式编译。
![](http://img.blog.csdn.net/20131218123842015)
图5-1 以模块方式配置The IPv6 Protocol
![](http://img.blog.csdn.net/20131218131150671?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhlbmd4aWFuZ2hkdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
图5-2 The IPv6 Protocol的配置帮助信息
保存配置单后,在Linux源码目录下输入“make modules”命令,便可以对IPv6模块进行编译。编译出的模块为“ipv6.ko”文件,将其导入至TQ2440文件系统下,利用"insmod ipv6.ko"便可以进行加载模块。此时内核支持IPv6。
(宿主机上进行模块编译,可以发现最终编译出各种ko文件,包括ipv6.ko)
![](http://img.blog.csdn.net/20131218124212593)
图6 宿主机上进行make modules编译模块命令
在编译好模块之后,可在宿主机Linux源码目录下的net/ipv6目录中发现“ipv6.ko”文件,将其复制到TQ2440目标开发板中,并进行加载:
![](http://img.blog.csdn.net/20131218131012718?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhlbmd4aWFuZ2hkdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
图7 TQ2440开发板中加载ipv6.ko文件
此时,再进行ipv6的配置,即可成功:
![](http://img.blog.csdn.net/20131218125525234?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhlbmd4aWFuZ2hkdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
图8 TQ2440开发板进行IPv6配置
图1 TQ2440自带内核不支持IPv6协议栈
可以2种方法来使内核支持:
1)重新配置内核,编译镜像,使之支持IPv6
2)编译IPv6协议栈模块,利用insmod方式加载模块
Method One
配置内核,并利用make zImage命令编译镜像,这样内核镜像就可以支持IPv6协议栈:依次在内核配置单选择Networking support -> Networking options -> The IPv6 protocol
图2 make menuconfig配置单:Networking support
图3 make menuconfig配置单:Networking options
图4 make menuconfig配置单:The IPv6 protocol
由于需要将IPv6协议栈编译进内核,所以选择“*”的方式。
这样编译好的内核镜像zImage.bin就可以支持IPv6,将其烧进TQ2440开发板中即可。
Method Two
在内核源码下配置为模块方式,编译模块make modules(前提是要用make zImage编译过内核源码)利用这种方法时,在之前配置单选择时候,将“*”替换为“M”,表示以模块方式编译。
图5-1 以模块方式配置The IPv6 Protocol
图5-2 The IPv6 Protocol的配置帮助信息
保存配置单后,在Linux源码目录下输入“make modules”命令,便可以对IPv6模块进行编译。编译出的模块为“ipv6.ko”文件,将其导入至TQ2440文件系统下,利用"insmod ipv6.ko"便可以进行加载模块。此时内核支持IPv6。
(宿主机上进行模块编译,可以发现最终编译出各种ko文件,包括ipv6.ko)
图6 宿主机上进行make modules编译模块命令
在编译好模块之后,可在宿主机Linux源码目录下的net/ipv6目录中发现“ipv6.ko”文件,将其复制到TQ2440目标开发板中,并进行加载:
图7 TQ2440开发板中加载ipv6.ko文件
此时,再进行ipv6的配置,即可成功:
图8 TQ2440开发板进行IPv6配置
相关文章推荐
- TQ2440驱动-hello world 模块
- 用C#控制TQ2440开发板上的LED小灯(C# GPIO学习笔记)
- TQ210开发板通过NRF24L01模块和51单片机通讯
- TQ2440开发板学习纪实(0.0)--- GNU ARM交叉汇编环境的搭建与测试
- TQ2440开发板学习纪实(8)--- 从NAND Flash读取数据,把代码搬运到SDRAM运行
- 用C#控制TQ2440开发板上的LED小灯(C# GPIO学习笔记)
- TQ2440,学习笔记之开发板介绍
- 在OK6410 android开发板上添加led驱动模块,并通过NDK测试驱动
- TQ2440开发板学习纪实(6)--- 启用IRQ中断,告别低效的轮询!
- windows7 下 TQ2440开发板 + OpenOCD + OpenJTAG + Eclipse + arm-elf-gdb/arm-none-eabi-gdb调试窗口图例
- TQ2440开发板学习纪实(10)--- 实现多任务处理,最简单OS模型
- TQ2440开发板交叉编译工具安装之后的环境变量设置
- TQ2440开发板学习纪实(7)--- 基于中断的UART串口接收
- TQ2440开发板学习纪实(9)--- 利用Undefined异常模拟BLX指令
- Linux下ipv6配置系列二:如何为Nginx添加ipv6模块
- TQ2440驱动-hello world 模块
- tq2440开发板基本配置
- TQ2440驱动-hello world 模块
- TQ2440开发板的流水灯程序-IDE为KEIL ARM !
- TQ2440开发板学习纪实(2)--- 设置堆栈并调用C函数