把iptables移植到嵌入式linux内核

chenzijing 2008-06-13 09:40:32
在宿主机Red Hat Linux 9.0上安装iptables-1.3.6是可以用的,但我修改了内核路径和可执行文件路径到ARM文件系统后烧到板子(内核是Linux-2.6.8.1)上,使用iptables命令时出现bash: /sbin/iptables: cannot execute binary file,我想知道为什么在宿主机可以用,为什么到这就不可以用了,请大虾,帮帮忙(google搜的那方法行不通,如下)

Linux下支持netfilter机制的配置工具就是iptables,它也就相当与一个应用程序,可以对netfilter进行配置(包过滤规则,NAT等等)。所以要实现netfilter(iptables)就要从两方面来着手:1)内核支持netfilter;2)用户层的iptables配置命令。
1、编译内核,支持netfilter
在宿主机上进入Linux内核目录,配置所需的内核模块:
cd /usr/src/linux
make menuconfig
选中如下内核选项:
General setup --->
  • Sysctl support (在ROMFS文件系统中/proc/sys/net/ipv4/出现ip_forward)
    Networking options --->
  • Network packet filtering
  • (replaces ipchains)
    IP: Netfilter Configuration --->(全部选择即可)
    这样在内核中就选择支持了netfilter。接下来只需编译并生成内核映像文件并烧写到嵌入式系统即可。如果烧写后重起成功进入Linux,则说明新的支持netfiter的内核已经正常运行。(注意,这里的内核选项只是一些支持netfilter/iptables的选项。这里假设原有内核已支持嵌入式系统的相关硬件,并能在嵌入式平台上运行)。
    2、编译生成iptables命令
    iptables工具包可以免费从网上获得。下载iptables工具包后,进入下载目录,进行编译生成可执行文件,编译方法具体可以参考iptables目录下的INSTALL文件:
    cd /root/iptables
    make KERNEL_DIR = /usr/src/linux(指定内核目录)
    make NO_SHARED_LIBS = 1(静态链接编译生成可执行文件)
    把生成的iptables可执行文件copy到ramdisk再下载到嵌入式系统中就可以运行。
    好了,重新启动板子后,就可以用iptables这个命令了。
    这是网上的方法,在哪需要改的,请大虾帮忙
...全文
576 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
air_snake 2008-06-20
  • 打赏
  • 举报
回复
bash: /sbin/iptables: cannot execute binary file ?
明显告诉你编译器不对
chenzijing 2008-06-16
  • 打赏
  • 举报
回复
谢谢,问题已解决
superdreamer 2008-06-16
  • 打赏
  • 举报
回复
呵呵, 你用X86的GCC 来编译, 在ARM的平台上运行,肯定不行啦, 需要用你的嵌入式的工具链来编译才行的。
chenzijing 2008-06-14
  • 打赏
  • 举报
回复
请达人帮帮忙啊

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧