【问题标题】:How to compile Linux kernel for real Android phone?如何为真正的Android手机编译Linux内核?
【发布时间】:2011-04-03 12:05:49
【问题描述】:

我成功地将自定义 Linux 内核编译并加载到 Android 模拟器 (Eclair) 中。现在我想为真正的 Android 设备(Samsung Galaxy 5、Android 2.1 (Eclair))编译内核。

似乎为模拟器编译的相同内核映像不能用于真实设备。没有关于如何做到这一点的明确信息。

谁能告诉需要更改哪些步骤才能获取真正的 Android 手机的内核映像。

【问题讨论】:

    标签: linux-kernel arm embedded-linux android-2.1-eclair


    【解决方案1】:

    您可能正在使用 MSM 内核树(用于 Qualcomm MSM 处理器),但三星 Galaxy S 具有三星蜂鸟处理器,因此需要三星内核树,发现 here

    我不知道内核树是否包含专门针对 Galaxy S 的 defconfig,但您可能可以使用“herring_defconfig”(make herring_defconfig)。 Herring 是 Nexus S 的代号,但 Galaxy S 非常相似。

    如果您也在构建 Android 框架(不仅仅是内核),您可能需要从现有手机图像中提取二进制驱动程序(用于相机、蓝牙、WiFi、无线电等)并添加它们到您的系统构建。

    【讨论】:

    • 非常感谢大卫。实际上,我想在内核中启用完整的 iptables(Netfilter) 支持。现在我为模拟器编译的那个可以工作。至少它会阻止一个 URL。但是每次启动模拟器时,我都需要将 iptables 推送到 /system/bin。不知道手机会不会出现同样的问题。所以我希望 /system/bin 默认包含 iptables 二进制文件。
    • 我从 ~/myandroid/out/target/product/generic/system/bin 复制了 iptables 二进制文件并将其加载到模拟器中。我已经在 .config 文件中编译了具有完整 Netfilter 和 iptables 支持的内核。并且 netfilter 和 iptables 选项与它们在带有 xtables 的 PC Linux 中一样可能。我还在内核配置中启用了模块加载支持..
    • 但是当我尝试 iptables-save 时,我收到错误消息,提示找不到 iptables-save。 iptables-save 是一个在需要时加载的模块(我认为)。那么,我该如何启用它。似乎需要将 ~/myandroid/external/iptables 中的 Android.mk 文件更改为文件 iptables-save.c、iptables-restore.c 它们存在于 iptables 文件夹中,但它们在 makefile 中没有条目。我应该怎么做才能在模拟器和手机上启用完整的 iptables 功能。
    • 这真的是一个不同的问题。您应该将其添加为新问题,以便其他有相同问题的人可以通过标题识别它。但是要给出答案,是的,似乎默认的 Android.mk makefile 只是构建 iptables 二进制文件,而不是 iptables-save 或 iptables-restore 二进制文件。您需要为这些文件添加规则。
    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 2017-03-09
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 2011-07-04
    相关资源
    最近更新 更多