Android模拟器默认内核不支持netfilter,所以试图使用iptalbes时,会出现错误。

# iptables -L
iptables -L
iptables 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.git
Initialized empty Git repository in /home/shanks/android/kernel/goldfish/.git/
remote: Counting objects: 28280, done
remote: 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
* masterremotes/origin/HEAD -> origin/masterremotes/origin/android-goldfish-2.6.29remotes/origin/android-goldfish-3.4remotes/origin/linux-goldfish-3.0-wipremotes/origin/master

下载2.6.29版本。

root@ubuntu:~/android/kernel/goldfish# git checkout remotes/origin/android-goldfish-2.6.29
Checking out files: 100% (26821/26821), done.
Note: checking out 'remotes/origin/android-goldfish-2.6.29'.

下载完成后,设置编译所需环境变量。

root@ubuntu:~/android/kernel/goldfish# export ARCH=arm
root@ubuntu:~/android/kernel/goldfish# export SUBARCH=arm
root@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 1
make: *** [menuconfig] Error 2root@ubuntu:~/android/kernel/goldfish# apt-get install libncurses-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done

再运行make menuconfig,选择相关模块。

配置完成后,进行编译

root@ubuntu:~/android/kernel/goldfish# make -j4
make: arm-eabi-gcc: Command not foundCHK     include/linux/version.h
make[1]: `include/asm-arm/mach-types.h' is up to date.CHK     include/linux/utsrelease.hSYMLINK include/asm -> include/asm-armCC      scripts/mod/empty.o
/bin/sh: arm-eabi-gcc: not found
make[2]: *** [scripts/mod/empty.o] Error 127
make[1]: *** [scripts/mod] Error 2
make: *** [scripts] Error 2root@ubuntu:~/android/kernel/goldfish# apt-get install lib32ncurses5-devroot@ubuntu:~/android/kernel/goldfish# make -j4CHK     include/linux/version.hSYMLINK include/asm -> include/asm-arm
make[1]: `include/asm-arm/mach-types.h' is up to date.CHK     include/linux/utsrelease.hCC      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 directory
make[2]: *** [scripts/mod/empty.o] Error 1
make[1]: *** [scripts/mod] Error 2
make: *** [scripts] Error 2
root@ubuntu:~/android/kernel/goldfish# apt-get install ia32-libsOBJCOPY arch/arm/boot/zImageKernel: arch/arm/boot/zImage is ready

编译完成后,使用新内核运行模拟器。

...\tools>emulator.exe -avd CM2.3 -kernel ....\zImage -show-kernel -no-snapshot
serial0 console
Uncompressing Linux......................................................... done, booting the kernel.
Initializing cgroup subsys cpu
Linux version 2.6.29-gcb06bef (root@ubuntu) (gcc version 4.4.3 (GCC) ) #1 Thu Nov 8 01:35:29 PST 2012
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00093177
CPU: 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)相关推荐

  1. android内核编译教程,Android内核开发:系统编译输出的镜像文件

    主要介绍一下源码编译输出的几个重要的镜像文件,这里把bootloader源码和Linux内核源码的编译输出也算在其中,因为毕竟Android系统缺少了这两个部分在设备上也是跑不起来的. 1. MLO, ...

  2. 编译 android 内核,编译内核  |  Android 开源项目  |  Android Open Source Project

    本页详细介绍了如何仅编译内核.以下说明假设您尚未下载整个 AOSP:如果您已完成下载,则可以跳过 git clone 对应的步骤,但下载内核源代码的步骤除外. 本部分中的所有示例均使用 hikey 内 ...

  3. FFMPEG android mac 编译 支持DASH/OPENSSL问题汇总

    一 下载源码 FFMPEG https://github.com/FFmpeg/FFmpeg/tree/release/4.3 二 编写脚本 支持https 就必须添加open SSL 的编译 具体可 ...

  4. android内核编译 me525,摩托罗拉DEFY(ME525)刷Android 2.3.4变砖后的解决方法

    Android的一大乐趣就是刷机,但是刷机也是有很大的风险的,一个不留神,你的智能手机就有可能变成了砖.今天我们来看看如果摩托罗拉DEFY(ME525)刷机失败以后,该如何解决恢复? 1.手机关机 2 ...

  5. 图解Google Android内核编译教程

    http://www.elecfans.com/emb/xitong/20100608219051.html?v=pc 转载于:https://www.cnblogs.com/prayer521/p/ ...

  6. Android内核的编译和调试

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/70500488 一.Android内核源码的选择 Android手机设备内核源码的调 ...

  7. linux 内核 ntfs,Linux大脑 内核 内核编译(NTFS)

    Linux大脑 "内核" 关于它 什么是内核 kernel(内核)是操作系统的核心,相当于人的大脑,掌控所有的硬件设备的控制权,也就是希望计算机帮你完成各项工作,那都需要通过内核的 ...

  8. codova添加android慢_从 0 开始学 Linux 内核之 android 内核栈溢出 ROP 利用

    作者:Hcamael@知道创宇404实验室 最近在研究一个最简单的android内核的栈溢出利用方法,网上的资料很少,就算有也是旧版内核的,新版的内核有了很大的不同,如果放在x86上本应该是很简单的东 ...

  9. 有用的博客整理(Android系统编译相关)

    //在Ubuntu18.04中Android Studio开发环境搭建 http://baijiahao.baidu.com/s?id=1604117887374452787&wfr=spid ...

最新文章

  1. JavaScript学习笔记五:变量、作用域和内存问题
  2. iOS用户设计指南-特别说明
  3. 【经验分享】鹅厂机器学习岗暑期实习面经总结
  4. 京东开通数字人民币“硬件钱包”线上消费功能
  5. 提出智能扰动方法!字节跳动隐私保护论文入选 NeurIPS 2020 联邦学习Workshop
  6. Linux 2.6 中的页面回收与反向映射
  7. 条码软件如何自定义设置条形码尺寸
  8. SPSS详细图文教程:手把手教你配对样本t检验,
  9. FFmpegFFplay常用命令汇总
  10. Js 获取浏览器高度
  11. 模糊综合评价指标如何计算?四种模糊算子如何计算?
  12. vs2010格式化html,VS中的快捷键快速格式化代码,使好看,整齐
  13. 音乐计算机研修心得,音乐学习心得体会五篇
  14. WeChatTweak-微信小助手 v1.2.2 详细安装教程
  15. 做个jmeter登陆百度网盘的实例
  16. tensor如何实现转置_转置()TensorFlow中的函数
  17. 尚硅谷YYDS (课件资料)
  18. APR协议及RARP协议
  19. 麻将胡牌递归算法(lua)
  20. 彻底弄懂base64的编码与解码原理

热门文章

  1. Graylog——日志聚合工具中的后起之秀
  2. GitLab找回密码
  3. iOS定位及解析经纬度【Swift】
  4. 手把手教你使用Python打造一个智能搜索淘宝商品!
  5. 解析贷中管理的5大策略模块
  6. NFT市场大战:Blur市场地位可持续吗?
  7. 2021最全数学建模必备资料
  8. (IOS可自动播放)使用bxslider做了一个切换图片跟随播放MP3的功能
  9. CC00084.CloudKubernetes——|KuberNeteskubeadm.V13|5台Server|——|kubernetes组件|dashboard|
  10. vscode官网下载失败或者下载速度太慢