HOW TO REBUILT THE ANDROID EMULATOR-SPECIFIC KERNEL:
====================================================

I. Helper script:
-----------------

We now provide a helper script to rebuild the kernel,
it is under $AOSP/prebuilts/qemu-kernel/build-kernel.sh.

Make sure to use a checkout of aosp/master, not one of the aosp/studio-XXX
branches, the latter do not contain the prebuilt target toolchain binaries
required to rebuild the kernel.

You need the sources in android.googlesource.com/kernel/goldfish.git,
in branch origin/android-goldfish-<version>, where <version> is the
kernel version that applies to your system image.

Roughly speaking:

  2.6.27     -> Anything before Gingerbread. (<= Android 2.2)
  2.6.29     -> For Gingerbread (2.3) until JellyBean MR2 (4.2.x)
  3.4        -> For KitKat (4.4.x) and Lollipop (5.0)
  3.10       -> For M, which is not available yet.

To rebuild the ARMv7-A one:

  /path/to/build-kernel.sh --out=$ANDROID/prebuilt/android-arm/kernel

To rebuild the x86 kernel:

  /path/to/build-kernel.sh --arch=x86 --out=$ANDROID/prebuilt/android-x86/kernel

To rebuild the MIPS kernel:

  /path/to/build-kernel.sh --arch=mips --out=$ANDROID/prebuilts/qemu-kernel/mips

To rebuild the MIPS64 kernel (version >= 3.10 only):

  /path/to/build-kernel.sh --arch=mips64 --out=$ANDROID/prebuilts/qemu-kernel/mips64 --gcc-version=4.9

To rebuild the x86_64 kernel (version >= 3.10 only):

  /path/to/build-kernel.sh --arch=x86_64 --out=$ANDROID/prebuilts/qemu-kernel/x86_64

To rebuild the ARM64 kernel (version >= 3.10 only):

  /path/to/rebuild-kerenl.sh --arch=arm64 --out=$ANDROID/prebuilts/qemu-kernel/arm64

By default the script tries to find an appropriate toolchain from
$AOSP/prebuilts/gcc/, but you can specify a different one using the
--cross=<prefix> option.

See build-kernel.sh --help for more options and details.


II. Rebuilding from scratch:
----------------------------

If you don't or can't use the script, here are manual instructions:

You need to have an appropriate cross-toolchain in your path
(e.g. 'arm-eabi-gcc --version' must work)

then (for version 2.6.29):

git clone https://android.googlesource.com/kernel/goldfish.git kernel-goldfish
cd kernel-goldfish
git checkout origin/android-goldfish-2.6.29

export CROSS_COMPILE=arm-eabi-
export ARCH=arm
export SUBARCH=arm
make goldfish_defconfig    # configure the kernel
make -j2                   # build it

=> this generates a file named arch/arm/boot/zImage

NOTE: Branch android-goldfish-2.6.27 is obsolete now. Do not use it.

Now, you can use it with:

  emulator -kernel path/to/your/new/zImage <other-options>


You can build an ARMv7-compatible kernel image by using goldfish_armv7_defconfig
in the above instructions (instead of goldfish_defconfig). Note that you will
need to enable ARMv7 emulation by using the -cpu cortex-a8 option, as in:

  emulator -kernel path/to/your/new/zImage <other-options> -qemu -cpu cortex-a8

As a special convenience, if the name of your kernel image ends in -armv7, then
the emulator binary will automatically enable ARMv7 emulation for you, so doing
the following should be equivalent

  emulator -kernel path/to/your/kernel-armv7 <other-options>

Voila !
