Kernel Development – Part 1

First, a little background. A few days ago I bought a very interesting device, the Cherry Mobile Flare. I won’t post specs but if any of you’re interested, it’s a re-brand of the Karbonn A9+. Anyways, a few days into using this device, I find the current kernel to have quite a huge potential if modded. Maybe adding new IO governors, new compiler, etc. Unfortunately, the source code for the kernel is still unavailable as of the writing of this post. So what is a motivated kernel dev to do? 😀

Firstly, we need to know the basic command capabilities of the device. Namely the ff:

Since our device is already rooted, we can check adb functionality already on the list.Now we try whether we can boot to the bootloader and if so, connect via fastboot by executing:
adb reboot bootloader

In this case, it boots successfully to bootloader. If you’re on a windows machine, you’ll find that the device becomes unrecognized again. This is because the fastboot interface requires a different driver which can also be found with the drivers you used in installing the ADB interface driver. Once, you install it, it should be recognizable in fastboot using the ff. command:
fastboot devices

Now we’ve checked both adb and fastboot functionality on our list. Since fastboot actually works, this saves us a lot of time with trying to find a way of either flashing or booting test kernels when we actually have one. The next part of this post will detail how we can obtain the current boot.img and recovery.img from the device.

Kernel Development

In the next few posts, I’ll be discussing about the steps I’m taking in creating a kernel mod for my newest device, the Cherry Mobile Flare. This device is based on the Karbonn A9+ model. I’ll also be skipping on the steps on how to get root privileges on the system as this could vary between different devices, firmware versions, etc. Stay tuned! 🙂

Android Rooting

In Android, rooting is the act of giving an android device the ability run applications on a superuser level. This gives the application the ability to make changes to the system level. Things like deleting or adding applications on the system partition of the device, flashing a modified recovery (thus enabling flashing of custom ROMs), and modifying things on the kernel like CPU governor settings (how the CPU changes frequency), scheduler (how the kernel “schedules” tasks to run on the processor) and many more can now be done. However, an inexperienced user with a rooted device has the potential to “brick” a device (render it unusable). In my experience, starting from ICS, users have little to gain from rooting their devices (unless you’re a developer of course) since it already integrates many things on the OS level. Thus rooting an android device should only be done based on the need to do so. Your thoughts?


I started this blog to serve as a site for assorted facts which I know and would like to share with other people. It may discuss mostly about tech but I could dabble in other things like gardening, cooking, etc.