Q on building the "latest" Android Kernel - Android Q&A, Help & Troubleshooting

I have a general question about building the Android kernel. For understanding purposes, I'm a C/C++/C# developer (and Android application developer), but have little functional knowledge of the Linux kernel.
With regard to porting Android, I'm curious how one builds the latest Kernel. The Android Kernel is not simply the standard Linux Kernel branch, correct? Where does one get the latest "Android" Kernel from? Does Google host a Kernel site as part of AOSP that we can sync with?
Once you have the latest Kernel, is it simply a matter of ensuring the Make file is accurate, adding the appropriate device drivers (as .so files?) for your particular hardware, and performing a Make? Then I assume you can update your device's Kernel with the one you've buildt?
In closing, for example, I'd like to sync the Android 3.0 Kernel, update the drivers necessary for my EVO 4G, build the latest Kernel, and then flash it to my phone. Just looking for some insight as I start getting educated on the topic.
Thanks for any advice you can offer!

Actually, the android kernel is very similar to the linux kernel (well it is based on the linux kernel). You can get the kernel from here: http://source.android.com/source/downloading.html. You can also take a look here: http://elinux.org/Android_Kernel_Download and here: http://elinux.org/Android_Kernel_Features. It will be quite difficult to build a kernel for your device without the source (there's none for 3.0.1 for your device), but you could still build it from a lower kernel version: http://linux.softpedia.com/progDownload/HTC-EVO-4G-Sprint-Kernel-Source-Code-Download-58254.html.

Thanks for the info, Theonew. When you say that it will be difficult for me to build the kernel for an EVO without the source, is that because the vendors (Qualcomm, for example) haven't made source for their devices available, so it's hard to build the drivers (.so files?) that are compatible with the latest kernel?

Shidell said:
Thanks for the info, Theonew. When you say that it will be difficult for me to build the kernel for an EVO without the source, is that because the vendors (Qualcomm, for example) haven't made source for their devices available, so it's hard to build the drivers (.so files?) that are compatible with the latest kernel?
Click to expand...
Click to collapse
HTC hasn't released the source of the kernel v3.0.1 (which comes in Ice Cream Sandwich) for your device (since it's not available for your device...yet at least).

Related

hero 2.1 source code

hi guys, did HTC ever release the source code for the 2.1 update?
No. htc are bell-ends and don't even release driver source code, let alone code for their "superior" gui. Hence why it takes a while to port newer versions of android to the hero. Developers have to implement loads of dirty hacks and backports using kernel binary blobs they manage to extract from the 2.1 upgrade.
TheReverend210 said:
No. htc are bell-ends and don't even release driver source code, let alone code for their "superior" gui. Hence why it takes a while to port newer versions of android to the hero. Developers have to implement loads of dirty hacks and backports using kernel binary blobs they manage to extract from the 2.1 upgrade.
Click to expand...
Click to collapse
well thats just bad news!!
but they did afaik release source code for the kernel for many of their phones didn't they, what i would like to know is what does this mean to developers, what can they do with the kernel source?
The kernel is just a modified linux kernel, which has been open source since the early 90's.
Developers can do quite a bit with the kernel, is is basically the bridge between hardware and software.
However, despite running Debian since Etch was the latest stable release, my knowledge of the linux kernel is limited, so you would have to ask a developer for specifics.
TheReverend210 said:
The kernel is just a modified linux kernel, which has been open source since the early 90's.
Developers can do quite a bit with the kernel, is is basically the bridge between hardware and software.
However, despite running Debian since Etch was the latest stable release, my knowledge of the linux kernel is limited, so you would have to ask a developer for specifics.
Click to expand...
Click to collapse
thanks for your help
info on webkit source please..
i was at HTC's Developer Center and i noticed that HTC released the "webkit source code" for several "Sense UI" models, including the HTC Droid Eris, which very much shares our beloved Hero's specs...
i was wondering is this webkit compatible with our GSM Hero, and why didn't HTC release the webkit source for the GSM version?
the reason i'm asking is because i want to take out libwebcore.so alone and patch it, and replace the one in Hero...

[Q] Linux kernel 3.08 or 3.1 on Android possible?

After seeing that the Galaxy Nexus is so far running kernel 3.0.1, I was wondering if it is possible to update current kernels on existing devices to a 3.x kernel. I have a little experience in at least successfully upgrading Debian to 3.1 kernel, but compiling for android is a bit different it seems.
On my G2x, which is running 2.6.32.45, I attempted to compile a 3.1 kernel, and it refused to boot into CM7. I followed the CM kernel compilation guide, but to no avail. Would this most likely be due just to error on my part during compilation or configuration, or do I need to wait for LG to make their own 3.x kernel based ROM to derive the proper drivers?
Is it even possible at all to "upgrade" to a higher kernel version if the phone manufacturer has not done so themselves already? Thanks for any input!
Yes, you will have to wait until LG releases their version. No, its not possible to upgrade to a higher kernel version if the phone manufacturer has not done so themselves (you could try to compile one based on a higher version but that would have to be from some other manufacturer and most likely it will not work). To answer your title question, yes, it most likely will be done in higher versions of android.
Theonew said:
Yes, you will have to wait until LG releases their version. No, its not possible to upgrade to a higher kernel version if the phone manufacturer has not done so themselves (you could try to compile one based on a higher version but that would have to be from some other manufacturer and most likely it will not work). To answer your title question, yes, it most likely will be done in higher versions of android.
Click to expand...
Click to collapse
Thank you for replying so quickly and concisely!
That is a bit disappointing, but realistic I suppose. In the 3.1 kernel changelog there were a ton of Tegra based changes/fixes, so I figured I'd try it out on the Tegra based G2X. What is it that the newer kernels are missing that severely hinders upgrades on android as oppose to desktop (x86?) platforms?
In more realistic terms, the most likely way of being able to jump up to a higher kernel would be say, using the 3.0.1 kernel from the Galaxy Nexus dump as the source and use a current 2.6.32 config with it? I might try it out if it's a little more likely!
hobbla said:
Thank you for replying so quickly and concisely!
That is a bit disappointing, but realistic I suppose. In the 3.1 kernel changelog there were a ton of Tegra based changes/fixes, so I figured I'd try it out on the Tegra based G2X. What is it that the newer kernels are missing that severely hinders upgrades on android as oppose to desktop (x86?) platforms?
In more realistic terms, the most likely way of being able to jump up to a higher kernel would be say, using the 3.0.1 kernel from the Galaxy Nexus dump as the source and use a current 2.6.32 config with it? I might try it out if it's a little more likely!
Click to expand...
Click to collapse
The newer kernels aren't missing anything. In fact, they have many more features, optimizations, and fixes which do not allow them to work on earlier versions of android.
More likely yes, but still, it most likely will not work (since these earlier version of android won't support all what higher kernels and android versions support).
hobbla said:
After seeing that the Galaxy Nexus is so far running kernel 3.0.1, I was wondering if it is possible to update current kernels on existing devices to a 3.x kernel. I have a little experience in at least successfully upgrading Debian to 3.1 kernel, but compiling for android is a bit different it seems.
On my G2x, which is running 2.6.32.45, I attempted to compile a 3.1 kernel, and it refused to boot into CM7. I followed the CM kernel compilation guide, but to no avail. Would this most likely be due just to error on my part during compilation or configuration, or do I need to wait for LG to make their own 3.x kernel based ROM to derive the proper drivers?
Is it even possible at all to "upgrade" to a higher kernel version if the phone manufacturer has not done so themselves already? Thanks for any input!
Click to expand...
Click to collapse
Just ported this 3.1 kernel last night. I took the Linaro 3.1 Linux kernel, and integrated ashmem, pmem, binder, and lowmemorykiller.
http :// i271.photobucket.com/albums/jj141/landcruiserfjz80/kernel/2011-11-09_09-39-08_429.jpg
forcedinductionz said:
Just ported this 3.1 kernel last night. I took the Linaro 3.1 Linux kernel, and integrated ashmem, pmem, binder, and lowmemorykiller.
Click to expand...
Click to collapse
Care to upload it?
Theonew said:
Care to upload it?
Click to expand...
Click to collapse
It's for an OMAP3 platform. If you are looking to port a Tegra 2 BSP to a 3.1 kernel i'd be willing to help get it going.
forcedinductionz said:
It's for an OMAP3 platform. If you are looking to port a Tegra 2 BSP to a 3.1 kernel i'd be willing to help get it going.
Click to expand...
Click to collapse
That would be great! I've never considered Linaro before. From reading up on it, it seems to be an optimized kernel for ARM (and other mobile CPUs)? You might have to make a tutorial on how to customize your own kernel
hobbla said:
That would be great! I've never considered Linaro before. From reading up on it, it seems to be an optimized kernel for ARM (and other mobile CPUs)? You might have to make a tutorial on how to customize your own kernel
Click to expand...
Click to collapse
I'm about to deliver some Android changes to this tree. If you are serious about supporting Tegra2 please point me to your current kernel's source code. I'll begin porting the BSP and drivers.
https :// github.com/EmbeddedAndroid/linaro-android-3.1
forcedinductionz said:
I'm about to deliver some Android changes to this tree. If you are serious about supporting Tegra2 please point me to your current kernel's source code. I'll begin porting the BSP and drivers.
https :// github.com/EmbeddedAndroid/linaro-android-3.1
Click to expand...
Click to collapse
This looks great! Would you be including the Tegra 2 BSP and drivers into the embedded kernel? I (and any other Tegra device owners) really appreciate the help!
Here's the source for the device I have; LG G2X (P999) with a Tegra 250 (sorry about mediafire, LG doesn't allow hotlinking):
http :// www.mediafire.com/?9zt7suw7nivbr7o
If we wanted this to work on a Cyanogenmod based kernel, I guess you'd have to look at the Cyanogen Git. Here's the the P999 cyanogen git:
https :// github.com/CyanogenMod/android_device_lge_p999
You can look at getting set up with it easily here, I believe:
http :// wiki.cyanogenmod.com/wiki/Building_Kernel_from_source
Thank you for helping! If there's anything else I can help with, or resources you could post that would allow me to help you better that'd be great.
I am pulling down the sources now. It's been a busy week getting ICS up and running but now I have some time to play. I'll keep you posted on my progress.
How it's goin'?
forcedinductionz said:
I am pulling down the sources now. It's been a busy week getting ICS up and running but now I have some time to play. I'll keep you posted on my progress.
Click to expand...
Click to collapse
Sounds great! Again, if there's anything we can assist you with just let us know. Or, outlining the steps you're taking could allow us to help in the future
Sent from my LG-P999 using XDA App
Is everything OK?

[Q] How did your developers build a ROM when there isn't one from Samsung?

Hi.
I am a noob, not a techy
just curios - how can your devs build ICS roms when Samsung themselves did not build/create/honed/refined the Vibrant for Android 4?
What I am trying to ask is, how can your devs manage to control the hardware via android 4, if Samsung did not supply the codes/drivers/source?
Thanks
I'm not 100% sure but I think I read somewhere you can use the source code to build a ROM and then they used the Gingerbread bootloader/kernel and from there it's debugging.... again I could be wrong.
I think they took the source, and compile the source with the characteristics of the device. then applications that do not work, modified or exchanged for other versions of other rom, like the kernel, and other modifications, which is why the rom, there are many versions which fix bugs Version earlier after many users try it. (an example of this is the ICS Passion, which is now in its version 13)
Well passion is based on cm9. Which is aosp rom using source code android releases. Basically if you have drivers for hardware and a device tree you can use that source to build for any device.
Wherelse Samsung roms are usually not directly from source but just modded firmware from Samsung leaks. Oems do use close sources drivers though, usually better and get more out of hardware.
Sent from my SGH-T959 using XDA App

Android kernel how to make compatible with higher os? (+Where can I find the patch?)

Hello, I'm newbie dev trying to build CM13 for Lenovo Phab plus.
I think I'm almost finished with device and vendor, but I cannot figure it out what to do with kernel.
The circumstance is,
I have a stock kernel source which runs in 5.1.1 LP, with version of 3.10.49.
What I want is to make kernel compatible with 6.0.1.
I already know that linux kernel version doesn't have to be exactly same with new Android OS versions and I can just make a few patches in order to run kernel in higher OS.
So I googled and studied(?) for 2-3weeks, but got not many useful informations and I still cannot figure out where to find required patches for 6.0.1 .
So here's what I am not sure about.
1. I found that I can either upstream, merge, cherry-pick kernel sources from higher OS. For instance, if I merge kernel patches (starting from 3.10.50 to 3.18 step by step) and check if the kernel compiles successfully, is this a right thing to do? I am confused whether merging or cherry-picking is required for my situation.
2. I see lots of commits when comparing with other kernel sources in github. How do you find those kinds of patches? -> just keep compiling kernel and if error comes out->search->commit
Always this pattern goes again and again till boot properly?
3. i'm quite curious with backports. What i know is that "backports" are the files which is compatible for lower version kernels. For example, backported audio driver originally based on 4.9 can be used in kernels with version below 4.9. Is it right?
4. If there is an useful links, anything could be helped a lot.
THANKS IN ADVANCE.

Porting drivers to a clean kernel?

How can I port the vendor's kernel drivers for my model phone from their open-source kernel code to a clean kernel of a similar version number?
They are using 4.4.78 perf+ so presumably that would port to a generic android 4.4 kernel?
Is there any books or guides available to provide an overview of which parts of the android kernel get changed during development of a new model?
The reason I need to port the kernel source drivers to a clean kernel is because I cannot replicate the vendor's environment and have failed to make their source code standalone compilable - so it fails to build even some basic modules.
Bump - haven't found any info on how to work the Android Linux kernel in terms of the boot loader and drivers.
Bump!
Bump!

Categories

Resources