Android内核编译(支持netfilter/iptalbes)(can't initialize iptables table `filter': iptables who)
来源:互联网 发布:回族最新人口数据 编辑:程序博客网 时间:2024/05/16 17:19
Android模拟器默认内核不支持netfilter,所以试图使用iptalbes时,会出现错误。
# iptables -Liptables -Liptables v1.3.7: can't initialize iptables table `filter': iptables who? (do you need to insmod?)Perhaps iptables or your kernel needs to be upgraded.#
解决方法是重新编译一个android内核,编译的时候打开netfilter相关模块,用新内核替换原有内核即可。
实验环境:ubuntu10.04 64bit
下载适用模拟器的android内核代码
root@ubuntu:~/android/kernel# git clone https://android.googlesource.com/kernel/goldfish.gitInitialized empty Git repository in /home/shanks/android/kernel/goldfish/.git/remote: Counting objects: 28280, doneremote: Finding sources: 100% (6/6)remote: Getting sizes: 100% (5/5)remote: Compressing objects: 100% (5/5)Receiving objects: 100% (2442118/2442118), 499.20 MiB | 772 KiB/s, done.remote: Total 2442118 (delta 2048586), reused 2442116 (delta 2048586)Resolving deltas: 100% (2048602/2048602), done.
查看可用版本
root@ubuntu:~/android/kernel/goldfish# git branch -a* master remotes/origin/HEAD -> origin/master remotes/origin/android-goldfish-2.6.29 remotes/origin/android-goldfish-3.4 remotes/origin/linux-goldfish-3.0-wip remotes/origin/master
下载2.6.29版本。
root@ubuntu:~/android/kernel/goldfish# git checkout remotes/origin/android-goldfish-2.6.29Checking out files: 100% (26821/26821), done.Note: checking out 'remotes/origin/android-goldfish-2.6.29'.
下载完成后,设置编译所需环境变量。
root@ubuntu:~/android/kernel/goldfish# export ARCH=armroot@ubuntu:~/android/kernel/goldfish# export SUBARCH=armroot@ubuntu:~/android/kernel/goldfish# export CROSS_COMPILE=arm-eabi-root@ubuntu:~/android/kernel/goldfish# export PATH=<PWD>/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH
运行make
make goldfish_defconfig
接下来配置编译的模块,这个过程可能会报缺少一些必要的包,可以提前安装相关的包,也可以根据错误逐步添加。
root@ubuntu:~/android/kernel/goldfish# apt-get install ia32-libs
下面是实验过程记录。
root@ubuntu:~/android/kernel/goldfish# make menuconfig *** Unable to find the ncurses libraries or the *** required header files. *** 'make menuconfig' requires the ncurses libraries. *** *** Install ncurses (ncurses-devel) and try again. *** make[1]: *** [scripts/kconfig/dochecklxdialog] Error 1make: *** [menuconfig] Error 2root@ubuntu:~/android/kernel/goldfish# apt-get install libncurses-devReading package lists... DoneBuilding dependency tree Reading state information... Done
再运行make menuconfig,选择相关模块。
配置完成后,进行编译
root@ubuntu:~/android/kernel/goldfish# make -j4make: arm-eabi-gcc: Command not found CHK include/linux/version.hmake[1]: `include/asm-arm/mach-types.h' is up to date. CHK include/linux/utsrelease.h SYMLINK include/asm -> include/asm-arm CC scripts/mod/empty.o/bin/sh: arm-eabi-gcc: not foundmake[2]: *** [scripts/mod/empty.o] Error 127make[1]: *** [scripts/mod] Error 2make: *** [scripts] Error 2root@ubuntu:~/android/kernel/goldfish# apt-get install lib32ncurses5-devroot@ubuntu:~/android/kernel/goldfish# make -j4 CHK include/linux/version.h SYMLINK include/asm -> include/asm-armmake[1]: `include/asm-arm/mach-types.h' is up to date. CHK include/linux/utsrelease.h CC scripts/mod/empty.o.../prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/bin/as: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directorymake[2]: *** [scripts/mod/empty.o] Error 1make[1]: *** [scripts/mod] Error 2make: *** [scripts] Error 2root@ubuntu:~/android/kernel/goldfish# apt-get install ia32-libs OBJCOPY arch/arm/boot/zImage Kernel: arch/arm/boot/zImage is ready
编译完成后,使用新内核运行模拟器。
...\tools>emulator.exe -avd CM2.3 -kernel ....\zImage -show-kernel -no-snapshotserial0 consoleUncompressing Linux......................................................... done, booting the kernel.Initializing cgroup subsys cpuLinux version 2.6.29-gcb06bef (root@ubuntu) (gcc version 4.4.3 (GCC) ) #1 Thu Nov 8 01:35:29 PST 2012CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00093177CPU: VIVT data cache, VIVT instruction cache问题得以解决
参考:
http://source.android.com/source/building-kernels.html
http://blog.csdn.net/fdl19881/article/details/7467129
- Android内核编译(支持netfilter/iptalbes)(can't initialize iptables table `filter': iptables who)
- can't initialize iptables table `nat': Table does
- iptables的NAT功能设置和linux升级内核后遇到 can't initialize iptables table `nat': Table does not exist 问题
- ptables的NAT功能设置和linux升级内核后遇到 can't initialize iptables table `nat': Table does not exist 问题
- 容器中使用iptables报错can't initialize iptables table Permission denied (you must be root)
- iptables启动提示unable to initialize table 'filter'
- linux 2.6下编译内核启用iptables及netfilter
- netfilter/iptables 简介--使用 netfilter/iptables 为 Linux(内核 2.4.x)配置防火墙
- netfilter/iptables 简介使用 netfilter/iptables 为 Linux(内核 2.4.x)配置防火墙
- netfilter & iptables
- iptables、netfilter
- Android网络安全:Netfilter与iptables
- netfilter/iptables 为 Linux(内核 2.4.x)配置防火墙
- iptables内核编译
- iptables(防火墙)与netfilter
- Linux netfilter/iptables内核模块介绍
- Linux netfilter/iptables内核模块介绍
- netfilter/iptables模块编译及应用
- 遍历文件夹access_log中的所有文件localhost_access_log*.txt,提取IP插入数据库中java代码
- li在ie6.7下的BUG
- 如何向妻子解释OOD
- 折叠屏幕(非子屏幕)
- php文件下载功能
- Android内核编译(支持netfilter/iptalbes)(can't initialize iptables table `filter': iptables who)
- Struts2 标签库(下)[Tablib]
- CreateToolhelp32Snapshot
- android4.0电容屏移植
- 工信部软件大赛及C++基本教程
- android json 解析及简单例子
- Shell学习笔记(14)-sed
- 3-4 itoa函数处理最大负数。
- 缓存深化