Додавання пакетів і служб в eLxr
Образ Modalix побудовано на eLxr — дистрибутиві, похідному від Debian. Програмне забезпечення
додають на плату так само, як у Debian: у вигляді пакетів, які встановлюють за допомогою apt.
На цій сторінці показано, як установити пакет, як запакувати власну службу та що оновлення
прошивки робить із вашими змінами.
Цю сторінку написано на основі загальнодоступних репозиторіїв SiMa.ai. Приклад пакета зібрали та встановили в контейнері Debian. Кроки в тому вигляді, у якому їх тут наведено, на платі не виконували.
Установлення пакета
-
Під’єднайте плату до мережі, з якої доступні репозиторії пакетів.
-
Оновіть списки пакетів:
sima@modalix:~$ sudo apt update -
Установіть пакет. Наприклад, щоб устано вити інструменти I2C:
sima@modalix:~$ sudo apt install i2c-tools
SiMa.ai постачає власне програмне забезпечення на плату у вигляді пакетів Debian. Щоб переглянути пакети SiMa.ai на платі:
sima@modalix:~$ dpkg -l | grep simaai
Пакування власної служби
Щоб запускати власну програму як службу, зберіть для неї пакет Debian. Пакет установлює
файли, а його сценарій після встановлення вмикає службу. У цьому прикладі пакується програма
з назвою my-app.
-
На хості збирання с творіть таке дерево каталогів. Розмістіть програму в
usr/bin/my-app. Вона має працювати на платі, тому зберіть її для arm64. Про контейнер збирання див. у розділі Збирання BSP з вихідного коду.my-app/├── DEBIAN/│ ├── control│ └── postinst├── lib/systemd/system/my-app.service└── usr/bin/my-app -
Створіть
DEBIAN/control. У поліDependsперелічено пакети, потрібні вашій програмі:Package: my-appVersion: 1.0.0Section: utilsPriority: optionalArchitecture: arm64Depends: python3Maintainer: Your Name <you@example.com>Description: Example service for a Modalix board -
Створіть файл юніта
lib/systemd/system/my-app.service:[Unit]Description=My applicationAfter=network.target[Service]Type=simpleExecStart=/usr/bin/my-appRestart=on-failureRestartSec=5[Install]WantedBy=multi-user.target -
Створіть
DEBIAN/postinst. Під час установлення пакета цей сценарій вмикає та запускає службу:#!/bin/shset -eif [ -d /run/systemd/system ]; thensystemctl daemon-reloadsystemctl enable my-app.servicesystemctl restart my-app.servicefi -
Зробіть сценарій і програму виконуваними та зберіть пакет:
sima-user@sima-user-machine:~$ chmod 0755 my-app/DEBIAN/postinst my-app/usr/bin/my-appsima-user@sima-user-machine:~$ dpkg-deb --root-owner-group --build my-app my-app_1.0.0_arm64.deb -
Скопіюйте пакет на плату та встановіть його.
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 -
Перевірте, що служба працює, і прочитайте її журнал:
sima@modalix:~$ systemctl status my-app.servicesima@modalix:~$ journalctl -u my-app.service
Повний приклад такого пакета — це утиліта для камер MIPI у репозиторії SiMa.ai Insight.
Що оновлення прошивки робить із вашими змінами
sima-cli update працює по-різному в кожній лінійці випусків, тому з вашими пакетами він
поводиться по-різному.
| Випуск платформи | Що робить оновлення | Ваші пакети та служби |
|---|---|---|
| 2.1 | Оновлює пакети SiMa.ai на місці. Новий образ не записується. | Не підтверджено. Перевірте їх після оновлення. |
| 3.0 і новіші | Записує повну кореневу файлову систему в неактивний слот і завантажується з нього. | Зберігаються в оверлейній файловій системі на /data, якщо оновлення не очищує її. Якщо очищує, установіть їх знову. |
- У випуску 2.1 оновлення скидає середовище U-Boot. Після оновлення знову задайте
dtbosта інші змінні, які ви змінювали. - Відновлення плати або запис на неї повного образу видаляє ваші пакети в будь-якому випуску.
- Зберігайте свої файли
.debі перелік установленого, щоб можна було встановити їх знову. - У випуску 3.0 і новіших
sima-cli update --inspectпоказує, що містить оверлейна файлова система.
Випуск платформи 3.0 ще не вийшов. Його поведінку тут описано за
посібником з оновлення системи
для sima-cli, і вона може змінитися.
Що не охоплено
- Збирання повного образу eLxr, який уже містить ваші пакети. Див. eLxr чи Yocto.
- Публікація пакетів у власному репозиторії пакетів.
Наступні кроки
- Збирання BSP з вихідного коду: збирання ядра, U-Boot і дерев пристроїв.
- Дерева пристроїв та оверлеї: опис нового обладнання для ядра.
- Оновлення прошивки: оновлення плати образом SiMa.ai.