new file mode 100644
@@ -0,0 +1,25 @@
+image boot.vfat {
+ vfat {
+ files = {
+#BOOT_FILES#
+ }
+ }
+
+ size = 32M
+}
+
+image sdcard.img {
+ hdimage {
+ }
+
+ partition boot {
+ partition-type = 0xC
+ bootable = "true"
+ image = "boot.vfat"
+ }
+
+ partition rootfs {
+ partition-type = 0x83
+ image = "rootfs.ext4"
+ }
+}
@@ -7,6 +7,23 @@ BOARD_NAME="$(basename ${BOARD_DIR})"
GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.cfg"
GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
+# generate genimage from template if a board specific variant doesn't exists
+if [ ! -e "${GENIMAGE_CFG}" ]; then
+ GENIMAGE_CFG="${BINARIES_DIR}/genimage.cfg"
+ FILES=()
+
+ for i in "${BINARIES_DIR}"/*.dtb "${BINARIES_DIR}"/rpi-firmware/*; do
+ FILES+=( "${i#${BINARIES_DIR}/}" )
+ done
+
+ KERNEL=$(sed -n 's/^kernel=//p' "${BINARIES_DIR}/rpi-firmware/config.txt")
+ FILES+=( "${KERNEL}" )
+
+ BOOT_FILES=$(printf '\\t\\t\\t"%s",\\n' "${FILES[@]}")
+ sed "s|#BOOT_FILES#|${BOOT_FILES}|" "${BOARD_DIR}/genimage.cfg.in" \
+ > "${GENIMAGE_CFG}"
+fi
+
# Pass an empty rootpath. genimage makes a full copy of the given rootpath to
# ${GENIMAGE_TMP}/root so passing TARGET_DIR would be a waste of time and disk
# space. We don't rely on genimage to build the rootfs image, just to insert a
The rpi genimage configurations are all identical, except for the boot partition files, which include: - Device tree files (*.dtb) - rpi-firmware files (rpi-firmware/*) - Kernel image (Image/zImage) All of these are quite simple to figure out programatically based on the content of BINARIES_DIR, so extend post-image.sh to fall back to generating a genimage configuration based on genimage.cfg.in if a board specific one does not exist. Signed-off-by: Peter Korsgaard <peter@korsgaard.com> --- board/raspberrypi/genimage.cfg.in | 25 +++++++++++++++++++++++++ board/raspberrypi/post-image.sh | 17 +++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 board/raspberrypi/genimage.cfg.in