[LINUX] Rezept in Yocto hinzufügen (Rezept hinzufügen, das nur Dateien kopiert)

Einführung

Ich benutze Yocto und habe mich gefragt: "Wie schreibe ich ein Rezept, das einfach eine Datei in root fs kopiert?" Und beschreibe das Rezept, das ich gemacht habe.

Was du machen willst

Ich möchte Dateien und Verzeichnisse in root fs kopieren. Die hier genannten Dateien und Verzeichnisse sind nicht der vom Rezept erstellte Code. Eine Datei, die einfach kopiert wurde.

Umweltvorbereitung

Verwenden Sie Zeus. https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=zeus

Referenz-Release-Aktivität

conf/local.conf

MASCHINE kann alles sein, aber wählen Sie die Umgebung für Qemu. Hier wird die arm64-Umgebung verwendet.

MACHINE ?= "qemuarm64"

Rezept zu erstellen

$ tree meta-mylayer/
meta-mylayer/
├── COPYING.MIT
├── README
├── conf
│   └── layer.conf
└── recipes-myhellobin
    └── myhellobin
        ├── myhellobin
        │   ├── hello.bin    <-------Entsprechende Datei(Dateien nur zum Kopieren)
        │   └── hoge.tar.gz  <-------Entsprechende Datei(Dateien nur zum Kopieren)
        └── myhellobin.bb

hoge.tar.gz

Der Inhalt von hoge.tar.gz ist wie folgt. Es gibt nur eine passende Textdatei.

$ tree hoge
hoge
├── hoge01.txt
└── hoge02.txt

Referenziertes Rezept

Als ich nach einem vorhandenen Rezept suchte, gab es ein Rezept, das die Datei nach / etc kopierte, also habe ich darauf verwiesen. base-files_3.0.14.bb

myhellobin.bb

[base-files_3.0.14.bb](https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/recipes-core/base-files/base-files_3.0.14.bb?h= Hier ist myhellobin.bb basierend auf zeus).

Hello.bin zu / home / root Kopieren Sie einfach das Hoge-Verzeichnis nach / home / root, / etc, / usr / lib.

SUMMARY = "copy files"
SECTION = "BASE"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://hello.bin \
file://hoge.tar.gz \
"

S = "${WORKDIR}"
INHIBIT_DEFAULT_DEPS = "1"

do_install() {
    install -d ${D}/home/root
    install -d ${D}/etc
    install -d ${D}/usr/lib

    install -m 0755 ${WORKDIR}/hello.bin ${D}/home/root
    cp -r ${WORKDIR}/hoge ${D}/home/root
    cp -r ${WORKDIR}/hoge ${D}/etc
    cp -r ${WORKDIR}/hoge ${D}/usr/lib
}

FILES_${PN} = "/"

Kopieren Sie zunächst das hoge-Verzeichnis mit dem Befehl tar

    tar vxf ${WORKDIR}/hoge.tar.gz -C ${D}/home/root

Ich dachte, ich sollte es schreiben, aber ich habe den Befehl cp verwendet, weil er im Arbeitsverzeichnis ohne Erlaubnis durch die Standardoperation (?) Von bitbake erweitert wird.

Memo

INHIBIT_DEFAULT_DEPS

https://www.yoctoproject.org/docs/latest/ref-manual/ref-manual.html#var-INHIBIT_DEFAULT_DEPS

Prevents the default dependencies, namely the C compiler and standard C library (libc), from being added to DEPENDS. > This variable is usually used within recipes that do not require any compilation using the C compiler.

Set the variable to "1" to prevent the default dependencies from being added.

Bedeutet das, 1 für Rezepte festzulegen, die keinen Compiler verwenden?

Recommended Posts

Rezept in Yocto hinzufügen (Rezept hinzufügen, das nur Dateien kopiert)
So fügen Sie einer PDF-Datei Seitenzahlen hinzu (in Python)
Extrahieren Sie nur Elemente, die bestimmte Bedingungen in Python erfüllen