Questions !Questions !
What happened when I press power on button in my AndroidWhat happened when I press power on button in my Android
device ?device ?
What is Android boot sequence ?What is Android boot sequence ?
What is bootloader ?What is bootloader ?
What is Zygote ?What is Zygote ?
What is init.rc ?What is init.rc ?
What is System Server ?What is System Server ?
Boot Execution PathBoot Execution Path
Boot ROM
Boot Loader
Kernel
Init
Zygote
System Servers
hardware
boot.img, C & ASM, rootfs
system.img,
Android framework & apps
u-boot or different fork
Boot ROM & BootBoot ROM & Boot
LoaderLoader
Power ON
On chip ROM (during
CPU production)
Primary Boot
Loader
Secondary
Boot Loader
Hardware Init
Modem Image
Execution
Kernel Image
Download & Execution
1st
loaded from flash
(normally)/fastboot
KernelKernel
Nothing Special !Nothing Special !
Standard Linux Kernel ExecutionStandard Linux Kernel Execution
Hardware & Android Device DriversHardware & Android Device Drivers
Needed in recovery and system partitionNeeded in recovery and system partition
InitInit
Main entry point to AndroidMain entry point to Android
init.rc and other .rc configinit.rc and other .rc config
Initialisation and preparationInitialisation and preparation
Android framework initialisationAndroid framework initialisation
Environment properties setupEnvironment properties setup
Security setupSecurity setup
Mounting of different media partitionsMounting of different media partitions
System servers initialisationSystem servers initialisation
ZygoteZygote
Initialise duringInitialise during InitInit processprocess
service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-
serverserver
Registers server socketRegisters server socket
Preload Java classes from “preloaded-Preload Java classes from “preloaded-
classes” fileclasses” file
Preload native themes and layoutsPreload native themes and layouts
System ServersSystem Servers
System Servers written both as Native &System Servers written both as Native &
JavaJava
startSystemServer() methodstartSystemServer() method
Power Manager, Zygote, ActivityPower Manager, Zygote, Activity
Manager, Telephony Registry, BatteryManager, Telephony Registry, Battery
Service and many moreService and many more
Boot CompleteBoot Complete
ACTION_BOOT_COMPLETEDACTION_BOOT_COMPLETED
broadcast Intent will firebroadcast Intent will fire