aboutsummaryrefslogtreecommitdiffstats
path: root/docs/ANDROID-KERNEL.TXT
blob: 9305ff01ab7a00b8765c16e31062c887b1c40238 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
HOW TO REBUILT THE ANDROID EMULATOR-SPECIFIC KERNEL:
====================================================

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

We now provide a helper script to rebuild the kernel,
it is under distrib/rebuild-kernel.sh.

You need the sources in android.git.kernel.org/kernel/qemu.git,
in branch origin/android-goldfish-2.6.29

To rebuild the ARMv5TE kernel:

  cd $KERNEL_SOURCES
  /path/to/rebuild-kernel.sh --out=$ANDROID/prebuilt/android-arm/kernel

To rebuild the ARMv7-A one:

  cd $KERNEL_SOURCES
  /path/to/rebuild-kernel.sh --armv7 --out=$ANDROID/prebuilt/android-arm/kernel

To rebuild the x86 kernel:

  cd $KERNEL_SOURCES
  /path/to/rebuild-kernel.sh --arch=x86 --out=$ANDROID/prebuilt/android-x86/kernel

To rebuild the MIPS kernel:

  cd $KERNEL_SOURCES
  /path/to/rebuild-kernel.sh --arch=mips --out=$ANDROID/prebuilts/qemu-kernel/mips

Note that you will need to have your cross-toolchain in your path.
If this is not the case, the script will complain and give you the
expected name. Use --cross=<prefix> to specify a different toolchain.

See rebuild-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 the Android toolchain in your path
(i.e. 'arm-eabi-gcc --version' must work)

then:

git clone git://android.git.kernel.org/kernel/common.git kernel-common
cd kernel-common
git checkout origin/archive/android-gldfish-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_defconfg
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 !