4

Android users frequently use a lot of words with unclear meanings. In particular, they use these words a lot:

  • Framework / framework-res.apk: What purpose does this structure serve?
  • Flashing: What does this refer to?
  • ROM: What does this refer to?
  • Firmware: What does this refer to?
  • update.zip: This is an update package replaces files on your filesystem. What parts of the system can update.zip change?
  • Kernel: The kernels they talk about seem to persist across 'flashing' and 'resets' of the device.
  • Android Release: When someone talks about Android 'KitKat,' or 'Gingerbread' or '4.2.2,' what parts of the whole system are they referring to?
  • Custom ROM: What parts of the system do 'CyanogenMod' and other 'Custom ROMs' replace?
  • Titanium Backup: What parts of the system does Titanium Backup back up?
  • Factory Reset: If I wiped the internal storage (say, dd if=/dev/null of=<storage device>), what can it reset to!?

Here are some relevant terms that are publicly well-documented and known:

  • BIOS. When the system is powered on the BIOS initializes and does sanity checks on the computer's hardware and peripherals. The BIOS is 'firmware' and exists outside of the computer's normal storage. Even if the system was started with no mass storage, the BIOS would still be there. The BIOS runs a piece of software in the system's storage called the bootloader.

  • Bootloader. The bootloader uses and is itself a set of files on the filesystem, sometimes in the /boot directory. The bootloader (depending on the case) presents a list of options for how you want to proceed in starting the system.

  • Each option (usually) corresponds to starting a kernel with specific boot parameters. The kernel is a binary contained in a package file called vmlinuz (or similar) that resides somewhere on the filesystem (like the /boot directory). The kernel creates abstractions between hardware and software, like the hardware interfaces, filesystem abstraction, processes and threads.

  • Sometimes vmlinuz also contains some utilities that are put into folders like /sbin. Things that are in vmlinuz cannot be modified without repackaging a new vmlinuz file, and replacing the old one.

  • The kernel loads kernel modules which do various things and are sometimes drivers. Some kernel modules are built into the kernel's binary file and some are separate files on the filesystem, sometimes in the /usr/lib/modules directory.

  • The kernel also starts a program called init which is in a location that is sometimes specified in the boot parameters. init mounts mass storage devices to directories and starts a bunch of programs. These programs are on the filesystem and usually have all their files in /usr. They are called the system's userland.

  • In Android, there is a Java-like virtual machine called Dalvik which is started by init, which is what most programs run within.

  • Rooting: Rooting a device allows users to grant themselves root permissions.

  • To simplify managing all the software on the system, a system usually has a special program called the package manager which can manage, update and install sets of related files as `packages' corresponding to individual development projects. Android's interface to its package manager is the Application Manager in settings. Applications are available for download via the Play Store

  • Home Folder: Users have a directory in /home where all their files are stored (including local configuration settings for applications).

  • Recovery: a separate userland which the bootloader launches that only does system related tasks. You get to it by restarting your device while doing a special dance with the buttons.

4
  • 1
    It doesn't have enough to answer your question here, but this previous question has more info on some of the terms you're asking about: What is the difference between: Rooting, Jailbreak, ROM, Mod, etc.?
    – GAThrawn
    Dec 22, 2013 at 0:59
  • 1
    I'm proposing that this become a community wiki, to solidify the definition of the terms included here. I'm not sure this has a definable QUESTION, except as a dictionary.
    – wbogacz
    Dec 22, 2013 at 1:43
  • That sounds good. Is there any way I can change it to community wiki myself? Dec 22, 2013 at 2:22
  • I've posted a community wiki answer. It's pretty sparse now and only touches on the very basics. Also, I'm not sure what the OP means by "Framework" in this context. Perhaps if we had more information, we can add that to the wiki answer as well. Edit away!
    – dotVezz
    Dec 22, 2013 at 3:01

1 Answer 1

6
  • Root: As you understand, "root" in this context refers to the ability to grant a user the privileges of the root user. It's similar to installing sudo on a linux box (but Android root uses su, so there's that fundamental but small difference). We have a tag-wiki for it which has more information: .

  • Flashing: In the world of embedded systems, mobile computers, microprocessor-based development, and other technologies that led to modern smartphones, to "flash" something is essentially to copy files to a device. The etymology goes deeper than that, and doesn't seem to have a specific single meaning, but in all practical terms, in the Android world, it's essentially a word that means "Replace system software" (But varies contextually).

  • Firmware: Firmware is actually a word that, in its original meaning, doesn't seem to apply to Android. However, the word has come to be synonymous with the Android OS when used in this context.

  • OS: This won't be any different from the term in other computing-related contexts. Android itself is an Operating System - and many other things. (For example, it's also a development platform, etc).

  • Bootloader: The bootloader standard used for ARM Embedded systems (like most modern smartphones) is indeed quite different from what we're used to on X86 and X86-64. Speaking in a practical sense, the bootloaders used on Android phones have the same job as grub or syslinux, they just work differently.

  • Recovery: Many Android devices come with support for a separate extremely basic piece of software, which is called "Recovery". It generally includes its own kernel, separate from the kernel Android runs on, and is limited in functionality. It is used to write to system partitions in order to perform actions like changing/updating the kernel, Android OS, or other modifications that can't be done while the Android system is in memory.

  • update.zip: OS version updates, patches, and many more things are often saved to a file called "update.zip". When Recovery Mode is started (booting to Recovery), it can be set to automatically load this file and install whatever it contains.

  • Kernel: The kernel used in Android is the Linux Kernel - Version 3.4 for most modern devices.

  • CyanogenMod: Cyanogenmod is a fork of Android which purports to maintain the "true" Android Experience. It is actively developed and supports many devices.

  • Titanium Backup: This is an app, available in the Play Store, which backs up applications and application data. It can, of course, also restore apps and data. It requires root access in order to do this.

  • Factory Reset: When performing a factory reset, the device does not erase the main filesystem. It restores it to a "factory" state - removing user settings, applications, root, call history, etc. You'll want to check the tag-wiki for for more information here.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .