1. 파일이름의 제약 완화
기본적으로 아무런 옵션 없이 돌리면 파일 이름이 무조건 영어 대소문자와 숫자와 하이픈과 언더바로만 지정되어 있어야 합니다.
run-parts 뒤에 --lsbsysinit 옵션을 줘서 LSB 네임스페이스를 사용하는 것으로 해결.
2. 이상하게 run-parts로 돌리는 스크립트의 일부 내용만 적용이 안되는 문제
이는 터미널로부터 에러가 리턴되는 내용은 run-parts가 돌리지 않기 때문입니다.
다만 참 까다로운게 for와 do와 매개변수를 사용해 일괄적으로 적용되는 스크립트를 구현할때
(예 : mmcblk0~1 내의 거의 모두 동일한 파라미터들을 일괄적으로 echo로 바꾸기)
구현의 편의를 위해 0에서만 존재하는 내용까지 1에서도 적용되되 없는 부분에 대해 오류만 리턴하는 형태로 만들 경우
1로부터 리턴되는 오류 때문에 0에서도 그 내용이 적용이 되질 않습니다.
그야말로 물귀신.
1)
뒤에 옵션으로 -a나 --arg를 써서 보편적인 리턴값(존재하지 않는 것이라 뜨던지, 권한이 없다던지 등)에 대해 무시를 하고 일단 실행시키도록 예외처리를 만드는 것으로 해결.
2)
원초적으로 에러를 뱉던 말던 무조건 돌리고 보도록 cd /etc/init.d && sh * 이렇게 대체.
(만에하나의 권한문제까지 퉁치려면 루팅 했다는 전제 하에 su -c sh /etc/init.d/* 이렇게도 가능)
사실 이렇게 넣으면 조금 위험할 수도 있는데 뭐 요즘의 안드로이드에선 리커버리에서 aroma file manager 같은걸로 관리가 가능하니 큰 문제는...
정 안되면 시스템 상태를 읽어서 특정 시간 내에 부팅이 완료되지 않았을 경우 init.d 안의 내용물 모두의 퍼미션을 unexecutable로 바꾸고 재부팅하는 내용 정도만 추가해주면 안전하겠네요.