| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 홍시스무디
- DFS
- 사진문자추출하기
- 양양솔비치아침
- 사진에서 글자추출
- 결항
- 에어아시아
- 아이혼자다녀옴
- 커피쏟음
- 푸르지오포레피스
- 편도수술
- 고마워다음
- 파이썬
- 영통칠프로칠백식당
- 사진문자추출
- 종이캐리어
- python#
- 가족소고기외식
- 영통외식
- 양양솔비치 뷔페
- 결항전문
- 커피
- 영통역소고기
- 양양솔비치조식
- SK하이닉스 #SK하이닉스채용 #반도체취업 #AI취업 #시스템아키텍처 #소프트웨어솔루션 #HBM #CXL #LLM #GPU #서버아키텍처 #대학원진학 #이직준비 #취업준비
- 주차넉넉
- 양양솔비치세프스키친
- 중학교입학수학문제
- 당근마켓중고차
- 싱가폴중학교수학문제
- Today
- Total
너와나의 관심사
APEX , linker config 생성단계 본문
5. APEX activation 단계
Android 10 이후 ART, Runtime, i18n, tzdata 같은 핵심 시스템 컴포넌트는 APEX 형태로 분리되어 있다. APEX는 package manager가 뜨기 전에 필요한 하위 시스템 모듈을 부팅 초기에 mount하기 위한 구조다. Android 공식 문서도 APEX가 ART, native service/library, HAL, class library 같은 lower-level system module 업데이트를 위해 사용된다고 설명한다.
이 단계에서는 apexd가 다음을 수행한다.
APEX scan
APEX verification
loop device 할당
APEX image mount
/apex/com.android.* 경로 구성
apex-info-list 생성
apexd.status 활성화
현재 로그에서는 다음이 확인된다.
apexd: scanning /system/apex
candidates=27 added=27
scanning /system_ext/apex
candidates=2 added=2
apexd.status activated
즉 APEX scan과 mount가 상당히 진행되었고, 이후 apexd.status가 activated/ready 상태로 넘어간다.
6. linkerconfig 생성 단계
APEX가 mount되면 native linker가 사용할 namespace configuration이 생성된다.
이 단계는 매우 중요하다. Android의 native library는 모든 경로를 자유롭게 볼 수 없고, linker namespace에 의해 격리된다. 따라서 /system/lib64에 있는 라이브러리가 /apex/com.android.i18n/lib64나 /apex/com.android.art/lib64의 라이브러리를 보려면 linkerconfig에 namespace link가 있어야 한다.
현재 로그에서는 두 번의 linkerconfig 생성 흐름이 보인다.
GenerateLinkerConfiguration begin ns=bootstrap
GenerateLinkerConfiguration generated ns=bootstrap ld_config=1 apex_libraries=1
GenerateLinkerConfiguration begin ns=default
GenerateLinkerConfiguration generated ns=default ld_config=1 apex_libraries=1
GenerateLinkerConfiguration default namespace marked ready
즉 bootstrap namespace와 default namespace 양쪽 linker configuration이 생성되었다.
이 단계가 실패하면 다음과 같은 오류가 발생한다.
CANNOT LINK EXECUTABLE
libxxx.so not found
needed by /system/lib64/yyy.so in namespace default
예를 들어 이전에 발생한 libicu.so not found는 실제 파일 부재라기보다 default namespace에서 com.android.i18n APEX 라이브러리를 볼 수 없는 namespace visibility 문제였다.