Jump to content

How to build the kernel for your Honor 5C


Guest PaulOBrien

Recommended Posts

Guest PaulOBrien

Huawei have helpfully released the kernel source for the Honor 5C on their download site. Impressively, the version posted there (3.10.90) actually matches the current release build (B102). However, the download itself is only part of the puzzle - it's important to then know how to compile it and use it. Hence this guide. :)

This guide refers to building on Linux. You can probably build on OSX or whatever too but seriously, it's less pain in the long run to spin up an Ubuntu VM.

Here's a step by step on how to build the kernel! I strongly recommend building stock first and testing that works for you, then you can start adding your tweaks in. I'm interested to hear what you add / change!

  1. Open a terminal window on your Linux machine / in your Linux VM. No GUIs here. :) Change to the directory where you want the kernel / toolchain to live.
  2. First of all, we're going to clone the toolchain from AOSP. 
    git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9
  3. Next we're going to clone the kernel source itself from my git repo on bitbucket. 

    git clone https://gitlab.com/paulobrien/android_kernel_honor_5c.git -b stock kernel
  4. We need to add the toolchain location to the path. 
    export PATH=$(pwd)/aarch64-linux-android-4.9/bin:$PATH
  5. We need to specify that we are cross compiling for arm64. 
    export CROSS_COMPILE=$(pwd)/aarch64-linux-android-4.9/bin/aarch64-linux-android-
  6. Let's create a directory for our output to go in to. 
    mkdir out
  7. We've got the kernel downloaded, so let's change to that directory so we're ready to go. 
    cd kernel
  8. A bit of cleaning up before we get started.
    make ARCH=arm64 O=../out mrproper
  9. Specify that we're building for the 5C.
    make ARCH=arm64 O=../out 5c_extracted_defconfig
  10. And build it! 
    make ARCH=arm64 O=../out -j8

When this process completes, we can check the '../out' directory and you should find the file arch/arm64/boot/Image. This is the kernel that you've just built! You can't flash it as is though, you need to put it into a boot image first. 

Here's how you do it...

  1. Change out of the kernel directory back to its parent.
    cd ..
  2. Download tools for manipulating the boot image.
    git clone https://github.com/xiaolu/mkbootimg_tools.git
  3. Download the stock boot image (actually we're using the root ready version for convenience).
    wget -O boot.img http://nigella.modaco.com/files/boot.policypatched.h5c.b102.img
  4. Extract the boot image. 
    mkbootimg_tools/mkboot boot.img boot.extracted
  5. Copy the new kernel into the extracted boot folder.
    cp out/arch/arm64/boot/Image boot.extracted/kernel
  6. Build a new boot image.
     mkbootimg_tools/mkboot boot.extracted boot.newkernel.img

You now have a new boot image (boot.newkernel.img). All that's left is to flash it to your device! Reboot to bootloader (either using 'adb reboot bootloader' or by powering on with volume down held), flash using 'fastboot flash boot boot.newkernel.img' and then reboot using 'fastboot reboot'. Job done! In the About screen of settings you should see the date of the new kernel and details of your build machine.

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.