안녕하세요.
전번에 Power off 문제 및 File System 중 cramfs에서의 문제 때문에 글을 올렸었습니다.
1차 파일 시스템 및 power off 문제가 해결되서 원인 및 해결에 대해서 참고사항으로 올려 드립니다..
먼저 FileSystem은 cramfs를 사용하던것을 yaffs로 변경했습니다. 이게 제일 편하더군요..
ramdisk.img를 압축 풀고 이걸 다시 yaffs로 압축했습니다. 이러고 나니깐.. init.rc를 그대로 이용해도 되더군요.
속시원 했습니다. 추가로 명령어를 좀더 확장하기 위해 busybox를 static으로 컴파일 해서 넣었는데 root 시스템 크기가 2M가 안 넘었습니다.
파티션 네임도 ."system" , "userdata" , "cache"로 정하니깐.. init.rc에 적혀 있던
mtd@system 이나
mtd@userdata ,
mtd@cache랑 바로 연결되네요.
그전에 cramfs에서 디렉토리 안생겨서 루트 이미지 수정하고 linuxrc만들어서 처리하던거 해결되니 좋습니다.
두번째 power off 문제 입니다. 자동으로 부팅되고 나서 system을 halt 처리 하는 이유를 찾아봤는데.. power_supply 문제네요.
E/BatteryService( 1661): Could not open '/sys/class/power_supply/ac/online'
E/BatteryService( 1661): Could not open '/sys/class/power_supply/usb/online'
E/BatteryService( 1661): Could not open '/sys/class/power_supply/battery/present'
E/BatteryService( 1661): Could not open '/sys/class/power_supply/battery/capacity'
E/BatteryService( 1661): Could not open '/sys/class/power_supply/battery/batt_vol'
E/BatteryService( 1661): Could not open '/sys/class/power_supply/battery/batt_temp'
E/BatteryService( 1661): Could not open '/sys/class/power_supply/battery/status'
E/BatteryService( 1661): Could not open '/sys/class/power_supply/battery/health'
E/BatteryService( 1661): Could not open '/sys/class/power_supply/battery/technology'
이게 생성이 안되니깐. 발생하는듯한더 정확하게 원인은 아직 못 찾았습니다.
frameworks/policies/base/phone/com/android/internal/policy/impl/KeyguardUpdateMonitor.java 에서 아래 부분을 일단 막았습니다.
if (batteryLevel == 0 &&
pluggedInStatus != BATTERY_STATUS_CHARGING &&
pluggedInStatus != BATTERY_STATUS_UNKNOWN) {
ShutdownThread.shutdownAfterDisablingRadio(mContext, false);
}
git로 받은 커널을 보니 이솝커널이랑 많이 차이나는군요.. 그리고 power_supply 부분이랑도 차이가 좀 있구요.. 좀더 고민을 해봐야 겠습니다.
여튼 이 문제 해결되고 나니.. 화면에 뜨는 안드로이드가 맘에 드네요..
참고로 전 커널작업은 안드로이드에서 git로 cupcake 받고 kernel에 6410 을 머지해서
커널 만들고 사용하고 있습니다. 이래서 좀더 이상한듯 하네요...
자료 감사합니다.