最終更新:2018-08-28 (火) 06:00:12 (2066d)
Android/起動プロセス
概要
- Boot ROM -> Bootloader -> Kernel -> init -> Zygote -> Dalvik VM -> System servers -> Managers
ブートローダ
aboot (LK)
U-Boot
Android/init
- ブートローダがLinuxカーネルを起動後、Linuxカーネルがinitを起動。
- Linuxカーネルはデフォルトではinit/main.cでstart_kernel->kernel_init->initスクリプトと言う順番で呼び出す。
- rdinit?を指定しない場合、Android/initが実行される
- ソースコード:AOSP/system/core/init/init.c
init.rcの読み込み
- 設定ファイル(*.rc)を読み込んでトリガの順に実行していく
トリガの順
- on early-init
- on wait_for_coldboot_done?
- on property_init
- on keychord_init?
- on console_init?
- on set_init_properties?
- on init
- if charger? != 0
- end if
- on property_service_init
- on signal_init?
- on check_startup?
class_start
- クラス単位でサービスを起動。
- class core
サービス名 コマンド ueventd Android/sbin/ueventd console Android/bin/sh? adbd Android/sbin/adbd? servicemanager? Android/system/bin/servicemanager vold Android/system/bin/vold?
- class main
サービス名 コマンド netd Android/system/bin/netd? debuggerd Android/system/bin/debuggerd? ril-daemon? Android/system/bin/rild? surfaceflinger? (SurfaceFlinger) Android/system/bin/surfaceflinger? SystemServer Android/system/bin/app_process Android/システムサービスを順次起動 drm? Android/system/bin/drmserver? media Android/system/bin/mediaserver bootanim? Android/system/bin/bootanimation? dbus Android/system/bin/dbus-daemon? bluetoothd Android/system/bin/bluetoothd? installd? Android/system/bin/installd? flash_recovery? Android/system/etc/install-recovery.sh? racoon? Android/system/bin/racoon? mtpd? Android/system/bin/mtpd? keystore? Android/system/bin/keystore? dumpstate Android/system/bin/dumpstate? - Android/init.goldfish.rc|