[TUTORIAL] Everything You Need to be a Kernel Dev - Android Software/Hacking General [Developers Only]

Welcome everyone, I was asked by a friend from my old slice of XDA to write kernel tutorials on everything I know about them. So, here we are!
First, you MUST learn C coding. It is not hard, once you begin; XDA Senior member mhrsolanki2020 has written a tutorial for it here on XDA.
So now that we know C, lets try basic step one. We need to compile it!
Go to this tutorial I have written here to learn how to do that. To compile a kernel for your device if you don't own the one v just get your own source, and then use your own defconfig. You will be golden from there.
What do we plan on teaching
Compiling of the source
Making a boot.img for your device
Use fastboot to test your kernel
Debugging the kernel
Using ADB to your advantages
Trick of the fastboot-fu
All about a ramdisk
Adding drivers
More?? You tell me

RESERVED

Reserved for tools

Related

Compiling Android + Kernel from Source.

Hi there,
Now, I understand that there's a thread or two and a few web pages directed at compiling Android and its kernel from source.
However, the thread in question is months old, and didn't fully explain the process.
As for the web pages, they are mostly outdated and don't include enough information, not to mention desire specific instructions.
I think that, properly explained, building Android shouldn't be daunting, and everyone should be able to attempt it, if they wanted to.
So, I hope to compose a comprehensive guide on how to do just that.
The problem is that I myself have not been able to put enough instructions together to be able to complete a build. And there is no point digging up old threads.
So, If anyone who knows the ropes (that is, compiling android and a kernel from source) would be willing to lead the way, I'd happily turn it into an easy to understand guide.
Josh.
fllash said:
Hi there,
Now, I understand that there's a thread or two and a few web pages directed at compiling Android and its kernel from source.
However, the thread in question is months old, and didn't fully explain the process.
As for the web pages, they are mostly outdated and don't include enough information, not to mention desire specific instructions.
I think that, properly explained, building Android shouldn't be daunting, and everyone should be able to attempt it, if they wanted to.
So, I hope to compose a comprehensive guide on how to do just that.
The problem is that I myself have not been able to put enough instructions together to be able to complete a build. And there is no point digging up old threads.
So, If anyone who knows the ropes (that is, compiling android and a kernel from source) would be willing to lead the way, I'd happily turn it into an easy to understand guide.
Josh.
Click to expand...
Click to collapse
I followed this guide here and successfully compiled a modified HTC Kernel and I had very little Linux and Android experience.
Obviously instead of cloning the Cyanogen git, you just use the gits you wish to compile
Mekrel said:
I followed this guide here and successfully compiled a modified HTC Kernel and I had very little Linux and Android experience.
Obviously instead of cloning the Cyanogen git, you just use the gits you wish to compile
Click to expand...
Click to collapse
Thanks for the link
Though i don't fully understand the whole 'git' thing. Where do i find them? And how to i know which ones are the ones i want to use?
Josh
EDIT: Also, how do you 'edit' the kernel (i imagine it is somewhat like make menuconfig?). Also:
- Are these sense kernels?
- How do you add modules like OC and UV?
fllash said:
Thanks for the link
Though i don't fully understand the whole 'git' thing. Where do i find them? And how to i know which ones are the ones i want to use?
Josh
EDIT: Also, how do you 'edit' the kernel (i imagine it is somewhat like make menuconfig?). Also:
- Are these sense kernels?
- How do you add modules like OC and UV?
Click to expand...
Click to collapse
A git is a repository for source code, developers upload their source code there and can commit changes. The commit can allow descriptions of what was changed and also details the files changed.
The git system allows other people to add to the source if they have permission, or allows others to read the changes and download the source code.
Git links are usually posted by people who release software, as Android is GPL licensed so people have to release their source code if they're distributing their work.
Editing the kernel, take a look into the git and the commits and it will show you which files were changed and how exactly they were changed. That will give you the best understanding.
UV/OC is done by changing the acpu table in the architectures files and changing the minimum/maximum voltage figures in the board_bravo.c file.
The Cyanogen kernels are not Sense kernels no, it's a modified Google Kernel.
Thanks for the explanation. I followed the guide and built the rom, and it works (always a plus )
Now, the next thing is the kernel. How do I build a kernel with the CM tweaks integrated? I understand that all i would be doing is rebuilding the same one that is already installed, but im doing it to learn.
So, if i synced the GIT, does that include the CyanogenMOD kernel source? If it does, where is it and how do i rebuild it. If not, where do i find it?
Thanks,
Josh.

[GUIDE] Custom ROM development for the rest of us [In Progress]

*** THIS IS NOT JUST ANOTHER EFFORT TO CREATE YET ANOTHER CUSTOM ROM***
Though Android is opensource, a lot of things are unknown regarding ROM development/modification. There are many custom ROMs available for Galaxy 3 (and also other phones) and lot of people are flashing them and making their phone more responsive, productive and faster; but very few people actually knew how to go about developing the ROM.
What I intend here is to find out and document correct way to build ROM for our favorite Galaxy 3, which is very popular in India.
The goal will be to develop the ROM from Android source + Drivers from stock ROM while documenting the process so that large number of people can contribute to the development.
I will shortly update the posts with what I have done.
Reserved
Can anyone help me convert system.img and userdata.img file into files flash-able by ODIN?
Thanks
Third post
Reserved for future use
Fourth post
Fourth post.. reserved
Fifth post
Reserved 5th post goes here...
looking forward to what you come up with
Making one aint difficult keeping it bug free might get sometimes
Thanks rudolf895
I have experience in Android SDK and NDK development, but I am a noob when it comes to ROM development. Thats why this effort.
I have fetched android source using repo as well as I have also downloaded source for I5801 from Samsung open source website. After this I will look into extracting drivers from stock ROM and successfully compiling it for Galaxy 3.
rudolf895 said:
looking forward to what you come up with
Making one aint difficult keeping it bug free might get sometimes
Click to expand...
Click to collapse
abhijeet.pathak said:
thanks rudolf895
i have experience in android sdk and ndk development, but i am a noob when it comes to rom development. Thats why this effort.
I have fetched android source using repo as well as i have also downloaded source for i5801 from samsung open source website. After this i will look into extracting drivers from stock rom and successfully compiling it for galaxy 3.
Click to expand...
Click to collapse
best of luck
Looking forward to it!
abhijeet.pathak said:
Thanks rudolf895
I have experience in Android SDK and NDK development, but I am a noob when it comes to ROM development. Thats why this effort.
I have fetched android source using repo as well as I have also downloaded source for I5801 from Samsung open source website. After this I will look into extracting drivers from stock ROM and successfully compiling it for Galaxy 3.
Click to expand...
Click to collapse
Do not fell shy to ask for help u need. Together we can make it better. We are with you whenever u need us.
ARMVK Dev Team
Thanks!
Thanks a lot for your support guys..
arunmcops said:
Do not fell shy to ask for help u need. Together we can make it better. We are with you whenever u need us.
ARMVK Dev Team
Click to expand...
Click to collapse
hehe, cant wait to see what you come up with, sounds promissing btw... i am also willing to help whereever i can, whereas this wont be too much in this case i guess.
good luck and thanx...
TY ..!
Thanx alot
This would be really helpful to alot of members here
interesting ! waiting ....
I applaud your thread, I myself was thinking about such a concept.
I wanna help, but I cant do that much (basic knowledge of C and basic/little knowledge of linux and adb).
I think first there should be a list of basic stuff. Like compiling the sources, extracting factoryrfs and co from your phone etc... Sometimes if you wanna start doing something and you dont know the basics you get scared off because of their apparent tremendous lack of knowledge.
I'd probably start dabbling if somebody told me how to compile the sources.
can you also specify your work environment, toolchain and such stuff, so anyone can start from zero? there is a kernel building vm image with all tools by sztupy somewhere on the forum that is eventually of interest, and there is also an extended version containing eclipse and some more tools for full android development:
http://forum.xda-developers.com/showthread.php?t=882010
hope this helps somebody...
Did you try using it? I think the scripts are specific and cant be used by us (without altercation)
no, i have absolutely no idea of kernel compilation and all that advanced stuff, but i guess it can be adapted for our use
Yup...me too in waitin line...Now i can say i dint made a mistake by buying it...
Sent from my GT-I5801 using XDA App
abhijeet.pathak said:
Can anyone help me convert system.img and userdata.img file into files flash-able by ODIN?
Thanks
Click to expand...
Click to collapse
maybe you can create a ".tar" package including all those files.. .tar is flashable in odin..

Dont know where to start

Hi every one I dont know where to start i want to make my own rom from source,build it,modify it etc.But i dont know where to start.I know how to build rom from source(learned it from the tutorial on source.android) but i dont know what do those codes mean.i searched on google but cant find an easy tutorial.If i build rom from source how do i make it work on my phone.How do i FIX bugs on my roms,modify it Help please
Check out the chef central section under android. There are a lot of great people working on making development accessible.
For a pure AOSP ROM you are going to have a bit more work, but be rewarded in the end. There is also cyanogenmod and other custom distributions you can build from source and modify.
If you are familiar with C and Java programming you can dig into the actual development more by writing apps or changing source code. If you don't you may want to start on that road. Other wise you will be basically cutting and pasting from everyone else, which doesn't get you any credit.
Themes are also a good place to start. There are lots of good guides in the theme section and people are willing to help if you ask nicely and appropriately.
I have done a bit of this foot work and come to the conclusion, I need to learn programming then come back to source. It is overwhelming to take on an entire operating system in a foreign language, especially when that language has to be perfect to function!
Good luck in your endeavors. Feel free to hit me up for the little knowledge I have!
Sent from my PC36100 using xda premium
But! where to learn
First i want to learn the basics of Rom
are you familiar with Java, C and C++? These are going to be very useful in understanding the "codes" as that is what they are written in. You are also going to have to build AOSP specific for your device, which will require adding your device to the device tree and extracting the necessary drivers and files that are specific to your device. Cyanogenmod has many devices already added to their github and you would simply clone the folder for your device, then build AOSP source and issue make using the device specific folder.
THIS is a helpful tool, and yes it will compile pure AOSP as well.
THIS is also a very helpful tutorial, and you can modify instructions to work for Gingerbread.
If you just want to learn to build and modify the source start with Cyanogenmod build from their source first. You can also build the kernel if you choose but that is a bit more complicated. After you have both of those building without errors then start making changes that you want to see.
The CM Wiki has some good info http://wiki.cyanogenmod.com/wiki/Building_from_source
http://wiki.cyanogenmod.com/wiki/Building_Kernel_from_source

[Question] Kernel Compilation for Modules

First post in the Dev section but this seemed to be the place to talk about kernel compilation and module development.
I have twice now, and am working on my third kernel compilation for the purposes of custom module building for the TF700 and the TF201.
The question I have has to do with the compilation process. Every time I have gone through this with the downloadable Asus Kernel zip I run in to several issues. Either missing references in code or portions that won't compile at all. Is this normal for kernel compilations? I would have thought that it would be fully compilable out of the box ( so to speak). Is it ASUS or just android/Linux in general that works out this way?
Is there a better way to do it? Should I use some generic source with the same version numbers? The current source is just not working at all. I am using an Ubuntu distro. Have the cross compile tools etc... but it just fails. I have already resolved two missing definition references and it just keeps on failing in new places
Hopefully this question doesn't offend developers. I have moved from WinPhone to here and want to better my understanding of how this should all work but need to start with some basics before I can make a meaningful contribution.
Thanks.
P.S... I looked and didn't find a "Compiling android kernels for dummies" book
hx4700 Killer said:
I looked and didn't find a "Compiling android kernels for dummies" book
Click to expand...
Click to collapse
"Dummies" doesn't write a book on kernel dev. Too wrapped up in telling people how to download iTunes.....
Use your "Google". And when you find it, Google XDA University.
There, you will find steps for setting a build environment and kernel and cross arm.
Understand, all kernels are different, but a good place to start. Plus, you learn how to use Google. An added bonus.
Oh... and... as an extra bonus, I will move this to Q & A, as this post has no development work attached. :silly:
MD
My question wasn't HOW to cross compile. I have done it.
My question is WHY are there so many errors that need correcting when compiling the ASUS downloadable kernels and if this is typical of the source from any device or just ASUS?
hx4700 Killer said:
The question I have has to do with the compilation process. Every time I have gone through this with the downloadable Asus Kernel zip I run in to several issues. Either missing references in code or portions that won't compile at all.
Click to expand...
Click to collapse
I had to fix exactly one pair of quotes vs. angle brackets somewhere in the RIL - get the patch pack from my kernel and apply the ril include fix. Then it should compile. If not, you are doing something wrong.
Can you post any links or names of everything ill need to get started on cross compiling a kernel for my tf700t I download the source and get my config.gz and am running a ubuntu distribution but if you could post a link to a tutorial that has detailed instructions that will work for the infinity that would be greatly appreciated thankyou
alexcass4 said:
Can you post any links or names of everything ill need to get started on cross compiling a kernel for my tf700t I download the source and get my config.gz and am running a ubuntu distribution but if you could post a link to a tutorial that has detailed instructions that will work for the infinity that would be greatly appreciated thankyou
Click to expand...
Click to collapse
Step 1: Get a suitable ARM toolchain. I can't help you here with Ubuntu because I'm using Gentoo and their crossdev tool (http://www.gentoo.org/proj/en/base/embedded/handbook/?part=1).
Step 2: Cross-compiling the kernel works just as for native kernels (make menuconfig, make), but you have to pass parameters to each make, e.g. make ARCH="arm" CROSS_COMPILE="arm-gentoo-linux-gnueabi-" (or whatever your toolchain is called)
Step 3: For the TF700-specific blob stuff I have written a detailed tutorial here: http://forum.xda-developers.com/showpost.php?p=36925180&postcount=4

What is necessary if I want to compile a ROM?

Hi guys. 2 months ago I've came into Android World deeper than before and now I'm very fascinated. I downloaded linux, all the necessary files to compile a rom but I still don't understand some things.
My device is Redmi Note 2 and I use stock MIUI 7. As we all know mtk and/or xiaomi haven't released kernel sources (6795) so developers have to think hard how to make a rom. And there are my questions. Does kernel source is really necessary? What if I compile rom successfully and then port boot.img from stock? Will it work? However developers made some roms based on LP for this device. And I read that I need device tree and vendor, which doesnt exist for redmi note 2 or I still can't use github.
Second question which I have is: does compiling for 64 bit CPU differ from compiling for 32 bit CPU (like 6592)? If yes, could you give me some tips?
Ohh I think you can understand what I wrote
Thanks in advance and please dont blame me for silly questions
If you are looking to compile roms then you picked the wrong device to do it. They are the worst with kernel source. You can't completely compile a rom but use a patch system that does most of the work.
Yes it is different. There are some Tuts around but they are few as most don't use that type of chip.
If you really want to learn to develop then I would suggest getting a different device. One that respects the copyright and gpl laws.
zelendel said:
If you are looking to compile roms then you picked the wrong device to do it. They are the worst with kernel source. You can't completely compile a rom but use a patch system that does most of the work.
Yes it is different. There are some Tuts around but they are few as most don't use that type of chip.
If you really want to learn to develop then I would suggest getting a different device. One that respects the copyright and gpl laws.
Click to expand...
Click to collapse
Thank you for your advices. I have HTC desire 310 and I found the kernel sources. I know what I'll do in my free time
Monsterlevel said:
Thank you for your advices. I have HTC desire 310 and I found the kernel sources. I know what I'll do in my free time
Click to expand...
Click to collapse
To compile a rom u need kernel source, device tree and proprietary, bye

Categories

Resources