p.46 init.rc 분석 및 실행
- system/core/init/init.c
--> int main(int argc, char
**argv)
(1) init.rc 파일 파싱: 안드로이드가 동작하는데 공통적으로 필요한 환경 설정
(2) init.{hardware}.rc 파일 파싱: 플랫폼 특화된 환경 설정
(3) early-init 액션 리스트 실행:
(4) init 액션 리스트 실행
p.47 액션리스트
- 'on' 키워드로 시작하는 액션 리스트
- on init: 환경변수를 등록하고 파일 및 디렉터리 생성/마운트, 퍼미션을 조작한다.
- on boot: application 종료 조건 설정, 구동에 필요한 디렉터리 및 파일 퍼미션 등을 설정한다.
- 'service' 키워드로 시작하는 서비스 리스트
- init 프로세스가 실행시킬 프로세스들을 기술.
- service들은 모두 service list에 등록되고, init 프로세스는 이를 순차적으로 실행한다.
- init.rc 예제 (linaro-android 파일에서 가져옴)
on early-init
start ueventd
on init
sysclktz 0
loglevel 3
# setup the global environment
export PATH /sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
export LD_LIBRARY_PATH /vendor/lib:/system/lib
export ANDROID_BOOTLOGO 1
export ANDROID_ROOT /system
export ANDROID_ASSETS /system/app
...
on boot
# basic network init
ifup lo
hostname localhost
domainname localdomain
# set RLIMIT_NICE to allow priorities from 19 to -20
setrlimit 13 40 40
# Define the oom_adj values for the classes of processes that can be
# killed by the kernel. These are used in ActivityManagerService.
setprop ro.FOREGROUND_APP_ADJ 0
setprop ro.VISIBLE_APP_ADJ 1
setprop ro.PERCEPTIBLE_APP_ADJ 2
setprop ro.HEAVY_WEIGHT_APP_ADJ 3
setprop ro.SECONDARY_SERVER_ADJ 4
...
# adbd on at boot in emulator
on property:ro.kernel.qemu=1
start adbd
on property:persist.service.adb.enable=1
start adbd
on property:persist.service.adb.enable=0
stop adbd
service servicemanager /system/bin/servicemanager
user system
critical
onrestart restart zygote
onrestart restart media
service vold /system/bin/vold
socket vold stream 0660 root mount
ioprio be 2
...
p.55 액션 리스트 및 서비스 리스트의 실행
- 액션 리스트와 서비스 리스트의 실행
- 책에서는 drain_action_queue() 함수라고 소개되어 있지만 (p.55) 바뀐듯.
- drain_action_queue() --> for + execute_one_command() 가 같은 역할을 한다.
- 리스트의 명령어를 실행한 뒤, 이벤트에 대한 파일 디스크립트 설정한다.
- POLL에 등록된 fd는 이벤트를 기다리게 되고, 이벤트 발생시에 poll() 함수를 통해 이벤트를 처리한다. (p.45~46)
'Android' 카테고리의 다른 글
인사이드 안드로이드 Chapter5 (0) | 2012.02.02 |
---|---|
인사이드 안드로이드 Chapter4 (0) | 2012.02.02 |
인사이드 안드로이드 Chapter3 (0) | 2011.12.08 |
인사이드 안드로이드 Chapter1-2 (0) | 2011.12.08 |
Linaro (0) | 2011.11.28 |