왕초보방
글 수 20
2012.12.13 23:12:11 (*.241.165.233)
11695
안녕하세요? 고수님들!
ez-s3c2440을 기반으로 따라하는 수준으로 하드웨어를 만들고 응용 프로그램을 타켓 램디스크 /root에 넣고
커널의 /etc/rc.d/rc.local을 수정하여 각각의 이미지를 만들고 부팅이 되면 자동 실행되게 만들었습니다.
그런데 문제는 운영 중 시리얼 통신 또는 이더넷을 통해서 응용 프로그램을 업그레이드를 하고 싶을 때
램의 특정 영역에 계속 다운을 받는 것까지는 바로 생각이 나는데 플래쉬에 있는 램디스크 이미지 /root에 있는
응용 프램그램을 어떻게 변경을 하는지....
그리고 리눅스 재부팅 없이 어떻게 새로운 응용 프로그램을 실행하는지 궁금합니다.
조언이나 관련 서적에 대한 추천을 부탁드립니다.



루트파일 시스템을 램디스크로 쓰신다면 해당 램디스크를 새로 제작하셔서 램디스크 자체를 업데이트 하셔야 합니다.
어플리케이션의 재시작은 rc.local 에서 실행하지 않고
init.tab 에서 respawn 으로 실행시키면 해당 응용이 죽으면 재실행해 줍니다.
해당 위치에 있는 파일을 지우는 것이 가능하다면 해당 응용을 업데이트 후에 kill 로 죽이면 재실행되죠.
더 좋은 방법으로는 데몬을 만들어서 응용을 실행시키는 프로그램을 만들고 해당 데몬을 init.tab 에서 실행시키면
해당 데몬은 먼저 자기가 실행시킬 모든 응용을 죽인후 응용을 시작하게 만듭니다.
그러면 데몬만 죽이면 모든 응용이 착하게 재실행 되겠죠.
직접 응응을 init.tab 에서 실행하기에는 탄력성이 떨어지니까요.