본문으로 건너뛰기

eLxr에 패키지 및 서비스 추가

Modalix 이미지는 Debian 파생 배포판인 eLxr을 기반으로 합니다. 보드에 소프트웨어를 추가할 때는 Debian 방식, 즉 apt로 설치하는 패키지를 사용합니다. 이 페이지에서는 패키지를 설치하는 방법, 자체 서비스를 패키징하는 방법, 펌웨어 업데이트가 변경 사항에 미치는 영향을 설명합니다.

하드웨어에서 아직 검증되지 않음

이 페이지는 공개된 SiMa.ai 저장소를 바탕으로 작성되었습니다. 예제 패키지는 Debian 컨테이너에서 빌드하고 설치했습니다. 여기에 적힌 단계를 그대로 보드에서 실행해 보지는 않았습니다.

패키지 설치​

  1. 패키지 저장소에 접근할 수 있는 네트워크에 보드를 연결하십시오.

  2. 패키지 목록을 업데이트하십시오.

    sima@modalix:~$ sudo apt update
  3. 패키지를 설치하십시오. 예를 들어 I2C 도구를 설치하려면 다음을 실행합니다.

    sima@modalix:~$ sudo apt install i2c-tools

SiMa.ai는 자사 소프트웨어를 Debian 패키지로 보드에 제공합니다. 보드에 있는 SiMa.ai 패키지를 나열하려면 다음을 실행하십시오.

sima@modalix:~$ dpkg -l | grep simaai

자체 서비스 패키징​

자체 프로그램을 서비스로 실행하려면 해당 프로그램의 Debian 패키지를 빌드하십시오. 패키지가 파일을 설치하고, 설치 후 스크립트가 서비스를 활성화합니다. 이 예에서는 my-app이라는 프로그램을 패키징합니다.

  1. 빌드 호스트에서 다음 디렉터리 트리를 만드십시오. 프로그램은 usr/bin/my-app에 두십시오. 보드에서 실행되어야 하므로 arm64용으로 빌드하십시오. 빌드 컨테이너는 소스에서 BSP 빌드를 참조하십시오.

    my-app/
    ├── DEBIAN/
    │ ├── control
    │ └── postinst
    ├── lib/systemd/system/my-app.service
    └── usr/bin/my-app
  2. DEBIAN/control을 작성하십시오. Depends에는 프로그램에 필요한 패키지를 나열합니다.

    Package: my-app
    Version: 1.0.0
    Section: utils
    Priority: optional
    Architecture: arm64
    Depends: python3
    Maintainer: Your Name <you@example.com>
    Description: Example service for a Modalix board
  3. 유닛 파일 lib/systemd/system/my-app.service를 작성하십시오.

    [Unit]
    Description=My application
    After=network.target

    [Service]
    Type=simple
    ExecStart=/usr/bin/my-app
    Restart=on-failure
    RestartSec=5

    [Install]
    WantedBy=multi-user.target
  4. DEBIAN/postinst를 작성하십시오. 패키지를 설치할 때 이 스크립트가 서비스를 활성화하고 시작합니다.

    #!/bin/sh
    set -e
    if [ -d /run/systemd/system ]; then
    systemctl daemon-reload
    systemctl enable my-app.service
    systemctl restart my-app.service
    fi
  5. 스크립트와 프로그램에 실행 권한을 부여하고 패키지를 빌드하십시오.

    sima-user@sima-user-machine:~$ chmod 0755 my-app/DEBIAN/postinst my-app/usr/bin/my-app
    sima-user@sima-user-machine:~$ dpkg-deb --root-owner-group --build my-app my-app_1.0.0_arm64.deb
  6. 패키지를 보드로 복사한 다음 설치하십시오. apt는 의존하는 패키지도 함께 설치합니다.

    sima-user@sima-user-machine:~$ scp my-app_1.0.0_arm64.deb sima@<board-ip>:/tmp/
    sima@modalix:~$ sudo apt install /tmp/my-app_1.0.0_arm64.deb
  7. 서비스가 실행 중인지 확인하고 로그를 읽으십시오.

    sima@modalix:~$ systemctl status my-app.service
    sima@modalix:~$ journalctl -u my-app.service

이러한 패키지의 완전한 예는 SiMa.ai Insight 저장소의 MIPI 카메라 유틸리티를 참조하십시오.

펌웨어 업데이트가 변경 사항에 미치는 영향​

sima-cli update는 릴리스 계열마다 다르게 동작하므로 패키지가 처리되는 방식도 다릅니다.

플랫폼 릴리스업데이트가 하는 일패키지 및 서비스
2.1SiMa.ai 패키지를 그 자리에서 업그레이드합니다. 새 이미지를 기록하지 않습니다.확인되지 않았습니다. 업데이트 후에 확인하십시오.
3.0 이상전체 루트 파일 시스템을 비활성 슬롯에 기록하고 그 슬롯으로 부팅합니다.업데이트가 오버레이를 지우지 않는 한 /data의 오버레이 파일 시스템에 유지됩니다. 지워진 경우 다시 설치하십시오.
  • 릴리스 2.1에서는 업데이트가 U-Boot 환경을 초기화합니다. dtbos를 비롯해 변경한 변수는 업데이트 후에 다시 설정하십시오.
  • 보드를 복구하거나 전체 이미지를 기록하면 어느 릴리스에서든 패키지가 제거됩니다.
  • 다시 설치할 수 있도록 .deb 파일과 설치한 항목의 목록을 보관하십시오.
  • 릴리스 3.0 이상에서는 sima-cli update --inspect로 오버레이 파일 시스템의 내용을 확인할 수 있습니다.

플랫폼 릴리스 3.0은 아직 릴리스되지 않았습니다. 여기서는 sima-cli의 시스템 업데이트 가이드를 바탕으로 동작을 설명하며, 변경될 수 있습니다.

다루지 않는 내용​

  • 패키지가 미리 포함된 전체 eLxr 이미지 빌드. eLxr 또는 Yocto를 참조하십시오.
  • 자체 패키지 저장소에 패키지 게시.

다음 단계​