기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
리눅스 커널 2.6.27.에 안드로이드 2.1를 올리는데 문제가 있어서 질문을 올립니다.
안드로이드 2.1을 올려보신 분이 있으시면 답을 좀 주시면 고맙겠습니다.
s3c6410 CPU가 탑재된 보드(일명 EMDK5000으로, 일반 타 회사의 s3c6410 CPU를 가진 보드와 기능이 유사함)에
리눅스 커널 2.6.27에 cupcake(1.5)을 올리면 안드로이드가 기본적인 기능은 동작됩니다.
그런데 이 리눅스 커널에 Eclair를 올리면 다음과 같은 메시지가 뜨면서 더 이상 부팅과정이 진행되지 않습니다.
출력내용으로 봐서 zygote가 실행되었다가 다음 프로세스를 띄우는 과정에서 원할한 동작이 되지 않아서 zygote도 죽고이후 실행될 다른 프로세스도 죽이고,
또 다시 zygote를 띄우는 일을 반복하고 있는 것 같습니다.
ps 해서 프로세스 상태를 보면 zygote 이전의 프로세스(servicemanager, debuggerd, rild, mediaserver, dbus-daemon, installed, adbd 등)는 잘 띄워져 있습니다.
무슨 이유로 zygote가 다른 프로세스를 띄우지 못하는 것일까요 ?
LCD화면은 text 로 ANDROID 라는 글자만 계속 나타납니다.
출력메시지는 다음과 같습니다.
아래 부분이 계속 반복됩니다
starting 'zygote' ;; init.c의 service_start 루틴에 있음, 다음 줄도 같은 루틴에 있음
이후 fork, Create socket '/dev/socket/zygote', publish_socket 등도 실행함(이 부분은 출력 메시지는 아님)
waitpid returned pid 1677, status = 00000000 ;; init.c의 wait_for_one_process 루틴에 있음,
다음 2 줄도 같은 루틴에 있음
process 'zygote', pid 1677 exited ;; 여기서 출력되는 pid는 zygote pid 인 것 같음
process 'zygote' killing any children in process group request_suspend_state:wake (0->0) at 4110575600 (1970-01-01 00:00:41.105737000 UTC) ;; 이것은 어디서 출력하는 지 잘 모르겠음
(참고 사항)
위와 같은 문제가 있어서
다음은 SDK가 설치된 platform 폴더의 android-2.1/images 폴더에 있는 기존 내용(이미지 3개)을 다른 곳으로 옮기고, 새로 컴파일한 ramdisk.img, system.img, userdata.img를 넣고 테스트 한 결과를 보여드리는데,
이 때는 libmedia_jni.so 등 주로 lib 관련 파일이 적재가 제대로 되지 않아서 앞의 경우와 같은 현상이 계속되는 것 같습니다.
(모습은 틀려도 같은 현상인 것 같습니다.)
- ramdisk.img는 yaffs 를 하지 않은 것
- init.rc는 수정없이 원래 내용대로 한 것
- 아래 출력은 adb shell로 들어가서, system/bin/logcat으로 출력한 내용임
- 에뮬레이터 화면에는 역시 ANDROID라는 텍스트 형태의 글자만 계속 나타나 있음
D/AndroidRuntime( 1804):
D/AndroidRuntime( 1804): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
D/AndroidRuntime( 1804): CheckJNI is ON
D/AndroidRuntime( 1804): --- registering native functions ---
I/SamplingProfilerIntegration( 1804): Profiler is disabled.
I/Zygote ( 1804): Preloading classes...
D/dalvikvm( 1804): GC freed 793 objects / 50568 bytes in 4ms
D/dalvikvm( 1804): GC freed 251 objects / 16168 bytes in 3ms
D/dalvikvm( 1804): GC freed 295 objects / 18768 bytes in 4ms
D/dalvikvm( 1804): GC freed 214 objects / 13712 bytes in 4ms
D/dalvikvm( 1804): GC freed 413 objects / 26432 bytes in 5ms
D/skia ( 1804): ------ build_power_table 1.4
D/skia ( 1804): ------ build_power_table 0.714286
D/dalvikvm( 1804): GC freed 420 objects / 28752 bytes in 5ms
D/dalvikvm( 1804): Trying to load lib /system/lib/libmedia_jni.so 0x0
D/dalvikvm( 1804): Added shared lib /system/lib/libmedia_jni.so 0x0
D/dalvikvm( 1804): Trying to load lib /system/lib/libexif.so 0x0
D/dalvikvm( 1804): Added shared lib /system/lib/libexif.so 0x0
D/dalvikvm( 1804): GC freed 2299 objects / 120880 bytes in 8ms
D/dalvikvm( 1804): Trying to load lib /system/lib/libmedia_jni.so 0x0
D/dalvikvm( 1804): Shared lib '/system/lib/libmedia_jni.so' already loaded in sa
me CL 0x0
D/dalvikvm( 1804): Trying to load lib /system/lib/libmedia_jni.so 0x0
D/dalvikvm( 1804): Shared lib '/system/lib/libmedia_jni.so' already loaded in sa
me CL 0x0
D/dalvikvm( 1804): Trying to load lib /system/lib/libmedia_jni.so 0x0
D/dalvikvm( 1804): Shared lib '/system/lib/libmedia_jni.so' already loaded in sa
me CL 0x0
D/dalvikvm( 1804): Trying to load lib /system/lib/libmedia_jni.so 0x0
D/dalvikvm( 1804): Shared lib '/system/lib/libmedia_jni.so' already loaded in sa
me CL 0x0
D/dalvikvm( 1804): GC freed 3790 objects / 197016 bytes in 13ms
D/dalvikvm( 1804): GC freed 461 objects / 26344 bytes in 11ms
D/dalvikvm( 1804): GC freed 294 objects / 17024 bytes in 11ms
D/dalvikvm( 1804): GC freed 204 objects / 11432 bytes in 12ms
D/dalvikvm( 1804): GC freed 178 objects / 9568 bytes in 14ms
D/dalvikvm( 1804): Trying to load lib /system/lib/libsrec_jni.so 0x0
D/dalvikvm( 1804): Added shared lib /system/lib/libsrec_jni.so 0x0
D/dalvikvm( 1804): Trying to load lib /system/lib/libsrec_jni.so 0x0
D/dalvikvm( 1804): Shared lib '/system/lib/libsrec_jni.so' already loaded in sam
e CL 0x0
D/dalvikvm( 1804): GC freed 296 objects / 34784 bytes in 17ms
D/dalvikvm( 1804): GC freed 787 objects / 47976 bytes in 19ms
D/dalvikvm( 1804): GC freed 337 objects / 38464 bytes in 20ms
D/dalvikvm( 1804): GC freed 418 objects / 25816 bytes in 21ms
D/dalvikvm( 1804): Trying to load lib /system/lib/libwebcore.so 0x0
D/dalvikvm( 1804): Added shared lib /system/lib/libwebcore.so 0x0
D/dalvikvm( 1804): GC freed 432 objects / 25160 bytes in 21ms
D/dalvikvm( 1804): GC freed 489 objects / 30704 bytes in 21ms
W/dalvikvm( 1804): Exception Ljava/lang/RuntimeException; thrown during Lcom/and
roid/internal/policy/PolicyManager;.<clinit>
E/Zygote ( 1804): Error preloading com.android.internal.policy.PolicyManager.
E/Zygote ( 1804): java.lang.ExceptionInInitializerError
E/Zygote ( 1804): at java.lang.Class.classForName(Native Method)
E/Zygote ( 1804): at java.lang.Class.forName(Class.java:237)
E/Zygote ( 1804): at java.lang.Class.forName(Class.java:183)
E/Zygote ( 1804): at com.android.internal.os.ZygoteInit.preloadClasses(Zyg
oteInit.java:295)
E/Zygote ( 1804): at com.android.internal.os.ZygoteInit.main(ZygoteInit.ja
va:582)
E/Zygote ( 1804): at dalvik.system.NativeStart.main(Native Method)
E/Zygote ( 1804): Caused by: java.lang.RuntimeException: com.android.internal.p
olicy.impl.Policy could not be loaded
E/Zygote ( 1804): at com.android.internal.policy.PolicyManager.<clinit>(Po
licyManager.java:42)
E/Zygote ( 1804): ... 6 more
E/Zygote ( 1804): Caused by: java.lang.ClassNotFoundException: com.android.inte
rnal.policy.impl.Policy
E/Zygote ( 1804): at java.lang.Class.classForName(Native Method)
E/Zygote ( 1804): at java.lang.Class.forName(Class.java:237)
E/Zygote ( 1804): at java.lang.Class.forName(Class.java:183)
E/Zygote ( 1804): at com.android.internal.policy.PolicyManager.<clinit>(Po
licyManager.java:39)
E/Zygote ( 1804): ... 6 more
E/Zygote ( 1804): Caused by: java.lang.NoClassDefFoundError: com.android.intern
al.policy.impl.Policy
E/Zygote ( 1804): ... 10 more
E/Zygote ( 1804): Caused by: java.lang.ClassNotFoundException: com.android.inte
rnal.policy.impl.Policy in loader dalvik.system.PathClassLoader@4001b478
E/Zygote ( 1804): at dalvik.system.PathClassLoader.findClass(PathClassLoad
er.java:243)
E/Zygote ( 1804): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
E/Zygote ( 1804): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
E/Zygote ( 1804): ... 10 more
D/AndroidRuntime( 1804): Shutting down VM
W/dalvikvm( 1804): threadid=3: thread exiting with uncaught exception (group=0x4
001b100)
D/dalvikvm( 1804): DestroyJavaVM waiting for non-daemon threads to exit
D/dalvikvm( 1804): DestroyJavaVM shutting VM down
D/dalvikvm( 1804): VM cleaning up
D/dalvikvm( 1804): LinearAlloc 0x0 used 1917724 of 5242880 (36%)
D/skia ( 1804): purging 6K from font cache [1 entries]
I/ServiceManager( 26): service 'media.audio_flinger' died
I/ServiceManager( 26): service 'media.player' died
I/ServiceManager( 26): service 'media.camera' died
I/ServiceManager( 26): service 'media.audio_policy' died
I/ ( 1807): ServiceManager: 0xad08
W/AudioHardwareInterface( 1807): Using stubbed audio hardware. No sound will be
produced.
D/AudioHardwareInterface( 1807): setMode(NORMAL)
I/CameraService( 1807): CameraService started: pid=1807
I/AudioFlinger( 1807): AudioFlinger's thread 0xb370 ready to run
아마, BattaryService 쪽에 주석처리를 해주셔야 합니다.
배터리 체킹하는 곳 아래 아래 줄에 Activity 이름이 들어가는 함수가 하나 있는데, 이것을 함께 주석 처리 해주시면
문제가 해결될 것이라고 생각 됩니다.