Android Booting
The bootup of an Android system consists of several phases, which are outlined here.
Contents
Device-specific startup
- firmware/bootloader
- On the ADP1, there are multiple versions of the bootloader
- kernel
- mount root file system
Generic startup
- run /init
- process /init.rc
See the [Android init language reference]
Sequence of boot steps on ADP1
firmware
- first-stage bootloader runs
- it detects if a special key is held, and can launch the recovery image, or the 'fastboot' bootloader
kernel
- kernel is loaded
- kernel boots
- core kernel initialization
- driver initialization
user space
- user space starts
- kernel runs /init
- /init processes /init.rc and /init.rc.<machine_name>
- activity manager is run
- dalvik VM is started (zygote)
- kernel runs /init
- activity manager starts core applications
- com.android.phone - phone application
- android.process.acore - home (desktop) and a few core apps.
- other processes started by /init:
- adb
- mediaserver
- dbus-daemon
- akmd
Tools for analyzing Android Bootup
- Bootchart - see Using Bootchart on Android
Notes on the Android startup procedure
Overview
See "Android Initialization Process" at: http://blog.chinaunix.net/u2/85805/showart_1421736.html
strace
http://benno.id.au/blog/2007/11/18/android-runtime-strace
Interaction of different processes on application initialization
Talking about Android Process - http://blog.csdn.net/mawl2002/archive/2009/06/24/4295905.aspx