Hello everyone, want to compile an Android kernel on your own? Than why not begin doing it so by following the simple guide below?
This will install required packages for kernel compilation. Now last thing, we need tool chains for compiling kernel. You can get it from here: https://github.com/crossfire77/Android_Toolchains Download it and extract it somewhere. Then, We have to setup path of our tool chains, so type this in terminal:
It will open one document, then put this codes at the end of it.
Now we are done with downloading and setting up things. Let’s move to next step!
1) Getting config file from your phone with the help of ADB:
This will pull your existing config file from your phone and put it in kernel folder. Now extract it,
So we have directly config for building our kernel.
NOTE: Many times users’ faces errors while connecting phone with computer via ADB, it’s mostly issue of a permission. There is two solutions for it.
1.) Using ADB as root user: $sudo -s $ adb kill-server $ adb start-server $ adb devices And you will see your device now in terminal, it is a temporary solution meaning you have to do every time you connect your phone.
2.) Solve permission problem permanently:
Open terminal and type this: $ sudo gedit /etc/udev/rules.d/51-android.rules and copy content from this file, http://goo.gl/bldQS9 In this file, please replace “crossfire77” with your username.
Now last thing to do is, giving executing permission to file, and we are good to go.
2) Getting config file from kernel source code:
This part is little tricky. For this you have to have little knowledge about your device chipset number. In kernel source code there are lots of config files so from your chipset number you can find your config file. As example, My device is HTC Wildfire S and it has MSM7227 chipset so I can find its config in mentioned path: arch/arm/configs/msm7227_defconfig
So now just type this code in terminal:
It will create .config file from your existing chipset config and then we are good to go. As I told you before you need to have little knowledge about your device chipset then you can able to tell what is your correct config file, so be careful while doing this step. Everything is done now so shall we start building?
4) Building:
Type this in your terminal,
It is main command for compilation and here X can be replaced by
maximum numbers of jobs your computer can handle simultaneously. For
ease just enter the twice number of your cores. Ex. If your computer has
two cores enter four.
NOTE: Please do not enter high number or your computer will explode due to overheating.
It will take around ~15-1 hour as per your computer hardware specs.so keep sit down and keep patience. After completing this procedure we will have our zImage (kernel)! Let’s create one working directory:
Now, we will copy our zImage to our working directory:
Next step, modules (modules builds with kernel and we need it for Wi-Fi and etc. as per your device requirement)
So we are done with the main part, now last step to make flash able zip out of this to flash our kernel.
5) Making Flashable Zip: We are done with compiling and building task and at the end we have our zImage (kernel) and modules. Now time to flash it to your phone, for it we have one very easy method, “any kernel updater” by koush. So download this file from here: http://goo.gl/mQpHhC
So, this was all about compiling an Android Kernel. Share me your any doubts or acknowledgements if you have.
Have fun compiling Android Kernel.
1) Setup Environment:
First you will need these things,- A Linux PC (32 bit will work for compilation of kernel)
- Basic knowledge of using terminal in Unix based operating system
- Few packages for compilation
- Tool chains for compilation
- Kernel source code
- Patience :p
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 git
This will install required packages for kernel compilation. Now last thing, we need tool chains for compiling kernel. You can get it from here: https://github.com/crossfire77/Android_Toolchains Download it and extract it somewhere. Then, We have to setup path of our tool chains, so type this in terminal:
gedit .bashrc
export PATH=${PATH}:path/to/toolchain/folder/arm-eabi-4.4.3/bin
Now we are done with downloading and setting up things. Let’s move to next step!
2) Download Source Code:
Kernel source codes are under GNU GPL open source license so vendors (ex. Sony, HTC, Samsung, LG) have to release it. You can find your appropriate kernel source code from mentioned websites:- For Sony: http://developer.sonymobile.com/
-
- For Samsung: http://opensource.samsung.com/
-
- For HTC: http://www.htcdev.com/
-
- For LG: http://www.lg.com/global/support/opensource/index
3) Getting Config file:
Now this is where you should put your focus. For building a kernel you need config file. There is two ways for it:- You can either get it from your phone with help of ADB (Android Debug Bridge) or
- You can get it from your kernel source code.
1) Getting config file from your phone with the help of ADB:
- First of all connect your phone to your computer.
- Then type the mentioned code below:
adb pull proc/config.gz ~/home/crossfire77/kernel
zcat config.gz > .config
NOTE: Many times users’ faces errors while connecting phone with computer via ADB, it’s mostly issue of a permission. There is two solutions for it.
1.) Using ADB as root user: $sudo -s $ adb kill-server $ adb start-server $ adb devices And you will see your device now in terminal, it is a temporary solution meaning you have to do every time you connect your phone.
2.) Solve permission problem permanently:
Open terminal and type this: $ sudo gedit /etc/udev/rules.d/51-android.rules and copy content from this file, http://goo.gl/bldQS9 In this file, please replace “crossfire77” with your username.
Now last thing to do is, giving executing permission to file, and we are good to go.
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules $ sudo service udev restart
This will solve your problem with ADB and FASTBOOT while connecting through them your phone with computer. 2) Getting config file from kernel source code:
This part is little tricky. For this you have to have little knowledge about your device chipset number. In kernel source code there are lots of config files so from your chipset number you can find your config file. As example, My device is HTC Wildfire S and it has MSM7227 chipset so I can find its config in mentioned path: arch/arm/configs/msm7227_defconfig
So now just type this code in terminal:
make ARCH=arm CROSS_COMPILE=arm-eabi- msm7227_defconfig
It will create .config file from your existing chipset config and then we are good to go. As I told you before you need to have little knowledge about your device chipset then you can able to tell what is your correct config file, so be careful while doing this step. Everything is done now so shall we start building?
4) Building:
Type this in your terminal,
make ARCH=arm CROSS_COMPILE=arm-eabi- -jX
NOTE: Please do not enter high number or your computer will explode due to overheating.
It will take around ~15-1 hour as per your computer hardware specs.so keep sit down and keep patience. After completing this procedure we will have our zImage (kernel)! Let’s create one working directory:
mkdir kernell
cp arch/arm/boot/zImage kernell
find . -name '*ko' -exec cp '{}' kernell \;
5) Making Flashable Zip: We are done with compiling and building task and at the end we have our zImage (kernel) and modules. Now time to flash it to your phone, for it we have one very easy method, “any kernel updater” by koush. So download this file from here: http://goo.gl/mQpHhC
So, this was all about compiling an Android Kernel. Share me your any doubts or acknowledgements if you have.
Have fun compiling Android Kernel.
No comments:
Post a Comment