[Q] Build a compatible kernel

Search This thread

hotvic

Member
Aug 16, 2014
12
4
Remígio
For build a kernel compatible with my device, what do I need ? module list (took from /sys/module) ? only or what else ?

Can I simple use device/generic/common/ source and then configure with module list from /sys/module?
 

@SidDev

Senior Member
Aug 26, 2013
741
375
Kolkata
see this and thank me if i helped.

For build a kernel compatible with my device, what do I need ? module list (took from /sys/module) ? only or what else ?

Can I simple use device/generic/common/ source and then configure with module list from /sys/module?

You will want to look at the git log for the kernel binary
in the device project that you are interested in.
Device projects are of the form device/<vendor>/
<name>.
$ git clone https : //android.googlesource.com/device/ti/panda
$ cd panda
$ git log -- max - count= 1 kernel
The commit message for the kernel binary contains a
partial git log of the kernel sources that were used to
build the binary in question. The first entry in the log is
the most recent, i.e. the one used to build that kernel.
You will need it at a later step.
Identifying kernel version
To determine the kernel version used in a particular
system image, run the following command against the
kernel file:
$ dd if= kernel bs =1 skip = $ (LC_ALL = C grep - a -b - o $ '\x1f\x8b\x08\x00\x00\x00\x00\x00' k
For Nexus 5 (hammerhead), this can be accomplished
with:
$ bzgrep - a 'Linux version' vmlinux . bz2
Downloading sources
Depending on which kernel you want,
$ git clone https : //android.googlesource.com/kernel/common.git
$ git clone https : //android.googlesource.com/kernel/exynos.git
$ git clone https : //android.googlesource.com/kernel/goldfish.git
$ git clone https : //android.googlesource.com/kernel/msm.git
$ git clone https : //android.googlesource.com/kernel/omap.git
$ git clone https : //android.googlesource.com/kernel/samsung.git
$ git clone https : //android.googlesource.com/kernel/tegra.git
The goldfish project contains the kernel sources for
the emulated platforms.
The msm project has the sources for ADP1, ADP2,
Nexus One, Nexus 4, and can be used as a starting
point for work on Qualcomm MSM chipsets.
The omap project is used for PandaBoard and Galaxy
Nexus, and can be used as a starting point for work on
TI OMAP chipsets.
The samsung project is used for Nexus S, and can be
used as a starting point for work on Samsung
Hummingbird chipsets.
The tegra project is for Xoom and Nexus 7, and can
be used as a starting point for work on NVIDIA Tegra
chipsets.
The exynos project has the kernel sources for Nexus
10, and can be used as a starting point for work on
Samsung Exynos chipsets.
Downloading a prebuilt gcc
Ensure that the prebuilt toolchain is in your path.
$ export PATH = $ (pwd )/ prebuilts /gcc / linux - x86/ arm / arm -eabi- 4.6 /bin : $PATH
or
$ export PATH = $ (pwd )/ prebuilts /gcc / darwin- x86 /arm / arm - eabi-4.6 / bin: $PATH
On a linux host, if you don't have an Android source
tree, you can download the prebuilt toolchain from:
$ git clone https : //android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-ea
Building
As an example, we would build the panda kernel using
the following commands:
$ export ARCH = arm
$ export SUBARCH = arm
$ export CROSS_COMPILE = arm - eabi-
$ cd omap
$ git checkout <commit_from_first_step>
$ make panda_defconfig
$ make
To build the tuna kernel, you may run the previous
commands replacing all instances of "panda" with
"tuna".
The kernel binary is output as: `arch/arm/boot/zImage`
It can be copied into the Android source tree in order
to build the matching boot image.
Or you can include the TARGET_PREBUILT_KERNEL
variable while using make bootimage or any other
make command line that builds a boot image.
$ export TARGET_PREBUILT_KERNEL =$your_kernel_path / arch/arm / boot/ zImage
That variable is supported by all devices as it is set up
via device/common/populate-new-device.sh
 

hotvic

Member
Aug 16, 2014
12
4
Remígio
You will want to look at the git log for the kernel binary
in the device project that you are interested in.
Device projects are of the form device/<vendor>/
<name>.
$ git clone https : //android.googlesource.com/device/ti/panda
$ cd panda
$ git log -- max - count= 1 kernel
The commit message for the kernel binary contains a
partial git log of the kernel sources that were used to
build the binary in question. The first entry in the log is
the most recent, i.e. the one used to build that kernel.
You will need it at a later step.
Identifying kernel version
To determine the kernel version used in a particular
system image, run the following command against the
kernel file:
$ dd if= kernel bs =1 skip = $ (LC_ALL = C grep - a -b - o $ '\x1f\x8b\x08\x00\x00\x00\x00\x00' k
For Nexus 5 (hammerhead), this can be accomplished
with:
$ bzgrep - a 'Linux version' vmlinux . bz2
Downloading sources
Depending on which kernel you want,
$ git clone https : //android.googlesource.com/kernel/common.git
$ git clone https : //android.googlesource.com/kernel/exynos.git
$ git clone https : //android.googlesource.com/kernel/goldfish.git
$ git clone https : //android.googlesource.com/kernel/msm.git
$ git clone https : //android.googlesource.com/kernel/omap.git
$ git clone https : //android.googlesource.com/kernel/samsung.git
$ git clone https : //android.googlesource.com/kernel/tegra.git
The goldfish project contains the kernel sources for
the emulated platforms.
The msm project has the sources for ADP1, ADP2,
Nexus One, Nexus 4, and can be used as a starting
point for work on Qualcomm MSM chipsets.
The omap project is used for PandaBoard and Galaxy
Nexus, and can be used as a starting point for work on
TI OMAP chipsets.
The samsung project is used for Nexus S, and can be
used as a starting point for work on Samsung
Hummingbird chipsets.
The tegra project is for Xoom and Nexus 7, and can
be used as a starting point for work on NVIDIA Tegra
chipsets.
The exynos project has the kernel sources for Nexus
10, and can be used as a starting point for work on
Samsung Exynos chipsets.
Downloading a prebuilt gcc
Ensure that the prebuilt toolchain is in your path.
$ export PATH = $ (pwd )/ prebuilts /gcc / linux - x86/ arm / arm -eabi- 4.6 /bin : $PATH
or
$ export PATH = $ (pwd )/ prebuilts /gcc / darwin- x86 /arm / arm - eabi-4.6 / bin: $PATH
On a linux host, if you don't have an Android source
tree, you can download the prebuilt toolchain from:
$ git clone https : //android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-ea
Building
As an example, we would build the panda kernel using
the following commands:
$ export ARCH = arm
$ export SUBARCH = arm
$ export CROSS_COMPILE = arm - eabi-
$ cd omap
$ git checkout <commit_from_first_step>
$ make panda_defconfig
$ make
To build the tuna kernel, you may run the previous
commands replacing all instances of "panda" with
"tuna".
The kernel binary is output as: `arch/arm/boot/zImage`
It can be copied into the Android source tree in order
to build the matching boot image.
Or you can include the TARGET_PREBUILT_KERNEL
variable while using make bootimage or any other
make command line that builds a boot image.
$ export TARGET_PREBUILT_KERNEL =$your_kernel_path / arch/arm / boot/ zImage
That variable is supported by all devices as it is set up
via device/common/populate-new-device.sh

but... I want a general way of build the kernel, i.e not using the device-specific code.
My idea is build most recent kernel to devices w/o updates in source tree.

and the device in my mind is a Alcatel One Touch POP C3, which there's no device/alcatel ...

Thank you.
 

shimp208

Inactive Recognized Contributor
Jan 25, 2011
2,613
3,089
Boston
but... I want a general way of build the kernel, i.e not using the device-specific code.
My idea is build most recent kernel to devices w/o updates in source tree.

and the device in my mind is a Alcatel One Touch POP C3, which there's no device/alcatel ...

Thank you.

You will need device specific code to get you started, I would recommend checking out this section on source forge where Alcatel keeps it's open source files that include the kernel source for most all there devices by searching for your device model. Let me know if you still have questions.
 

@SidDev

Senior Member
Aug 26, 2013
741
375
Kolkata
but... I want a general way of build the kernel, i.e not using the device-specific code.
My idea is build most recent kernel to devices w/o updates in source tree.

and the device in my mind is a Alcatel One Touch POP C3, which there's no device/alcatel ...

Thank you.

kernel is general made device specific
 

hotvic

Member
Aug 16, 2014
12
4
Remígio
shimp208 said:
You will need device specific code to get you started, I would recommend checking out this section on source forge where Alcatel keeps it's open source files that include the kernel source for most all there devices by searching for your device model. Let me know if you still have questions.
Ok, I've got 4033E code and kernel source is inside it.

@SidDev said:
kernel is general made device specific
is there a general kernel where I can merge the alcatel's source and most recent source ?
 

shimp208

Inactive Recognized Contributor
Jan 25, 2011
2,613
3,089
Boston
Ok, I've got 4033E code and kernel source is inside it.


is there a general kernel where I can merge the alcatel's source and most recent source ?

You can now use that kernel source to build the defconfig for your device which is usually listed under arch/arm/configs your devicecodename_defconfig. If the sources don't include any compile instructions or a README let me know and I can help if you get stuck. While you could take the latest version of the Android kernel for say the Nexus 5, and merge the Alcatel sources there are a lot of merge problems that would have to be fixed as well as other compile errors that would result, best to stay away from this until you really know what your doing and feel more comfortable with all the things involved.