이 포스팅은 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 부팅 서비스 만들때와 동일하게 해주시면 됩니다.
실행 결과 - 서비스
'webOS Article > 3. Web Service 개발하기' 카테고리의 다른 글
외부모듈 사용하기 (0) | 2021.09.19 |
---|---|
Nodejs를 이용한 웹서비스 개발 (0) | 2021.09.19 |
heartbeat 사용하기 (2) | 2021.09.19 |
webOS 서비스에서 다른 서비스 호출하기 (1) | 2021.09.19 |
웹서비스 개발하기 (0) | 2021.08.22 |