在Nexus 7上加载自定义内核

时间:2012-12-06 19:22:13

标签: android kernel

我正在尝试为我的Nexus 7(内核版本3.1.10,android 4.1.2,rooted和unlocked)构建一个自定义内核,但是我在加载内核时遇到了麻烦。我已经在几个方面遵循了我在网上找到的所有步骤,但无法加载内核。我怀疑问题出在将内核重新打包到boot.img中的某个地方。以下是我正在使用的步骤:

  1. 从Google网站下载内核源代码
  2. 从设备中拔出config.gz,gunzip,并在与内核源相同的目录中重命名为.config。
  3. 出于测试目的,我没有对menuconfig等中的内核配置进行任何更改,因此.config文件与从设备关闭时完全相同。我已经改变了Makefile中的外向以匹配现有的内核。

    重建内核:

    1. make ARCH = arm CROSS_COMPILE = / usr / bin / arm-linux-gnueabi-
    2. 拆开boot.img

      1. unpackbootimg -i boot.img -o unpacked
      2. cat ../kernel/arch/arm/boot/zImage>解压/ boot.img的-的zImage
      3. 重新包装boot.img

        1. mkbootimg --kernel boot.img-zImage --ramdisk boot.img-ramdisk.gz --cmdline“no_console_suspend = 1 console = null” - base cat boot.img-base -o newboot.img
        2. 然后,在fastboot中重新启动一次......

          1. fastboot boot newboot.img
          2. 我的设备刚刚挂起。我在我的Wifi-only Motorola Xoom上尝试了相同的过程,它只是启动循环。我缺少一步吗?我需要更改ramdisk中的某些内容吗?感谢您的帮助或您的任何见解。

1 个答案:

答案 0 :(得分:1)

我也用头撞了一下墙几天。这里有一些提示帮助我启动并运行内核:

  1. 使用split_bootimg解压缩原始boot.img。您可以在此处获取:http://www.enck.org/tools.html

  2. 运行make时,设置SUBARCH = arm以及ARCH

  3. 请务必使用android源码中的工具链。如果您没有,可以在此处获取:https://android.googlesource.com/platform/prebuilt/

  4. 如果您发现自己陷入了循环启动动画,请确保您拥有最新的内核稳定版本。

  5. 进一步到最后一点,我尝试使用提交哈希方法(使用git log内核获取预构建内核的最后一次提交)来获取内核源代码,但发现它在编译后总是挂起。

    最后我选择使用最新的内核源代码(我选择了mr1分支),重新打包的boot.img第一次使用我的4.1.2 Android版本。

    希望其中一些有帮助!