Welcome to the New XDA-Developers Portal!

You may recall that a few weeks ago, we opened up the XDA-2015 forum themesto intrepid users … more

An Android Enthusiast’s Apple iPhone 6 Challenge

The media has gone batty again over Apple “revolutionizing” smartphones. … more

Sony to Extend its AOSP Program to Other Devices

Sony will be offering its users the possibility to use AOSP ROMs as an alternative to the … more

Project Ara: Modified Android L and Hot Swapping

Project Ara is a very exciting topic–both for hardware and software enthusiasts. The … more
Post Reply

[Q] Build a compatible kernel

17th August 2014, 02:27 AM   |  #1  
OP Junior Member
Flag Remígio
Thanks Meter: 0
 
3 posts
Join Date:Joined: Aug 2014
More
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?
17th August 2014, 03:29 AM   |  #2  
@SidDev's Avatar
Senior Member
Flag Kolkata
Thanks Meter: 213
 
398 posts
Join Date:Joined: Aug 2013
More
see this and thank me if i helped.
Quote:
Originally Posted by hotvic

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
17th August 2014, 11:47 PM   |  #3  
OP Junior Member
Flag Remígio
Thanks Meter: 0
 
3 posts
Join Date:Joined: Aug 2014
More
Quote:
Originally Posted by @SidDev

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.
18th August 2014, 03:11 AM   |  #4  
shimp208's Avatar
Recognized Contributor
Flag Boston
Thanks Meter: 1,566
 
2,248 posts
Join Date:Joined: Jan 2011
Donate to Me
More
Quote:
Originally Posted by hotvic

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.
18th August 2014, 08:33 AM   |  #5  
@SidDev's Avatar
Senior Member
Flag Kolkata
Thanks Meter: 213
 
398 posts
Join Date:Joined: Aug 2013
More
Quote:
Originally Posted by hotvic

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
18th August 2014, 02:02 PM   |  #6  
OP Junior Member
Flag Remígio
Thanks Meter: 0
 
3 posts
Join Date:Joined: Aug 2014
More
Quote:
Originally Posted by shimp208

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.

Quote:
Originally Posted by @SidDev

kernel is general made device specific

is there a general kernel where I can merge the alcatel's source and most recent source ?
18th August 2014, 11:41 PM   |  #7  
shimp208's Avatar
Recognized Contributor
Flag Boston
Thanks Meter: 1,566
 
2,248 posts
Join Date:Joined: Jan 2011
Donate to Me
More
Quote:
Originally Posted by hotvic

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.

Post Reply Subscribe to Thread
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes


Top Threads in Android Q&A, Help & Troubleshooting by ThreadRank