Um eigene Programme und Einstellungen an einem Image vorzunehmen, empfiehlt es sich, einen eigenen Layer zu erstellen. Dies erfolgt nach Einrichtung der Build-Umgebung mittels der folgenden Befehle:
bitbake-layers create-layer ../poky-kirkstone/meta-raspilab
bitbake-layers add-layer ../poky-kirkstone/meta-raspilab
In der Folge wird die Verzeichnisstruktur erstellt und der neue Layer der Build-Umgebung hinzugefügt. Im Anschluss kann die Datei mit der Beschreibung des Images erstellt werden. Dazu wird im neu angelegten Layer unter recipes-core ein Verzeichnis mit dem Namen images angelegt und dort eine Datei mit der Bezeichnung raspilab-image.bb erstellt.
mkdir -p ../poky-kirkstone/meta-raspilab/recipes-core/images
nano ../poky-kirkstone/meta-raspilab/recipes-core/images/raspilab-image.bb
SUMMARY = "RaspiLab production image"
LICENSE = "MIT"
inherit core-image
Das Image ist nun grundsätzlich angelegt und könnte erstellt werden. In dieser Datei lassen sich weitere Programme oder Features zum Image hinzufügen. Zu diesem Zweck muss die Variable IMAGE_INSTALL erweitert werden. Darüber hinaus besteht die Möglichkeit, mehrere Programme in einer Variablen zusammenzufassen. Ein möglicher Aufbau dieser Variablen sieht wie folgt aus.
SUMMARY = "RaspiLab production image"
LICENSE = "MIT"
IMAGE_FSTYPES = "ext4.xz rpi-sdimg"
SDIMG_ROOTFS_TYPE = "ext4.xz"
inherit core-image
CORE_OS = "\
openssh \
openssh-keygen \
openssh-sftp-server \
packagegroup-core-boot \
tzdata \
"
EXTRA_TOOLS = " \
nano \
curl \
grep \
i2c-tools \
wget \
"
QT = " \
packagegroup-qt6-essentials \
"
FONTS = "\
ttf-dejavu-sans \
ttf-dejavu-sans-mono \
ttf-dejavu-sans-condensed \
ttf-dejavu-serif \
ttf-dejavu-serif-condensed \
ttf-dejavu-common \
"
IMAGE_INSTALL += " \
${CORE_OS} \
${EXTRA_TOOLS} \
${QT} \
${FONTS} \
"
Das Image kann nun mit bitbake erstellt werden. Dies geschieht mit folgendem Befehl.
bitbake raspilab-image
Das fertige Image befindet sich unter tmp/deploy/images/aspilab-image-raspberrypi4-64.rpi-sdimg und kann mittels dd auf SD-Karte geschreiben werden.
dd if=tmp/deploy/images/raspberrypi4-64/raspilab-image-raspberrypi4-64.rpi-sdimg bs=1M of=/dev/sdb
