In past we have written a few posts about cyanogenmod and custom roms but didn’t give a full overview on what they exactly are. So here I am trying to answer a few questions that were raised.

Let me start with the basics.

What is Android?

In a layman’s term, Android is operating system that runs on primarily on mobile platform (Cellphone/tablets). It certainly is not the hardware that you get when you purchase a phone.

Architecture of Android

Before I go in depth about ROM and Super User, let me tell you a little about the architecture of android. For any computational device to work there needs to be certain element which interacts with the hardware. Hardware alone can’t do a thing unless it is directed to. This direction/interaction with the hardware is done through the innermost layer of the operating system known as kernel. The Kernel inside android is a fork of present day Linux Kernel. The layer above kernel is what gives the kernel instruction to perform specific tasks. For instance if your click on the browser icon on the launcher, the input is interpreted by kernel (as it interacts with hardware) but what to do with this input is understood by the next layer, which is application. In this case the launcher. So the question is how does launcher work? It doesn’t directly work with kernel, instead there is an intermediate called Dalvik Virtual Machine which runs these applications. If you are familiar with Java you will understand this quite easily, but if you don’t get it don’t bother. In short, hardware interacts with kernel which interacts with Dalvik virtual machine which interacts with applications, and all these together combined is called ROM (why, I will explain it next).

ROM, RAM and Firmware

ROM stands for Read Only Memory, there are many kinds of ROM, some which can be erased, some that can be programmed. ROMs are used to store the entire stack that I mentioned above. Whole Kernel, DVM and Applications are stored in these ROM, hence the name. There is quite a difference between ROM and RAM so don’t get confused. On one hand ROM is like a permanent storage, RAM is the temporary storage. It stores the run time data that is generated during processing. And, if you hear someone say something about ‘firmware’ don’t get confused because ROM and Firmware are almost the same.

What is Rooting? Who is a Super User?

If you are an avid ‘Linux/Unix’ user then I don’t need to answer these, but for others let me put it this way. If you have read till now you would realize that Linux Kernel is in the heart of this device. So all the inherent features of operating system would be same as Linux. Therefore which is the one user which can do anything/everything on a Linux system? The answer is Root aka super user, and hence the term rooting. Rooting gives you the rights/permission to do certain tasks on android which has inherently been blocked by the handset makers for both simplicity and security of the device. You might have noticed that when you install any application from android market, it asks for certain permissions. Similarly there are some applications which require system level permissions for them rooting is required. There are different ways to root android (depending on the version), but we will not deal with them here.

Flashing the ROM

As you might know, Android is an open source initiative and anyone can go ahead and build his/her own custom operating system for their handset. There are numerous developers working on building their own versions of Android. One of them that we mentioned previously is known as Cyanogenmod. There are many such ROMs built for many different devices, and process of installing these on the handset is commonly knows as flashing. The process of flashing varies from handset to handset and ROM to ROM. It isn’t a difficult task, but certainly requires lots of research. I think this should be enough for the basics, though you should know about some common terms used in relation to android.

Deodexed – If you are new to flashing and modding, don’t bother with this one. It is for those who venture a little deep into it. And if you are really interested in knowing what exactly it is you read about it in this excellent article at Partitions – Don’t get confused when someone says ‘ROM partitions should be ext4 or Reiserfs’. Partitioning is dividing the internal memory of the handset, and ext4/reiserfs are the file systems. Like in case of Windows, fat32 and ntfs. Bootloader – Again, if you are linux user I don’t need to explain you this, but for the ignorant ones, bootloader is what loads the kernel into the main memory so that it can interact with hardware. I won’t go deep into how it works, but would point out that the moment your device starts the first thing that comes up after powering on is Bootloader, which loads the modules of kernel in memory.

Ok enough of complex stuffs, let me tell you about the applications you might need if you think of flashing.

Odin – Its a Windows application which interacts with the device at hardware level and can write on ROM (Read only memory) of the handset. CWM – Clockwork Mod is an application installed on android device that manages the ROM(the stack) installed in the system. It can be used to install or backup the roms.

This is more than enough information for one read. If you wish to know more about your handset post your queries here and I will guide you to right place. Also for most of HTC/Samsung/Motorola phones the best place to venture is XDA Forum. The objective of this post was to let you know more about Android. I have not discussed the advantages and disadvantages of custom roms or rooting, but then again I said it requires a lot of research. Just a little help to your research, read this article.