During my education I have been developing Android iOS apps and websites for almost 18 months. Now, as my final year project, I am working on Linux source code with the goal to boot it on a mobile device – like Android. I have it successfully as a Debian package following tutorials on the Internet. I am currently using Ubuntu.

I have a strategy but not sure if I am on the right track. It is as follows:


  1. Download Linux source code. Remove extra drivers, compile and install it on currently running Ubuntu and use it.

  2. Customize the code further and boot it as my own distribution. For that I'm following LFS.

  3. Specify a particular target mobile, modify the code for it, write drivers if I need any, not sure which one (that's why I'm here :) ), and boot the kernel on it.

I do not know whether my strategy is right or not. I'll really appreciate if someone can tell me:


  1. Am I on the right track? If not, what might be the right one?
  2. Do I need to specify a mobile and customize the kernel code for that one?
  3. Other than drivers, what else do I need to change in the kernel?
  4. Last but not the least: When I boot the kernel on a mobile device; am I going to have any interface or terminal there?

Sorry if my question doesn't make sense. I am a student and still trying to figure things out. I would be very thankful if someone could give me hints on what subjects to search for on the Internet.

Update: What I want is to confirm whether my strategy is correct or not. If not, then please just name the steps I should follow.

closed as too broad by Gilles, slm, jasonwryan, rahmu, user26112 Oct 11 '13 at 2:19

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • Why don't you try first and then ask specific questions when you run into problems? – rahmu Oct 10 '13 at 23:28
  • As I said it's my final year project, so trying it this way will take me too long, and if it didn't work I've to work again and I won't be having further time. So I'm looking forward if someone can put me on the right track from beginning. – Sikander Oct 11 '13 at 5:15

Wouldn't it be far easier to try and compile the Android Linux kernel first and not just the vanilla kernel from kernel.org? In principle this should be available for every Android device in the wild, since the kernel is GPL. If you can't get the kernel source for your target device, because the manufacturer is either clueless or a known GPL violator, your next bet is to download and compile the source code for a device with a similar SoC (Tegra 3, RK3188, etc).

Note that booting on a mobile device running a multitude of SoC designs is a far more iffy proposition than booting from a desktop or laptop with the familiar AMD or Intel CPUs. You're actually not even sure if you can even copy, or flash, the kernel into the mobile device (unless of course the mobile device is a laptop). So you need to research that as well.

So the first thing I would research is the target device. It's a good idea to choose a device that can boot off its external SD card, since in theory you can run Linux simply by copying your kernel and other OS stuff to the SD card. Other than this, choose a device with a working recovery partition that will allow you to flash the kernel to the appropriate boot partition. Such a device will effectively have two boot partitions, the Android boot partition and the recovery partition. So in case something goes wrong that renders your device unbootable, you can press a special hardware button combination on your device so you can boot to the recovery partition and return the device to a usable state.

Not the answer you're looking for? Browse other questions tagged or ask your own question.