Как добавить файлы сценария в файловую систему Raspberry Pi, используя собственный рецепт Yocto?

У меня есть рабочий образ Yocto для RaspberryPi3. Я хочу добавить 3 файла сценария / etc / ppp / peers /. Я бы подумал, что добавление нескомпилированных файлов в корневую файловую систему было довольно обычным делом, но единственные примеры, которые я могу найти, - это использование скомпилированных файлов и наследование рецепта autotools.

Есть ли здесь пример того, как добавить текстовые файлы или файлы сценариев в корневую файловую систему Yocto?
Либо How To write up, либо существующий рецепт, который берет набор текстовых файлов и помещает их в rootfs целевого объекта.

Мне, должно быть, чего-то не хватает, потому что я не могу загрузить файлы в систему.
Я пробовал использовать do_deploy, но это помещает файлы в мои ../tmp/deploy/images/raspberrypi3/etc/ppp/, что было бы полезно для сценарии для помощи в развертывании образа. Но это не то, что я хочу, поскольку сценарии должны быть нацелены.

Выполнение do_install () с пустым do_compile () или без него также не привело к попаданию в цель. Если только не используется $ {sysconfdir} или $ {IMAGE_ROOTFS}, или $ {S}, или $ {D}, или $ {DEPLOYDIR}, или $ {WORKDIR}, что является специфическим для Pi. Я бы привел пример своего сценария, но, изменив его так много раз за последние два дня, не стоит делиться только одной итерацией.

Все, что похоже на следующее: $ {IMAGE_ROOTFS}, возможно, заменен на $ {D} или отсутствующий do_install заменен на do_deploy.
Возможно, я пробовал другие варианты.

#
# Copy the ppp script files for <vendor> chips to the target filesystem
# These files are based on the details provided in 
#

SUMMARY = "PPP Scripts for ..."
SECTION = "net"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
DESCRIPTION = "A set of Linux PPP scripts blar blar"

RDEPENDS_${PN} = "ppp"

SRC_URI += "file://<provider>-ppp"
SRC_URI += "file://<provider>-chat-connect"
SRC_URI += "file://<provider>-chat-disconnect"

S = "${WORKDIR}"

#PACKAGES =+ "${PN} ${PN}-staticdev"

#DEPLOYDIR = "${WORKDIR}/deploy-${PN}"

#D = "${DEPLOYDIR}"

inherit allarch

# Install script on target's root file-system
do_install () {
    # Install init script and default settings
    install -d ${IMAGE_ROOTFS}${sysconfdir}
    install -d ${IMAGE_ROOTFS}${sysconfdir}/ppp/
    install -d ${IMAGE_ROOTFS}${sysconfdir}/ppp/peers/
    install -m 0755 ${S}/<provider>-ppp ${IMAGE_ROOTFS}${sysconfdir}/ppp/peers/
    install -m 0755 ${S}/<provider>-chat-connect ${IMAGE_ROOTFS}${sysconfdir}/ppp/peers/
    install -m 0755 ${S}/<provider>-chat-disconnect ${IMAGE_ROOTFS}${sysconfdir}/ppp/peers/
}

# Mark the files which are part of this package
FILES_${PN} += "${sysconfdir}/ppp/"
FILES_${PN} += "${sysconfdir}/ppp/peers/"
FILES_${PN} += "${sysconfdir}/ppp/peers/<provider>-ppp"
FILES_${PN} += "${sysconfdir}/ppp/peers/<provider>-chat-connect"
FILES_${PN} += "${sysconfdir}/ppp/peers/<provider>-chat-disconnect"

Я могу найти много helloworld.c и автоматизировать примеры. Где-то должны быть какие-то базовые для добавления скриптов? У меня гуглфу очень слабый, виноват затяжной насморк.


person TafT    schedule 28.11.2016    source источник


Ответы (1)


Вы должны использовать install -m 0755 ${WORKDIR}/<provider>-ppp ${D}${sysconfdir}/ppp/peer в своем рецепте. Вы добавили получившийся пакет в свой рецепт изображения? Вы можете посмотреть ${WORKDIR}/packages-split/${PN}, чтобы убедиться, что ваши файлы были правильно упакованы.

person Anders    schedule 29.11.2016
comment
Спасибо. Использование ${D}${sysconfdir}/ppp/peer вместо ${IMAGE_ROOTFS}${sysconfdir}/ppp/peers было ключевой проблемой, с которой я столкнулся. Знайте, что $ {WORKDIR} / packages-split / $ {PN} должен быть там, и заполнение также было очень полезным. - person TafT; 30.11.2016