From: Peter Korsgaard <peter@korsgaard.com>
To: buildroot@buildroot.org
Cc: Martin Bark <martin@barkynet.com>,
Julien Grossholtz <julien.grossholtz@openest.io>
Subject: [Buildroot] [PATCH 2/3] board/raspberrypi/post-image.sh: generate genimage config from template if not present
Date: Wed, 5 Jul 2023 18:46:15 +0200 [thread overview]
Message-ID: <20230705164616.671351-2-peter@korsgaard.com> (raw)
In-Reply-To: <20230705164616.671351-1-peter@korsgaard.com>
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
diff --git a/board/raspberrypi/genimage.cfg.in b/board/raspberrypi/genimage.cfg.in
new file mode 100644
index 0000000000..fd38b86a0c
--- /dev/null
+++ b/board/raspberrypi/genimage.cfg.in
@@ -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"
+ }
+}
diff --git a/board/raspberrypi/post-image.sh b/board/raspberrypi/post-image.sh
index 6cad20fb9e..9b9eac972b 100755
--- a/board/raspberrypi/post-image.sh
+++ b/board/raspberrypi/post-image.sh
@@ -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
--
2.30.2
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
next prev parent reply other threads:[~2023-07-05 16:46 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-05 16:46 [Buildroot] [PATCH 1/3] board/raspberry: handle dtb overlays for all variants Peter Korsgaard
2023-07-05 16:46 ` Peter Korsgaard [this message]
2023-09-29 7:13 ` [Buildroot] [PATCH 2/3] board/raspberrypi/post-image.sh: generate genimage config from template if not present Peter Korsgaard
2023-07-05 16:46 ` [Buildroot] [PATCH 3/3] board/raspberrypi: drop variant-specific genimage files Peter Korsgaard
2023-07-05 18:10 ` Peter Korsgaard
2023-09-29 7:13 ` Peter Korsgaard
2023-07-06 11:57 ` [Buildroot] [PATCH 1/3] board/raspberry: handle dtb overlays for all variants Peter Korsgaard
2023-07-17 12:13 ` Peter Korsgaard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230705164616.671351-2-peter@korsgaard.com \
--to=peter@korsgaard.com \
--cc=buildroot@buildroot.org \
--cc=julien.grossholtz@openest.io \
--cc=martin@barkynet.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox