안드로이드가 올라간 보드에서 개발한 C 프로그램을 자동으로 실행시키기 위해서
서비스를 등록하는 방법이 있습니다.
서비스 등록은 /init.rc, /init.XXX,rc 에서 할 수 있습니다.
XXX 는 보드마다 다를 수 있습니다. falinux 의 s5pv210 보드에서는 init.ezs5pv210.rc 입니다.
init 파일에서 service 라는 항목을 추가하면 됩니다.
$ cat init.rc on init sysclktz 0 loglevel 3 # setup the global environment
....
service telnetd /system/xbin/telnetd.sh
# service add. |
"# service add" 부분이 추가된 서비스입니다.
"test-main" 는 서비스의 이름이고 "/sbin/test-main"는 서비스의 실행 파일 경로입니다.
안드로이드 init 는 서비스에 등록된 process 를 자동을 실행시켜 줄뿐만 아니라,
process 가 kill 되면 다시 실행시켜주기도 합니다.
그 외에 여러가지 속성을 부여할 수 있는데,
"user root"는 root user 권한으로 실행한다는 것이고, "console" 은 콘솔 메세지를 stdout 으로 출력하겠다는 내용입니다.
"onrestart restart test-net" 는 해당 서비스가 다시 실행될 경우 "test-net" 서비스도 다시 시작시키겠다는 의미입니다.
그 외에 부팅 후 초기화 단계에서만 한번 실행시킬 경우에는 "oneshot" 속성을 주면 됩니다.
"oneshot" 은 해당 프로세스가 kill 되도 다시 실행시켜주지 않습니다.
필요한 기능을 C 프로그램으로 구현하고 서비스로 등록시켜놓으면 부팅시 실행과 재실행까지 init 에서 알아서 해주기 때문에 매우 편리합니다.
그 외의 ini.rc 에서 사용에서 사용되는 문법은 더 많지만 자주 사용하는 것 위주로 정리해 보았습니다.