[질문] 부팅 시 자동실행 서비스 등록 질문입니다.



  • 안녕하세요 …
    어쩌다보니 첫 계시물이네요.ㅎㅎ

    많은 분들께서 라즈베리파이를 사용하다 보면 한번씩은 접해 보셨을 문제 같은데요,
    바로 부팅시 자동실행입니다.

    일반적으로 /etc/rc.local 스크립트를 적어주는 것으로 자동실행이 되기는 하지만,
    저같은 경우에는 이 방법이 통하지 않아서 다른 방법을 찾아보다가 질문까지 올리게 되었습니다.

    저같은 경우에는 lte모뎀을 사용중인데요,
    이게 sudo wvdial XXX 이라는 커맨드에 의하여 작동이 됩니다.

    따라서 제 목표는 라즈베리파이가 부팅되면 자동으로 해당 커맨드를 실행해야 하는거죠.

    하지만 rc.local에 등록 했을 경우 usb장치를 인식하기도 전에 이 커맨드를 실행시켜버리는것 같더라구요.
    (예전 버전의 라즈비안에서는 잘 됬었던것 같은데 요번에 os를 바꾸고 나서 안되는것 같습니다 ㅜㅜ)

    여차저차 알아 본 결과 rc5.d에 서비스 등록을 하면 xwindow가 실행될때 자동실행되게 할수 있는것같습니다.
    그래서 한번 시도를 해보려고 하는데요,

    여기서 질문사항이 좀 있습니다.

    1. sudo wvdial 명령어는 경로가 아니라 말그대로 명령어인데 rc5.d같은 스크립트에 입력하면 그냥 일반적으로 실행이 되나요??

    2. 다른 더 좋은 자동실행 방법이 있는지 궁금합니다. (중요한건 usb가 인식 된 이후에 해당 어플리케이션이 동작되어야 한다는 겁니다.)


  • Global Moderator

    rc5.d 에는 디렉토리명 이고, 여기에는 스크립트 파일이 들어갑니다.
    rc.local에 잘 못 넣었다기 보다, 실행 방법이 잘 못 된듯 보입니다.

    sudo wvdial {options} 를 아래와 같이 실행할수 있는 스크립트를 짜시면 됩니다.

        # runwvdial의 간략 내용
        1. for 문으로 디바이스가 열렸는지 확인한다. 열리기 전에는 현재 스크립트가 종료되지 않는다.
        2. 디바이스가 열렸으면 sudo wvdial {options}를 실행한다.
        3. wvdial을 실행하고 나서 스크립트를 종료한다.
    

    그 다음 update-rc.d 를 사용하여 service 에 등록하시면 됩니다.

    http://raspberrywebserver.com/serveradmin/run-a-script-on-start-up.html

    한번 해보세요…^^


  • Global Moderator

    @김명건
    아…wvdial 이라는게 있군요…
    http://system-monitoring.readthedocs.org/en/latest/network.html
    이런 글이 있네요…
    혹시 안해보셨으면 이거부터 해보세요.


  • Global Moderator

    @김명건 @Seungrok-Han 안녕하세요 이장 나무꾼 입니다.

    우선 @김명건 께서 질문하신 내용을 천천히 되집어 생각을 해 보고, 과거에 3G 모뎀을 사용했던 기억을 더듬다 보니 @Seungrok-Han 의 답이 정확하기도 하지만, 한가지 빠진 내용이 있어서 글을 남기게 되었습니다.

    명건님의 이야기 처럼 sudo wvdial 이라는 커맨드는 결국 모뎀 접속을 하는 명령어도 있지만, 드라이브를 활성화 하는 커맨드도 있지않나 싶습니다.

    결과적으로 USB 드라이브가 커널 단에서 활성화 되는 것이 아니라, 커맨드를 통해 모뎀의 드라이브를 활성화 하고 이후에 접속을 시도하시는 것이라 판단이 되었습니다.

    아래 도식화 되어진 표를 참고하여 추론을 해보자면, @김명건 님께서는 붉은색으로 표기된 부분에 대기 함수를 사용함으로서 문제가 해결 될 수 있지 않나 생각을 해보았습니다.

    0_1460465164430_rclocal.jpg

    진행 후 결과를 공유해 주신다면 마을 포럼을 방문하는 분들에게도 도움이 되리라 판단 됩니다.

    대기 함수 : sleep count



  • 답변 감사합니다!
    결론부터 말씀드리면 모뎀이 작동되는 것을 확인했습니다.

    하지만 무었이 모뎀을 작동시켰는지는 조금더 살펴봐야 할것 같습니다…
    (제가 이것저것 다 집어넣놓고 돌렸더니 된거라;;)

    1. rc.local에 스크립트를 Seungrok님께서 링크해주신 포스팅대로 수정하였습니다.
    2. 임의의 실행 스크립트를 init.d에 생성하여 chkconfig를 통해 runlevel 5 서비스로 등록했습니다. (이때 실행되는 스크립트에 이장님께서 조언해 주신 대로 sleep을 주었습니다.)

    둘중 하나가 원인이 되었는지 둘다 어떤 시너지 작용에 의하여 작동한건지는 추가적으로 살펴봐야 할것 같네요.
    추후 정확한 원인을 찾게 되면 이 계시물에 올려보도록 하겠습니다. ㅎㅎ


  • Global Moderator

    @김명건 네 감사합니다.


답글을 작성하기 위해 로그인
 

Rasplay Forum 사이트로의 연결이 끊어졌습니다. 다시 연결을 시도하는동안 잠시만 기다려 주십시오.