如何移植iptables1.4.9到Tiny6410_Linux2.6.38内核


分类: 〖林纳克斯〗 1663人阅读 评论(0) 收藏 举报

    版权声明:对于本博客所有原创文章,允许个人、教育和非商业目的使用,但务必保证文章的完整性且不作任何修改地以超链接形式注明原始作者、出处及本声明。

    博客地址http://blog.youkuaiyun.com/shuxiao9058

    原始作者:季亚


一、 建立交叉编译环境
在Linux平台下,要为开发板(Tiny6410等)开发程序,编译内核等操作时,均需要交叉编译工具链,我们使用的是arm-linux-gcc-4.5.1,它默认采用arm-v6指令集,支持硬浮点运算,下面是安装它的详细步骤:

Step1: 下载arm-linux-gcc-4.5.1,并将其拷贝至Linux下任意目录位置(如/tmp/linux),打开终端切换到该位置,执行解压命令(注意:C后面有个空格,并且C是大写的,它是英文单词“change”的第一个字母,在此是改变目录的意思):

arm-linux-gcc-4.5.1下载地址:http://115.com/file/e6au07fx#

执行如下命令:

  1. [root@localhost ~]# cd /tmp/linux/  
  2. [root@localhost linux]# ls  
  3. arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz  mktools-20110720.tar.gz  
  4. arm-qte-4.7.0-20101105.tar.gz            rootfs_qtopia_qt4-20111018.tgz  
  5. arm-qt-extended-4.4.3-20101105.tgz       rootfs_qtopia_qt4-s-20111018.tgz  
  6. arm-qtopia-20101105.tar.gz               u-boot-mini6410-20111018.tar.gz  
  7. busybox-1.17.2-20101120.tgz              x86-qte-4.6.1-20100201.tar.gz  
  8. examples-mini6410-20110104.tgz           x86-qt-extended-4.4.3-20101003.tgz  
  9. linux-2.6.28.6-20101007.tar.gz           x86-qtopia-20100420.tar.gz  
  10. linux-2.6.38-20110718.tar.gz             说明.txt  
  11. logomaker.tgz  
  12. [root@localhost linux]# tar xzvf arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz -C /  

执行以上命令,将把arm-linux-gcc安装到/opt/FriendlyARM/toolschain/4.5.1目录下。

Step2:把编译器路径加入系统环境变量,可以运行如下命令:

  1. [root@localhost linux]# echo "export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin" >> ~/.bashrc  
注意:这里我们使用的是root用户修改的,因此只对root用户生效!如果其他用户也要使用arm-linux-gcc,在使用其他用户登录终端后请重新使用本命令。

也可以运行如下命令,修改~/.bashrc这个文件:

  1. [root@localhost /]# vi ~/.bashrc  
  2.   
  3. # .bashrc  
  4.   
  5. # User specific aliases and functions  
  6.   
  7. alias rm='rm -i'  
  8. alias cp='cp -i'  
  9. alias mv='mv -i'  
  10.   
  11. # Source global definitions  
  12. if [ -f /etc/bashrc ]; then  
  13.         . /etc/bashrc  
  14. fi  
  15. export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin  

修改完毕后记得要保存。


测试:重新登录系统(不必重启机器,开始->logout 或者重新打开终端即可),使以上设置生效,在命令行输入arm-linux-gcc -v,会出现如下信息,这说明交叉编译环境已经成功安装。 

  1. [root@localhost /]# arm-linux-gcc -v  
  2. Using built-in specs.  
  3. COLLECT_GCC=arm-linux-gcc  
  4. COLLECT_LTO_WRAPPER=/opt/FriendlyARM/toolschain/4.5.1/libexec/gcc/arm-none-linux-gnueabi/4.5.1/lto-wrapper  
  5. Target: arm-none-linux-gnueabi  
  6. Configured with: /work/toolchain/build/src/gcc-4.5.1/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-none-linux-gnueabi --prefix=/opt/FriendlyARM/toolschain/4.5.1 --with-sysroot=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root --enable-languages=c,c++ --disable-multilib --with-cpu=arm1176jzf-s --with-tune=arm1176jzf-s --with-fpu=vfp --with-float=softfp --with-pkgversion=ctng-1.8.1-FA --with-bugurl=http://www.arm9.net/ --disable-sjlj-exceptions --enable-__cxa_atexit --disable-libmudflap --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-gmp=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-mpfr=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-ppl=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-cloog=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-mpc=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-libelf=/work/toolchain/build/arm-none-linux-gnueabi/build/static --enable-threads=posix --with-local-prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root --disable-nls --enable-symvers=gnu --enable-c99 --enable-long-long  
  7. Thread model: posix  
  8. gcc version 4.5.1 (ctng-1.8.1-FA)   
  9. [root@localhost /]#   

二、 重新配置编译内核,使其支持netfilter

Netfilter是内核态提供的包过滤框架,其中包含了各种各样的过滤表,默认的内核配置一般不包含这个框架,所以我们要先配置内核选项让其支持netfilte才行。

首先我们需要把友善官方提供的Linux内核源码解压到Linux下指定目录(/opt/FriendlyARM/mini6410/linux/),然后切换到该目录下,会发现多了一个linux-2.6.38文件夹:

  1. [root@localhost /]# cd /opt/FriendlyARM/mini6410/linux/  
  2. [root@localhost linux]# ls  
  3. arm-qte-4.7.0          busybox-1.17.2  rootfs_qtopia_qt4  x86-qt-extended-4.4.3  
  4. arm-qt-extended-4.4.3  examples        u-boot-mini6410    x86-qtopia  
  5. arm-qtopia             linux-2.6.38    x86-qte-4.6.1  
  6. [root@localhost linux]#   
切换到linux-2.6.38文件夹下,首先我们使用make distclean命令清除临时文件、中间文件和配置文件!然后查看里面的文件,会发现有很多配置文件,这些都是友善预先为我们做好的配置文件,方便了我们使用,在此我们将板子自带的配置文件改名为.config,执行cp config_mini6410_n43 .config,接下来就需要进入图形选择相应的选项了。
  1. [root@localhost linux]# cd linux-2.6.38/  
  2. [root@localhost linux-2.6.38]# make distclean  
  3.   CLEAN   .  
  4.   CLEAN   arch/arm/kernel  
  5.   CLEAN   drivers/tty/vt  
  6.   CLEAN   drivers/video/logo  
  7.   CLEAN   firmware  
  8.   CLEAN   kernel  
  9.   CLEAN   lib  
  10.   CLEAN   usr  
  11.   CLEAN   arch/arm/boot/compressed  
  12.   CLEAN   arch/arm/boot  
  13.   CLEAN   .tmp_versions  
  14.   CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map  
  15.   CLEAN   scripts/basic  
  16.   CLEAN   scripts/kconfig  
  17.   CLEAN   scripts/mod  
  18.   CLEAN   scripts  
  19.   CLEAN   include/config include/generated  
  20.   CLEAN   .config .config.old .version include/linux/version.h Module.symvers  
  21. [root@localhost linux-2.6.38]# ls  
  22. arch                         config_mini6410_x35  lib  
  23. block                        COPYING              MAINTAINERS  
  24. config_mini6410_a70          CREDITS              Makefile  
  25. config_mini6410_ezvga        crypto               mm  
  26. config_mini6410_g10          Documentation        net  
  27. config_mini6410_l80          drivers              README  
  28. config_mini6410_n43          firmware             REPORTING-BUGS  
  29. config_mini6410_s70          fs                   samples  
  30. config_mini6410_t35          include              scripts  
  31. config_mini6410_vga1024x768  init                 security  
  32. config_mini6410_vga640x480   ipc                  sound  
  33. config_mini6410_vga800x600   Kbuild               tools  
  34. config_mini6410_w35          Kconfig              usr  
  35. config_mini6410_w50          kernel               virt  
  36. [root@localhost linux-2.6.38]# cp config_mini6410_n43 .config  
  37. [root@localhost linux-2.6.38]#   
完成以上操作后,在Linux代码树下执行make menuconfig命令,进入基于文本模式的菜单型的Linux内核配置。

  1. [root@localhost linux-2.6.38]# make menuconfig  
  2. scripts/kconfig/mconf Kconfig  
  3. warning: (PLAT_S3C64XX) selects SAMSUNG_WAKEMASK which has unmet direct dependencies (PLAT_SAMSUNG && PM)  
  4.   
  5.  .config - Linux/arm 2.6.38 Kernel Configuration  
  6.  ------------------------------------------------------------------------------  
  7.   +----------------- Linux/arm 2.6.38 Kernel Configuration -----------------+  
  8.   |  Arrow keys navigate the menu.  <Enter> selects submenus --->.          |  
  9.   |  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, |  
  10.   |  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help, </> |  
  11.   |  for Search.  Legend: [*] built-in  [ ] excluded  <M> module  < >       |  
  12.   | +---------------------------------------------------------------------+ |  
  13.   | |        General setup  --->                                          | |  
  14.   | |    [*] Enable loadable module support  --->                         | |  
  15.   | |    -*- Enable the block layer  --->                                 | |  
  16.   | |        System Type  --->                                            | |  
  17.   | |        Bus support  --->                                            | |  
  18.   | |        Kernel Features  --->                                        | |  
  19.   | |        Boot options  --->                                           | |  
  20.   | |        CPU Power Management  --->                                   | |  
  21.   | |        Floating point emulation  --->                               | |  
  22.   | |        Userspace binary formats  --->                               | |  
  23.   | +----v(+)-------------------------------------------------------------+ |  
  24.   +-------------------------------------------------------------------------+  
  25.   |                    <Select>    < Exit >    < Help >                     |  
  26.   +-------------------------------------------------------------------------+  
在配置过程中注意前面选项为*的表示Yes(将该功能模块编译进内核),为N的表示No(不将该功能模块编译进内核),为M的表示编译成模块的方式(将该功能编译成模块的方式,可以在需要时动态插入到内核中的模块),但不会编译到内核里面,因此我们需要将 Netfilter框架全部选择*(YES)。在选择过程中使用空格键切换选择,回车键进入下一级菜单(右侧有 --> 的选项),上下左右键的作用我就不废话了!


按照如下操作进行配置:

Step1:在上面的菜单项中,按向下箭头键向下翻!选择“[*] Networking support  --->”项,回车进入子菜单项:

  1. +-------------------------- Networking support ---------------------------+  
  2. |  Arrow keys navigate the menu.  <Enter> selects submenus --->.          |  
  3. |  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, |  
  4. |  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help, </> |  
  5. |  for Search.  Legend: [*] built-in  [ ] excluded  <M> module  < >       |  
  6. | +---------------------------------------------------------------------+ |  
  7. | |    --- Networking support                                           | |  
  8. | |          Networking options  --->                                   | |  
  9. | |    [ ]   Amateur Radio support  --->                                | |  
  10. | |    < >   CAN bus subsystem support  --->                            | |  
  11. | |    < >   IrDA (infrared) subsystem support  --->                    | |  
  12. | |    < >   Bluetooth subsystem support  --->                          | |  
  13. | |    < >   RxRPC session sockets                                      | |  
  14. | |    [*]   Wireless  --->                                             | |  
  15. | |    < >   WiMAX Wireless Broadband support  --->                     | |  
  16. | |    < >   RF switch subsystem support  --->                          | |  
  17. | +----v(+)-------------------------------------------------------------+ |  
  18. +-------------------------------------------------------------------------+  
  19. |                    <Select>    < Exit >    < Help >                     |  
  20. +-------------------------------------------------------------------------+  

Step2:在上面的菜单项中,按向下箭头键向下翻!选择“Networking options  ---> ”项,回车进入子菜单项:

  1. +-------------------------- Networking options ---------------------------+  
  2. |  Arrow keys navigate the menu.  <Enter> selects submenus --->.          |  
  3. |  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, |  
  4. |  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help, </> |  
  5. |  for Search.  Legend: [*] built-in  [ ] excluded  <M> module  < >       |  
  6. | +---------------------------------------------------------------------+ |  
  7. | |    <*> Packet socket                                                | |  
  8. | |    <*> Unix domain sockets                                          | |  
  9. | |    < > PF_KEY sockets                                               | |  
  10. | |    [*] TCP/IP networking                                            | |  
  11. | |    [ ]   IP: multicasting                                           | |  
  12. | |    [ ]   IP: advanced router                                        | |  
  13. | |    [*]   IP: kernel level autoconfiguration                         | |  
  14. | |    [*]     IP: DHCP support                                         | |  
  15. | |    [*]     IP: BOOTP support                                        | |  
  16. | |    [*]     IP: RARP support                                         | |  
  17. | +----v(+)-------------------------------------------------------------+ |  
  18. +-------------------------------------------------------------------------+  
  19. |                    <Select>    < Exit >    < Help >                     |  
  20. +-------------------------------------------------------------------------+  
Step2:在上面的菜单项中,按向下箭头键向下翻!选择“[ ] Network packet filtering framework (Netfilter)  --->”项, 按空格键使其前面的选项变为*(YES)后回车进入子菜单

  1. +-------------------------- Networking options ---------------------------+  
  2. |  Arrow keys navigate the menu.  <Enter> selects submenus --->.          |  
  3. |  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, |  
  4. |  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help, </> |  
  5. |  for Search.  Legend: [*] built-in  [ ] excluded  <M> module  < >       |  
  6. | +----^(-)-------------------------------------------------------------+ |  
  7. | |    < >   INET: socket monitoring interface                          | |  
  8. | |    [ ]   TCP: advanced congestion control  --->                     | |  
  9. | |    [ ]   TCP: MD5 Signature Option support (RFC2385) (EXPERIMENTAL) | |  
  10. | |    < >   The IPv6 protocol  --->                                    | |  
  11. | |    [ ] Security Marking                                             | |  
  12. | |    [ ] Timestamping in PHY devices                                  | |  
  13. | |    [ ] Network packet filtering framework (Netfilter)  --->         | |  
  14. | |    < > The DCCP Protocol (EXPERIMENTAL)  --->                       | |  
  15. | |    < > The SCTP Protocol (EXPERIMENTAL)  --->                       | |  
  16. | |    < > The RDS Protocol (EXPERIMENTAL)                              | |  
  17. | +----v(+)-------------------------------------------------------------+ |  
  18. +-------------------------------------------------------------------------+  
  19. |                    <Select>    < Exit >    < Help >                     |  
  20. +-------------------------------------------------------------------------+  

Netfilter配置菜单页

  1. +------------ Network packet filtering framework (Netfilter) -------------+  
  2. |  Arrow keys navigate the menu.  <Enter> selects submenus --->.          |  
  3. |  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, |  
  4. |  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help, </> |  
  5. |  for Search.  Legend: [*] built-in  [ ] excluded  <M> module  < >       |  
  6. | +---------------------------------------------------------------------+ |  
  7. | |    --- Network packet filtering framework (Netfilter)               | |  
  8. | |    [ ]   Network packet filtering debugging (NEW)                   | |  
  9. | |    [*]   Advanced netfilter configuration (NEW)                     | |  
  10. | |          Core Netfilter Configuration  --->                         | |  
  11. | |    < >   IP virtual server support (NEW)  --->                      | |  
  12. | |          IP: Netfilter Configuration  --->                          | |  
  13. | |                                                                     | |  
  14. | |                                                                     | |  
  15. | |                                                                     | |  
  16. | |                                                                     | |  
  17. | +---------------------------------------------------------------------+ |  
  18. +-------------------------------------------------------------------------+  
  19. |                    <Select>    < Exit >    < Help >                     |  
  20. +-------------------------------------------------------------------------+  
Step3:在上面的菜单项中,为了以后使用方便,下面的这几级菜单我们还是都选择*,直到进入最后一级子菜单!内容与前面大同小异,这里我就不再赘述了。

Step4:使用Tab键选择Exit,直到要求保存配置,选择Yes选项确认保存为止!

  1. +----------------------------------------------------------+         
  2. |  Do you wish to save your new configuration? <ESC><ESC>  |         
  3. |  to continue.                                            |         
  4. +----------------------------------------------------------+         
  5. |                   < Yes >      <  No  >                  |         
  6. +----------------------------------------------------------+         

注意事项:这里的所有选项一定选为built-in [*],而不能选为Module [M],如果选为Module,重新烧制的系统内核里用modprobe ip_tables 命令将不能找到iptables模块。(为了有备无患,我们这里把Netfilter所有的选项都选上)。上一步还有一点要注意的是IP: Netfilter configuration中的FULL NAT选项 一定要选中,否则将不能使用 iptables -t nat命令。

至此,完成内核相关配置工作!

使用如下操作命令开始编译内核:

  1. [root@localhost linux-2.6.38]# make zImage  

编译完成后,生成的新内核"zImage"保存在/opt/FriendlyARM/linux/linux2.6.38/arch/arm/boot文件夹下。

三、 交叉编译iptables

Iptables是用户态提供的更改过滤规则的便捷工具,通过使用这个工具,可以方便的改变内核下netfilter的默认规则,也可以根据自己的需求添加自定的规则。

1. 到netfilter官方网站(http://www.netfilter.org/)下载iptables最新源码并解压,编译方法具体可以参考iptables目录下的INSTALL文件;

2. 首先一定要确保当前终端下能识别出arm-linux-gcc命令,接着在/home目录下创建iptables目录,在终端下切换到iptables代码树。运行./configure --prefix=/home/iptables --host=arm-linux配置以生成Makefile文件。

  1. [root@localhost iptables-1.4.9]# ls  
  2. aclocal.m4    INCOMPATIBILITIES       iptables-apply.8       libiptc.pc.in  
  3. autogen.sh    INSTALL                 iptables.c             ltmain.sh  
  4. COMMIT_NOTES  install-sh              iptables-multi.c       m4  
  5. compile       ip6tables.8.in          iptables-multi.h       Makefile.am  
  6. config.guess  ip6tables.c             iptables-restore.8     Makefile.in  
  7. config.h.in   ip6tables-multi.c       iptables-restore.c     missing  
  8. config.log    ip6tables-multi.h       iptables-save.8        release.sh  
  9. config.sub    ip6tables-restore.8     iptables-save.c        utils  
  10. configure     ip6tables-restore.c     iptables-standalone.c  xshared.c  
  11. configure.ac  ip6tables-save.8        iptables-xml.8         xshared.h  
  12. COPYING       ip6tables-save.c        iptables-xml.c         xtables.c  
  13. depcomp       ip6tables-standalone.c  iptables.xslt          xtables.pc.in  
  14. extensions    iptables.8.in           libipq  
  15. include       iptables-apply          libiptc  
  16. [root@localhost iptables-1.4.9]# ./configure --prefix=/home/iptables --host=arm-linux  
说明:选项—prefix=/home/iptables是指定安装路径,为了避免出错,安装路径选择/home/iptables的原因还有就是为了移植到板子上能够找到相应目录下的动态库,换句话说就是保证两边存放动态库文件的目录一定要一致。--host=arm-linux是指定iptables的运行环境,也就是通知configure在生快成Makefile的时候,编译器选用arm-linux-gcc进行交叉编译。

3. 进行编译安装

  1. [root@localhost iptables-1.4.9]# make KERNEL_DIR=/opt/FriendlyARM/mini6410/linux/linux-2.6.38  
  2. [root@localhost iptables-1.4.9]# make NO.SHARED_LIBS=1  
  3. [root@localhost iptables-1.4.9]# make  
  4. [root@localhost iptables-1.4.9]# make install  
4. 目录结构分析如下(列出了开发板需要的最基本文件)
lib: libiptc.so.0.0.0,libxtables.so.1.0.0,指向这两个文件的链接libiptc.so.0, libxtables.so.1。
sbin: ip6tables-multi,ip6tables,ip6tables-restore,ip6tables-save,iptables-multi,iptables,iptables-restore,iptables-save。
xtables: libipt_DNAT.so,libipt_SNAT.so,libxt_standard.so(创建链接或者改名为libipt_standard.so),libxt_standard.so(同上libipt_standard.so),libxt_tcp.so(同上libipt_tcp.so),libxt_state(同上libipt_state),…,其他动态库最好也下载到开发板中,以防需要某个匹配选项时提示找不到动态库文件,当出现找不到某个库文件*ipt_*.so的时候,先看看是否存在一个与它相似仅只有中间换成xt的库文件,如果存在将其改成ipt即可,因为其本质是一样的,只是名称不同而已。

5. 将刚刚编译好的iptables打包

切换至/home目录,使用如下操作命令进行压缩:

  1. [root@localhost home]# tar cvf iptables.tar iptables/  

四、下载新系统内核和交叉编译好的iptables到开发板

1. 这一步需要在windows下操作,将开发板的串口,USB接口,电源都连接好后,首先安装tools\usb下载驱动\FriendlyARM USB Download Driver Setup_20090421.exe,接着将S2开关拨到SD-BOOT上,打开S1开关,windows提示发现新硬件,按照提示将驱动安装完,这时在设备管理器里的通用串行总线里就能看到FriendlyARM USB,说明驱动安装正确,再打开windows平台工具下的dnw,设置好串口等一些设置后就可以点USB,串口里的连接了,看到com:OK,USB:OK就说明连接正确,如果不能看到BIOS启动界面再次重启,进入BIOS界面后选择k将bzImage烧到板子上即可。

注意:这里要先把FriendlyARM.ini配置文件中的“CheckOneButton=No”一句中的“No”改为“Yes”,dnw的详细说明请参考友善提供的技术手册。

2. 这一步可以通过SD卡传输,也可以通过ftp的方式传输(需事先配置IP等信息)。在此我用ftp方式传输,操作命令如下所示。

  1. [root@localhost home]# ftp 192.168.1.7  
  2. Connected to 192.168.1.7 (192.168.1.7).  
  3. 220 FriendlyARM FTP server (Version 6.4/OpenBSD/Linux-ftpd-0.17) ready.  
  4. Name (192.168.1.7:root): plg  
  5. 331 Password required for plg.  
  6. Password:  
  7. 230 User plg logged in.  
  8. Remote system type is UNIX.  
  9. Using binary mode to transfer files.  
  10. ftp> put iptables.tar   
  11. local: iptables.tar remote: iptables.tar  
  12. 227 Entering Passive Mode (192,168,1,7,186,163)  
  13. 150 Opening BINARY mode data connection for 'iptables.tar'.  
  14. 226 Transfer complete.  
  15. 2590720 bytes sent in 0.968 secs (2675.37 Kbytes/sec)  
  16. ftp> by  
  17. 221 Goodbye.  
  18. [root@localhost home]#   

然后,使用超级终端(Windows)切换到/home/plg目录下,进行如下操作:

  1. [root@FriendlyARM /etc]# cd /home/plg  
  2. [root@FriendlyARM plg]# ls  
  3. iptables.tar  
  4. [root@FriendlyARM plg]# tar xzvf iptables.tar  
进入iptables目录,将上面列出的三个目录下的文件(包括要创建的链接文件)分别复制到/lib、/sbin、/home/plg/iptables/libexec/xtables(后三级的目录需要自己创建), 必要时把源代码extensions目录下所有的so文件copy到/home/plg/iptables/libexec/xtables中去,这是为了最大限度的使用工具的命令。

命令操作如下所示:

  1. [root@FriendlyARM /etc]# cd /home/plg  
  2. [root@FriendlyARM plg]# ls  
  3. iptables      iptables.tar  
  4. [root@FriendlyARM plg]# cd iptables/  
  5. [root@FriendlyARM iptables]# ls  
  6. bin      include  lib      libexec  sbin     share  
  7. [root@FriendlyARM iptables]# cd lib  
  8. [root@FriendlyARM lib]# cp * /lib -r  
  9. [root@FriendlyARM lib]# cd ../sbin  
  10. [root@FriendlyARM sbin]# cp * /sbin -r  
  11. [root@FriendlyARM sbin]# iptables -v  
  12. iptables v1.4.9: no command specified  
  13. Try `iptables -h' or 'iptables --help' for more information.  
  14. [root@FriendlyARM sbin]#  
根据以上命令提示,可以判断iptables已经能够工作了,至此完成iptables到Tiny6410的移植。

备注: 
a. 当使用目标操作(如-j ACCEPT时)提示找不到libipt_standard.so库文件,这时可以将../libexec/xtables/目录下的libxt_standard.so重命名为libipt_standard.so,这两个库文件从本质上讲是一样的;         
b. 运行iptables命令 发现错误iptables: error while loading shared libraries: libiptc.so.0: cannot open shared object file: No such file or directory 原因是缺少libiptc.so.0动态库文件,从lib目录中可以找到,并找到libxtables.so.1将这两个动态库文件下载到板子的/lib下;
c. 这些动态库是在用 iptables的一些选项时调用的。如libipt_SNAT.so,libipt_DNAT.so 支持 “--to”、“-j SNAT”和 “-j DNAT”选项,libipt_tcp.so支持“-- dport”选项。如果用到其他命令选项,自行查找是哪个动态库支持,将其下载到开发板的/home/plg/iptables/libexec/xtables目录;
d. 执行iptables -L 命令,执行成功。但是当添加规则“iptables -A INPUT -t tcp --dport 80 -j ACCEPT”时提示找不到libipt_standard.so文件。而这个文件在编译生成的动态库中是没有的,只有一个“libxt_standard.so”。其实这两个库是一样的。重命名libxt_standard.so为 libipt_standard.so,将其下载到/usr/local/libexec/xtables。

【声明】

本文部分内容摘自网络和友善之臂技术手册,其他相关资料参考链接: http://blog.youkuaiyun.com/luyesy/article/details/6412908http://blog.youkuaiyun.com/hanzengyi/archive/2010/11/06/5991917.aspx


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值