Overview of Modding
This document is intended to help new (and experienced) users understand what they are doing and why they should 'hack' their devices.
Modifying an Android device is not particularly difficult, however, it does require precise steps that must be followed exactly. This can be confusing to a lot of people, especially if they are not particularly tech savvy. This page tries to remedy that problem by explaining some of the core concepts and terminology.
Contents |
RAM, Flash memory and the SD card
To start with, it helps to know that most Android devices have three kinds of storage: RAM, internal flash memory, and removable storage on an SD card.
RAM is very fast, read-write, and volatile - it forgets everything when the device is turned off. This is the 'short term' memory that the device uses when it's 'thinking' or processing. For programs to run, they must be copied or 'loaded' from the flash memory into RAM Memory. When a program is closed, it is removed from RAM to make room for other programs. For more info on RAM, please see Wikipedia:Random-access memory.
Flash memory, also known as NAND memory, is nonvolatile - keeping information even when the device is off. Flash memory in the device is equivalent to the hard drive in a computer. This is where the device's operating system (sometimes called firmware) and applications are stored. Flash memory is slower than RAM, but is (almost always) faster than SD cards. For more info on flash memory, please see Wikipedia:Flash memory.
The SD card is normally dedicated to the bulk of a user's storage, such as pictures and music. It is the slowest type of memory and is not typically used to store applications or other data that needs to be accessed quickly or frequently.
Partitions and ROM
Partitions
Android devices have their internal flash memory divided into partitions. Think of a partition as a room in a house. Just as each room might have a specific purpose, each partition has a specific purpose.
Common Partitions
- NOTE: Some devices may contain different partitions. The ones listed below are usually the most common.
- splash1: This partition contains the very first image you see when you turn on the device. Nothing more, nothing less.
- boot: This partition stores the kernel. The kernel can be thought of as the "core" of the device's software. It is what allows the hardware to "talk" to the software, and vice versa. It also controls other aspects of the operating system on the device, such as what file formats the device is able to support.
- recovery: This partition holds the device's recovery software, which gives the user access to special functions, such as upgrading the operating system, or making a backup of the device's software.
- system: This is the main partition where the device's essential software, or Operating System, is stored. When CyanogenMod is installed, it is installed to the system partition. Generally speaking, this partition is write-protected, and only able to be modified under special circumstances.
- cache: This partition stores temporary files. Generally, files on this partition are not critical to the operation of the device.
- data: This partition is where all of your data is stored. If you download an app from the Android Market, it goes here. If you change a setting, that change is stored here. If you receive a SMS, it is stored here.
ROM
The term "ROM" has multiple uses in the Android world, and it gets misused a lot.
Technically, ROM stands for Read Only Memory, which - as it says - means that you cannot write to it, it is read only - like a DVD.
The reason it gets confusing is because manufacturers refer to the system partition (see above) as ROM because they do not intend for the user to write to the system partition. So, even though it is technically writable, it is sometimes referred to as ROM because of the way it is designed to be used. To make things worse, modders use ROM as a shorthand for "ROM image". In other words, the files that you put in the system partition are also referred to as ROM sometimes. Thus, you'll hear people say "flashing a ROM".
Example: You can flash a ROM onto the ROM, which isn't really ROM, anyway. As this sentence demonstrates, it is important to be able recognize this term and understand what is meant from context.
Root
Like ROM, root can mean several different things, depending on the context:
- 'root' is the name for administrator in Android and other Unix based systems.
- 'root' also means having administrator powers.
- 'root' is the lowest level one can go in a file system. In other words, it is / in Linux or C:/ in Windows.
- 'rooting' is the process of acquiring root (or administrator) privileges on the device.
Example: You need to root the device so that you can have root access to the root of the file system.
Should I root my device?
Pros
There are many answers to this question, and each person you ask might give you a different answer. Ultimately, it comes down to control - being able to do whatever you want to the device whenever you want. Some common reasons to root are:
- Remove unwanted programs installed by your carrier
- Receive more frequent security updates
- Having access to the most current version of Android available
- Most carriers take months to update to the latest version of Android, whereas rooted devices usually receive updates within days or weeks
- Better performance
- Extra Features
Cons
Once again, the answer you get about cons will vary depending on who you ask, however, common concerns are:
- Limited or voided warranty after rooting
- This is very rare. Almost all carriers will honor the warranty even if the device is rooted
- Security Issues
- Custom ROMs could contain malicious code - though to date, no such incidents are known of
- Stability Issues
- Custom ROMs tend to be experimental and could cause stability issues, however CyanogenMod has proven time and time again to be more stable than most 'official' ROMs