Android系統啟動簡述

2021-06-27 15:35:50 字數 1837 閱讀 7674

1)bootloader(引導載入器)執行到一定階段後,將載入並啟動linux核心。準備啟動核心時,bootloader需要傳入核心使用的啟動引數。檢視啟動引數可使用下面的命令:

cat /proc/cmdline

root=/dev/nfs nfsroot=192.168.6.158:/home/houshuaihui/nfs/bcm7241-rootfs rw, ip=192.168.6.159:192.168.6.158:192.168.88.1:255.255.0.0:ccdt-stb:eth0:on  mtdparts=spi0.0:1m(cfe),64

k(macadr),64k(nvram),64k(stbid),64k(disp_format),64k(encryption),-(others);brcmnand.0:10m(kernel),20m(recovery),10m(splash),10m(misc),300m(ubi_fs),1200m(ubi_data),400m(ubi_cache),80m(ubi_dvb) init=/init bmem=128m@128m bmem=345m@512m

2)linux核心執行和載入根檔案系統。根檔案系統可以有核心引數「root」來指定。如上一條紅色標註(root=/dev/nfs

),標示使用nfs網路檔案系統。

3)linux核心執行根檔案系統中乙個名稱為init的可執行程式,作為使用者空間的第乙個程序。init程式執行後,程式將會在根目錄中找到名稱為init.rc的檔案作為啟動指令碼。

4)掛載各個檔案系統,當幾個檔案系統(system、data、cache等

)被載入後,才可以使用system/lib中的動態庫和system/bin中的可執行程式。 5)

系統各個程序的執行,init可執行程式後,其執行的第乙個子程序的名稱為uevent的可執行程式。它在系統的初始化的最初階段執行,在預設的init.rc中,on early-init定義了啟動uevent的可執行程式。init執行完成初始化後,將會按照init.rc指令碼中的內容執行系統中的各個服務。

使用ps命令可以看到系統中的各個程序:

user     pid   ppid  vsize  rss     wchan    pc         name

root           1        0          412    260      00000000 0008bd64 s /init

root           2        0            0         0        00000001 00000000 s kthreadd

root           3        2            0         0        00000000 00000000 s ksoftirqd/0

root           4        2            0         0        00000000 00000000 s kworker/0:0

system    2136   1          1100   308     00000000 7742db84 s /system/bin/servicemanager

root         2138    1         5112   860      ffffffff           77d65544 s /system/bin/vold

root         2273    1      416796 16920 ffffffff            7751ed34 s zygote

1號程序為使用者空間程序init,2號程序為核心空間程序kthreadd。通常情況下使用者空間的各個程序均以1號程序作為祖先,核心空間程序均以2號程序作為祖先。(ppid為父程序號)

android系統啟動簡述

下面我將用最簡單的話來描述這個過程 1.bootloader主要是在系統載入前,初始化硬體裝置,建立記憶體空間的映像圖,為最終呼叫系統核心準備好環境,常見的引導程式就是uboot,uboot的第一條指令從cpu arm920t start.s檔案開始,它最終跳轉到核心。若使用者在啟動剛開始按了指定的...

Android系統啟動

rom是唯讀儲存器 read only memory 的簡稱,是一種只能讀出事先所存資料的固態半導體儲存器。其特性是一旦儲存資料就無法再將之改變或刪除。通常用在不需經常變更資料的電子或電腦系統中,並且資料不會因為電源關閉而消失。bootloader 參考計算的bios,系統啟動載入器。linux k...

Android系統啟動過程

android系統啟動過程由以下幾個大步驟組成 bootrom,bootloader,linux kernel,android啟動 bootrom沒有源 bootloader 主要在 bootable下,包括對normal startup,及recovery mode,fastboot mode的處...