Android Boot Process Last Updated : 13 Aug, 2019 Comments Improve Suggest changes 26 Likes Like Report Booting Process In computing, booting is starting up a computer or computer appliance until it can be used. It can be initiated by hardware such as a button press, or by software command. After the power is switched on the computer is relatively dumb, and can read only part of its storage called Read-only memory. There a small program is stored called firmware. It does power-on self-tests, and most importantly, allows accessing other types of memory, like hard disk and main memory. The firmware loads bigger programs into the computer's main memory and runs it. In general purpose computers, but as well in smart phones, tablets, optionally a boot manager is run. Android Boot Process Android Boot Process includes the following six steps: Boot ROM: This Step is known as power ON and system startup. This means that whenever we press the power button, the Boot ROM code starts executing from a pre-defined location which is hardwired in ROM. Boot ROM loads the BootLoader into RAM and starts executing. BootLoader: Bootloaders is a low-level code contains the instructions that tell a device how to start up and find the system kernel. A Bootloader is a place where manufacturers put their locks and restrictions. The bootloader is a code that is executed before any Operating System starts to run. The BootLoader executes in 2 Stages: a) In the first stage, it detects external RAM and loads a program which helps in the second stage. b) In the second stage, the bootloader setups the network, memory etc which requires to run Kernel. Kernel: Once kernel boots, it starts setup cache, protected memory, scheduling, loads drivers, starts kernel daemons, mounts root file system, initializing Input/Output, starts interrupts, initializes process table. A Kernel is the lowest level of easily replaceable software that interfaces with the hardware in our device. When kernel finish system setup first thing it looks for “init” in system files and launch root process or first process of a system. Init: Init is the very first process or we can say that it is the grandfather of all the processes. The Init process has 2 responsibilities: Mounts directories like /sys, /dev or/proc Runs /init.rc script. The init.rc is responsible for the initial set up of the system. The init process is what will set up all native services and this is similar to a regular Linux system boot. Zygote and Dalvik VM: The Zygote is a VM process that starts as the system boots. When app_process launces Zygote, it first creates the Dalvik VM and then calls Zygote’s main() method. Zygote receives a request to launch an App through/dev/socket/zygote. Once it happens, it triggers a fork() call. When a process is a fork, it creates a clone to itself. It replicates itself in another memory space. This is done pretty efficiently. When this happens to Zygote, it creates an exact and clean new Dalvik VM as a thread, preloaded with all necessary classes and resources that any App will need. This makes the process of creating a VM and load resources pretty efficiently. It enables code sharing across the Dalvik VM which helps in the achievement of minimal startup time. System Servers: After zygote preloads all necessary Java Classes and resources, it starts System Server. The System server is the core of the Android system. The first thing that happens is that the server will load a native library called android_servers that provides interfaces to native functionalities. Then the native init method that will setup native services called. After setting up the native services it creates the server thread. This thread will start the remaining services in the system according to the necessary start order. Each service is running in a separate Dalvik thread in the SystemServer. Once system Services up and running in memory, Android has completed boot process, At this time “ACTION_BOOT_COMPLETED” standard broadcast action will fire. Create Quiz Comment S shobha1617 Follow 26 Improve S shobha1617 Follow 26 Improve Article Tags : Android Explore Android Tutorial 10 min read BasicsIntroduction to Android Development 5 min read History of Android 15+ min read Best Way to Become Android Developer â A Complete Roadmap 7 min read Android Development Prerequisites [2025] - Things to Learn Before Android Development 8 min read Android App Development Fundamentals for Beginners 6 min read Android Architecture 5 min read Android System Architecture 3 min read Android Boot Process 4 min read Difference between Java and Kotlin in Android with Examples 3 min read Interesting Facts About Android 3 min read Software Setup and ConfigurationDownload and Install JDK on Windows, Mac and Linux 6 min read Guide to Install and Setup IntelliJ IDEA for Android App Development 5 min read Guide to Install and Setup Visual Studio for Android App Development 4 min read How to Run the Android App on a Real Device? 2 min read Resolving frequently occurring errors in Android Development 3 min read Android Studio Tutorial 9 min read File Structure & ComponentsComponents of an Android Application 3 min read Introduction to Activities in Android 6 min read Services in Android with Example 10 min read Core TopicsHow Does Android App Work? 7 min read Activity Lifecycle in Android with Demo App 9 min read Introduction to Gradle 4 min read What is Context in Android? 9 min read Bundle in Android with Example 6 min read Activity State Changes In Android with Example 6 min read Processes and Application Lifecycle in Android 7 min read Desugaring in Android 4 min read Difference Between AndroidX and Android Support Libraries 3 min read Memory Leaks in Android 7 min read Layout & ViewLayouts in Android UI Design 3 min read Android UI Layouts 5 min read LinearLayout and its Important Attributes with Examples in Android 3 min read Android LinearLayout in Kotlin 2 min read Android RelativeLayout in Kotlin 4 min read ConstraintLayout in Android 6 min read TextView widget in Android with Examples 5 min read TextView in Kotlin 3 min read Working With the TextView in Android 7 min read Autosizing TextView in Android 6 min read ButtonButton in Android 3 min read How to Add Radio Buttons in an Android Application? 5 min read RadioButton in Kotlin 4 min read How to add Toggle Button in an Android Application 3 min read ToggleButton in Kotlin 2 min read RadioGroup in Kotlin 3 min read Intent and Intent FiltersWhat is Intent in Android? 4 min read Implicit and Explicit Intents in Android with Examples 6 min read How to Send Data From One Activity to Second Activity in Android? 7 min read How to open dialer in Android through Intent? 3 min read Creating Multiple Screen Applications in Android 6 min read How to Open Camera Through Intent and Display Captured Image in Android? 6 min read Toast & RecyclerViewToasts for Android Studio 2 min read What is Toast and How to Use it in Android with Examples? 6 min read Android Toast in Kotlin 3 min read How to Change Toast font in Android? 3 min read How to add a custom styled Toast in Android 4 min read RecyclerView in Android with Example 7 min read Android | Horizontal RecyclerView with Examples 4 min read How to create a nested RecyclerView in Android 5 min read How to Create RecyclerView with Multiple ViewType in Android? 6 min read RecyclerView using ListView in Android With Example 5 min read Like