Добавьте пользовательский исполняемый скрипт bash и его скрипт systemd в Yocto Build - PullRequest
0 голосов
/ 17 мая 2018

Я написал простой скрипт для использования 3G UMTS Dongle с моей платой.

Сценарий bash выглядит следующим образом:

#!/bin/bash

sleep 1;
/usr/bin/tmux new-session -d -s Cloud
/usr/bin/tmux set-option set-remain-on-exit on
/usr/bin/tmux new-window -d -n 'usb_modeswitch' -t Cloud:2 '/usr/sbin/usb_modeswitch --default-vendor 12d1 --default-product 1446 -J';

/usr/bin/tmux new-window -d -n 'wvdial' -t Cloud:1 'sleep 10; /usr/bin/wvdialconf; /usr/bin/wvdial';

и соответствующий ему systemd сценарий выглядит следующим образом:

[Unit]
Description=Enable UMTS Dongle for Cloud Connectivity

[Service]
Type=oneshot
ExecStart=/usr/umts.sh
RemainAfterExit=true
[Install]
WantedBy=default.target

У меня есть другие такие systemd файлы для определенных файлов приложений, которые я сейчас записал непосредственно на доске, но хочу, чтобы они были доступны для каждого изображения, которое я создаю для новой доски.

Как мне с этим справиться с точки зрения рецепта?

Я думал о создании собственного слоя Yocto:

   meta-custom
       ------ recipes-custom/
                     ------------- files / all such scripts here

               ------------  custom_1.0.bb

Должен ли я выполнять только do_install() сценарии bash в рецептах custom_1.0.bb? поскольку скрипты не требуют компиляции?

1 Ответ

0 голосов
/ 17 мая 2018

Создание собственного слоя - хорошая идея, и структура, которую вы перечислили, тоже подойдет.

в ваших рецептах вы можете создавать пустые задачи do_compile и do_configure \ вот псевдо рецепт. И не забудьте добавить его в IMAGE_INSTALL в конец, чтобы ваша сборка изображения воспринимала его как зависимость.

SRC_URI = "file://file.service \
           file://file.sh \
          "
inherit systemd

do_configure(){
  :
}

do_compile() {
  :
}

do_install() {
    install -Dm 0644 ${WORKDIR}/<file.service> ${D}/${systemd_unitdir}/system/<file.service>
    install -Dm 0755 ${WORKDIR}/<file.sh> ${D}/${bindir}/<file.sh>
    ...
}

SYSTEMD_SERVICE_${PN} = "<file.service>"
...