So the phone manufacturer has provided kernel source and lets assume that it compiles and deploys fine.
What are the steps to upgrade the kernel to a newer version?
Lots of threads that I read suggest looking for another kernel that is based on a similar device and using that.
However, what happens if there is no similar device?
What steps do you take to upgrade a kernel in this case?
Would I just find the equivalent base in the android kernel source and git diff and patch each commit until I got to the version I wanted then try to fix any compile errors?
I can't seem to find a thread with the actual fine details of the kernel upgrade process.
I didn't get round to upgrading my kernel.
Does anyone have a developers guide on the steps to update your kernel source code?
Related
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).
Hi all devs for P7510:
I'm following guides all over the place in my attempt to learn a thing or two by building AOSP ICS (specifically the 4.0.4_r1 branch) from source. I know that Google states building anything other than master on a version of Ubuntu higher than 11.10 is experimental and not really supported - seen many Google Groups threads indicating this. I've been able to patch and fix some of the errors that I'm seeing, but others that I'm searching for are answered with links back to the AOSP website where it's simply saying building anything other than the master branch on Ubuntu 12.xx is not officially supported.
I am getting ready to re-do my dev environment with Ubuntu 10.04 to see if that really does make a difference somehow, but had a couple of questions that I'm hoping someone can answer as I get ready to try again.
1) Has anyone out there built AOSP 4.0.4, from a branch other than master, successfully for the P7510 device?
2) If so, with what version of Ubuntu/Linux and were there many errors encountered when compiling that required fixes via manual code revision rather than simply applying a missing dependency or toolchain fix?
I've searched high and low and it's proving particularly difficult to find info on whether or not someone has been able to build a non-master branch of AOSP ICS 4.0.4 for this particular device. I know I could just abandon it and try to build JB or something instead but really want to see if I can pull this off. Hoping someone out there can help me out!
Update: I was able to complete a build today!! Please disregard the questions, self answered.
Sent from my GT-P7510 bleeding CM10 inverted awesome
I have a LG P350 which development has stopped but i want to keep it updated, i have my computer ready for building, also i have kernel sources, Cyanogenmod 11 and 10.1 sources too, (I don't know exactly if 10.1 sources could help) and i know that i need to apply patches to work on Armv6 but i don't know how to apply them to the source code, also i don't know if i would just need the pure source code to build or i need to do more modifications to it and finally, i don't know if the rom would work with 2.36 kernel which it's the most stable one for this device, i'm very new in this but i know that i can keep update my little phone, thank you all in advance for help.
DiegoConD said:
I have a LG P350 which development has stopped but i want to keep it updated, i have my computer ready for building, also i have kernel sources, Cyanogenmod 11 and 10.1 sources too, (I don't know exactly if 10.1 sources could help) and i know that i need to apply patches to work on Armv6 but i don't know how to apply them to the source code, also i don't know if i would just need the pure source code to build or i need to do more modifications to it and finally, i don't know if the rom would work with 2.36 kernel which it's the most stable one for this device, i'm very new in this but i know that i can keep update my little phone, thank you all in advance for help.
Click to expand...
Click to collapse
Hello, looking at your situation here is what I can conclude. First off you will need to change things for building on ARMv6 architecture, check this out for example. But your biggest problem will be that Android 4.0+ uses Linux kernel version 3.0+, and with the 2.36 kernel you have a lot of things will be broken and need fixing. That being said if your up for the challenge for it cause that's what were all about .
shimp208 said:
Hello, looking at your situation here is what I can conclude. First off you will need to change things for building on ARMv6 architecture, check this out for example. But your biggest problem will be that Android 4.0+ uses Linux kernel version 3.0+, and with the 2.36 kernel you have a lot of things will be broken and need fixing. That being said if your up for the challenge for it cause that's what were all about .
Click to expand...
Click to collapse
Well, i got this http://forum.xda-developers.com/showthread.php?t=2144790 that is the most similar phone talking about hardware, it has 3.0 kernel working well so i thought i could port it, i found this http://stackoverflow.com/questions/15961306/porting-kernel-from-another-device so i think i would have less problems due hardware similarities (Look here http://www.gsmarena.com/compare.php3?idPhone1=3516&idPhone2=3735 ) so, if i have cm11 pure sources, i add this kernel sources and some patches i would have it booting? Sorry for this very dumb question but, i didn't get at all about the armv6 part, how to apply patches, which i would need and all that, i really want to learn about this so thank you for this answer and the next ones :good:
DiegoConD said:
Well, i got this http://forum.xda-developers.com/showthread.php?t=2144790 that is the most similar phone talking about hardware, it has 3.0 kernel working well so i thought i could port it, i found this http://stackoverflow.com/questions/15961306/porting-kernel-from-another-device so i think i would have less problems due hardware similarities (Look here http://www.gsmarena.com/compare.php3?idPhone1=3516&idPhone2=3735 ) so, if i have cm11 pure sources, i add this kernel sources and some patches i would have it booting? Sorry for this very dumb question but, i didn't get at all about the armv6 part, how to apply patches, which i would need and all that, i really want to learn about this so thank you for this answer and the next ones :good:
Click to expand...
Click to collapse
The best way to start is use the ARMv6 branch of Cyanogenmod 11, replace the CM 10.1 in the previous linked build guide with cm-11.0 ("repo init -u git://github.com/androidarmv6/android.git -b cm-11.0"), and then to direct the build to use your kernel take a look at this guide on integrated kernel building with Cyanogenmod.
I'm a noob in building kernels and since nobody else is trying, i'm trying to build a custom kernel from source .111 using this guide:
http://forum.xda-developers.com/android/software/ultimate-guide-compile-android-kernel-t2871276
I'm stuck at step 5, where i'm supposed to find a defconfig file for m4 aqua(tulip) but i can't seem to find it, can anyone help?
The defconfig is msm-perf_defconfig
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.