2016-11-28 2 views
0

Ich habe eine funktionierende Yocto Bild für eine RaspberryPi3. Ich möchte 3 Skriptdateien/etc/ppp/peers/hinzufügen. Ich hätte gedacht, dass das Hinzufügen von nicht kompilierten Dateien zum Root-Dateisystem eine ziemlich generische Sache zu tun ist, aber die einzigen Beispiele, die ich finden kann, sind kompilierte Dateien und erben die Autotools Rezept.Wie füge ich einem Raspberry Pi-Dateisystem Skriptdateien hinzu, die ein benutzerdefiniertes Yocto-Rezept verwenden?

Gibt es ein Beispiel für das Hinzufügen von Textdateien oder Skriptdateien zu einem Yocto-Root-Dateisystem irgendwo?
Entweder eine Anleitung zum Schreiben oder ein vorhandenes Rezept, das eine Reihe von Textdateien aufnimmt und auf die rootfs des Ziels stellt.

Ich muss etwas verpassen, weil ich die Dateien nicht auf dem System abrufen kann.
Ich habe versucht, mit do_deploy, aber das bringt Dateien in meine ../tmp/deploy/images/raspberrypi3/etc/ppp/ was hilfreich wäre für Skripte zur Bildbereitstellung. Es ist aber nicht das, was ich möchte, da die Skripte auf dem Ziel sein müssen.

Das Ausführen von do_install() mit oder ohne Leerzeichen do_compile() hat nicht dazu geführt, dass auch Dinge auf das Ziel gelangt sind. Es sei denn, es gibt etwas über die Verwendung von $ {sysconfdir} oder $ {IMAGE_ROOTFS} oder $ {S} oder $ {D} oder $ {DEPLOYDIR} oder $ {WORKDIR}, das für den Pi spezifisch ist. Ich würde ein Beispiel für mein Skript geben, aber es in den letzten zwei Tagen so oft geändert, dass es nicht viel wert ist, nur eine Iteration zu teilen.

Alles, was dem folgenden ähnelt; $ {IMAGE_ROOTFS} möglicherweise ersetzt durch $ {D} oder fehlt do_install ersetzt durch do_deploy.
Es gibt wahrscheinlich andere Permutationen, die ich versucht habe.

# 
# 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" 

Ich kann eine Menge von helloworld.c finden und Beispiele automatisieren. Es muss einige Grundlegende für das Hinzufügen von Skripts irgendwo geben? Mein googlefu ist sehr schwach, ich beschuldige eine anhaltende Kälte.

Antwort

1

Sie sollten install -m 0755 ${WORKDIR}/<provider>-ppp ${D}${sysconfdir}/ppp/peer in Ihrem Rezept verwenden. Hast du das resultierende Paket zu deinem Bildrezept hinzugefügt? Sie können unter ${WORKDIR}/packages-split/${PN} nachsehen, ob Ihre Dateien ordnungsgemäß gepackt wurden.

+0

Vielen Dank. Die Verwendung von '$ {D} $ {sysconfdir}/ppp/peer' anstelle von $ {IMAGE_ROOTFS} $ {sysconfdir}/ppp/peers' war das Hauptproblem, mit dem ich konfrontiert war. Wissen, dass $ {WORKDIR}/packages-split/$ {PN} da sein sollte und ausgefüllt wurde, war auch sehr hilfreich. – TafT

Verwandte Themen