webOS Article/3. Web Service 개발하기

Booting시 내 앱과 서비스가 실행되도록 만들기

문윤미 2021. 9. 26. 11:21

이 포스팅은 webOS OSE 개발자 사이트 : 와 에반젤리님의 포스팅을 참고하여 작성되었습니다.

출처: https://evanjelly.tistory.com/61 [에반젤리의 IT 엿보기]

 

  • 개발환경 설정하기 
  • 결과 영상

 

이번 포스팅에서는 webOS가 탑재된 라즈베리파이를 켰을때 부팅 과정에서 원하는 앱 혹은 서비스가 실행되도록 하는 방법에 대해 알아보겠습니다.

 

webOS와 Systemd


init은 부팅이 완료된 뒤 실행되는 첫번째 프로세스 입니다. 예를 들어 록된 서비스 혹은 initrc에 기록된 백그라운드 서비스와 시스템 서비스를 실행하는 역할을 합니다. 그리고 webOS OSE는 init 시스템으로 systemd를 사용합니다. systemd는 리눅스 시스템이 부팅할 때 실행되는 프로그램을 제어하기 위한 시스템 관리 표준 프로세스를 제공합니다. 

 

 

앱이 실행되도록 만들기


1. webapp 만들기

 

먼저, 다음 링크를 참고하여 부팅시 실행시키고 싶은 webapp을 만들어줍니다. 

https://webos-supporters.tistory.com/14

 

웹앱(web application) 개발하기

이번 포스팅에서는 web application을 개발하는 과정에 대해 다뤄보겠습니다. webOS OSE 개발자 사이트 : Developing External Web Apps를 참고하여 작성하였습니다. Target Device 등록하기 web application 개..

webos-supporters.tistory.com

 

 

2. service 파일 생성하기 

 

ares-shell device -d '설정해준 디바이스 이름'

다음 명령어로 target device의 shell에 접속해줍니다.

 

 

그리고나서  "/lib/systemd/system" 디렉토리에 service 파일을 생성해줍니다. 

root@raspberrypi4:/sysroot/home/root# cd /lib/systemd/system 
root@raspberrypi4:/lib/systemd/system# vi '서비스 이름'.service

vi 에디터를 사용하여 service 파일을 수정해줄 것 입니다.

 

더보기

Vi editor란 ?

vi 에디터는 각종 문서를 편집할 수 있는 텍스트 기반의 편집기이자 모든 운영체제에서 사용하는 편집기를 말하며 크게 편집모드와 명령모드 2가지로 나눌 수 있습니다. 

 

 

vi 서비스이름.service로 vi editor를 실행하면 명령모드로 시작해서 i나 a 등을 입력하여 편집모드로 바꿀 수 있습니다.

그리고 다 작성한 후에 Esc를 눌러서 명령보드로 변경한 후에 :wq로 저장 후 종료해줍니다. 


Vi editor 명령어는 다음과 같습니다. 
1)   입력 
-   i : 현재 커서에서 입력
2)   Back
-   u : 방금 한 명령 취소
3)    마지막 행 명령어 
-   : w  : 저장
-   : q  :  vi 종료
-   : q!  : 강제 vi 종료
-   : wq  : 저장 후 종료

 

 

 

 

아래 내용을 service 파일에 추가해줍니다. 

[Unit]
Description=webos - "%n"

[Service]
Type=oneshot
ExecStart=/usr/bin/luna-send -n 1 -f luna://com.webos.service.applicationmanager/launch '{ "id" : "com.cosmos.app"}'


이때 주의해야할 점은 1번에서 만든 부팅시에 실행시키고 싶은 webapp의 id로 변경해주어야 한다는 것입니다. 

- Unit Section

  • Description 옵션은 서비스에 대한 상세 설명을 추가하는 옵션입니다.

- Service Section

  • Type 옵션은 서비스의 타입을 설정하는 옵션입니다. 이 옵션의 값으로는 simple | forking | oneshot | notify | dbus 중 하나를 설정할 수 있습니다. 
  • ExecStart 옵션은 실행할 명령어(스크립트)를 설정하는 옵션입니다. 
  • luna service 중 application manager를 사용합니다.

 

3.  Static Link  생성

 

root@raspberrypi4:/lib/systemd/system# ln -s '서비스의 이름'.service ./webos-bd.target.wants/

부팅시에 서비스를 실행하기 위해서 "/lib/systemd/system" 디렉토리의 webos-bd.target.wants로 Static Link를 생성합니다. 앞서 2번에 만든 service의 이름으로 바꾸어주면 됩니다.

 

 

 

4. 재부팅하기

 

root@raspberrypi4:/lib/systemd/system# reboot -f

 

마지막으로 재부팅을 해주면 만들어준 앱이 화면에 바로 나타나는 것을 확인할 수 있습니다. 

 

 

 

실행 결과 - 앱


 

서비스가 실행되도록 만들기


1. web service 만들기

먼저, 부팅시 실행시키고 싶은 web service를 만들어줍니다. WebOS OSE에서는 web service를 단독으로 만들어 설치할 수 없으므로 web app과 반드시 같이 만들고 패키징한 뒤 설치해주셔야 합니다. 저희는 아래 링크에서 만든 예제 중 "monitorOn"이라는 서비스를 부팅시 실행되도록 하여 별도의 동작 없이 webOS가 실행되면 버튼을 모니터링 하도록 해보겠습니다.

https://webos-supporters.tistory.com/38?category=961849 

 

다른 어플 실행 중에 내가 만든 서비스 모니터링하기

이 포스팅은 webOS OSE 개발자 사이트 : 를 참고하여 작성되었습니다. 다른 어플리케이션을 실행 하는 도중 자신이 만든 서비스를 모니터링하는 실습을 진행해보겠습니다. 이번에는 어플이랑 서비

webos-supporters.tistory.com

 

2. service 파일 생성하기 

위에서 application 설정할 때와 동일하게 해주시면 됩니다. 이때 아래를 참고하여 마지막 줄에 여러분들이 원하시는 서비스를 넣어주시면 됩니다.

[Unit]
Description=webos - "%n"

[Service]
Type=oneshot
ExecStart=/usr/bin/luna-send -n 1 -f luna://com.cosmos.team4.service/monitorOn '{}'
# ExecStart=/usr/bin/luna-send -n 1 -f luna://<원하는 서비스 id>/<원하는 method> '{}'

 

3.  Static Link  생성 및 재부팅

역시 위 application 부팅 서비스 만들때와 동일하게 해주시면 됩니다.

 

실행 결과 - 서비스