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.
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.
Verwenden Sie Zeus. https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=zeus
conf/local.conf
MASCHINE kann alles sein, aber wählen Sie die Umgebung für Qemu. Hier wird die arm64-Umgebung verwendet.
MACHINE ?= "qemuarm64"
$ 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
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.
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?