Beim ersten Start des eigens erstellten Images fällt auf, dass das Tastaturlayout nicht dem QWERTZ-Layout entspricht. Dies kann auf unterschiedliche Weise geändert werden.
Voraussetzung dafür ist jedoch die korrekte Keymap. Die meisten Quellen im Internet verwenden Dateien aus verschiedenen Linux-Distributionen, Yocto bzw. Poky stellen diese aber auch selbst bereit. Dazu müssen im Image folgende Pakete hinzugefügt werden:
meta-raspilab/recipe-core/images/raspilab-iumage.bb
IMAGE_INSTALL += " \
kbd-keymaps \
"
Dies sollte ausreichen, um die Keymaps in das Image zu kopieren. Zudem besteht die Möglichkeit, das DISTRO-FEATURE "keyboard" hinzuzufügen, wobei dies in meinem Fall ohne Auswirkungen blieb.
meta-raspilab/conf/layers.conf
DISTRO_FEATURES += "keyboard"
Das Tastatur-Layout wird jedoch nach wie vor nicht automatisch geladen. Es besteht nun die Möglichkeit, das deutsche Tastatur-Layout in /etc/profile mit loadkeys de-latin1 zu laden. Ich habe mich jedoch für einen Systemd-Service entschieden.
Zu diesem Zweck wird zunächst ein Rezept angelegt, welches die Systemd-Service-Datei in das Dateisystem kopiert und der Service aktiviert.
meta-raspilab/recipes-core/l18n/kbdlayout_0.1.bb
SUMMARY = "bitbake-layers recipe"
DESCRIPTION = "Setup a default (german) keyboard-layout for the console only"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
inherit systemd
PV = "0.2"
PACKAGE_ARCH = "raspberrypi4_64"
SRCREV = "HEAD"
SRC_URI = "file://kbdlayout.service"
do_install () {
install -d ${D}/${base_libdir}/systemd/system
install -m 0644 ${WORKDIR}/kbdlayout.service ${D}/${base_libdir}/systemd/system/
}
NATIVE_SYSTEMD_SUPPORT = "1"
SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE:${PN} = "kbdlayout.service"
FILES:${PN} += "${base_libdir}/systemd"
Im Anschluss ist die Erstellung der Datei erforderlich, welche den Systemd-Service beschreibt. Diese wird entweder im selben Verzeichnis wie das Rezept oder aber in ein Unterverzeichniss files relativ zum Rezept abgelegt.
meta-raspilab/recipes-core/l18n/files/kbdlayout.service
[Unit]
Description=Loads custom keymap if available
[Service]
ExecStart=/bin/sh -c '/usr/bin/loadkeys de-latin1'
[Install]
WantedBy=multi-user.target
Im Anschluss besteht die Möglichkeit, das Image neu zu erstellen und auf eine SD-Karte zu schreiben. Das Tastaturlayout wird bereits vor der Anmeldung geladen.
