From f621f9e27942ae0776b0a4d1bf4065e7165bdf88 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Wed, 12 Mar 2025 14:38:13 +0000 Subject: [PATCH 1/9] Align partition start boundaries to 8M Higher-capacity cards (particularly Raspberry Pi 128GB A2) have an 8MB preferred erase size, which is a good indication of the flash block size. Other large cards may also benefit. Signed-off-by: Jonathan Bell --- export-image/prerun.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/export-image/prerun.sh b/export-image/prerun.sh index 6a5309a..9f1b496 100755 --- a/export-image/prerun.sh +++ b/export-image/prerun.sh @@ -13,7 +13,7 @@ BOOT_SIZE="$((512 * 1024 * 1024))" ROOT_SIZE=$(du -x --apparent-size -s "${EXPORT_ROOTFS_DIR}" --exclude var/cache/apt/archives --exclude boot/firmware --block-size=1 | cut -f 1) # All partition sizes and starts will be aligned to this size -ALIGN="$((4 * 1024 * 1024))" +ALIGN="$((8 * 1024 * 1024))" # Add this much space to the calculated file size. This allows for # some overhead (since actual space usage is usually rounded up to the # filesystem block size) and gives some free space on the resulting From 2e5d13e1b965489b8088acea26877b7f0d8af54a Mon Sep 17 00:00:00 2001 From: Richard Oliver Date: Thu, 13 Mar 2025 17:29:19 +0000 Subject: [PATCH 2/9] export-image: generate bmap file if bmaptool is available --- README.md | 2 +- export-image/05-finalise/01-run.sh | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 105f561..db46f87 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ To install the required dependencies for `pi-gen` you should run: ```bash apt-get install coreutils quilt parted qemu-user-static debootstrap zerofree zip \ dosfstools libarchive-tools libcap2-bin grep rsync xz-utils file git curl bc \ -gpg pigz xxd arch-test +gpg pigz xxd arch-test bmap-tools ``` The file `depends` contains a list of tools needed. The format of this diff --git a/export-image/05-finalise/01-run.sh b/export-image/05-finalise/01-run.sh index c59c23b..6012957 100755 --- a/export-image/05-finalise/01-run.sh +++ b/export-image/05-finalise/01-run.sh @@ -3,6 +3,7 @@ IMG_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.img" INFO_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.info" SBOM_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.sbom" +BMAP_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.bmap" on_chroot << EOF update-initramfs -k all -c @@ -100,6 +101,12 @@ zerofree "${ROOT_DEV}" unmount_image "${IMG_FILE}" +if hash bmaptool 2>/dev/null; then + bmaptool create \ + -o "${BMAP_FILE}" \ + "${IMG_FILE}" +fi + mkdir -p "${DEPLOY_DIR}" rm -f "${DEPLOY_DIR}/${ARCHIVE_FILENAME}${IMG_SUFFIX}.*" @@ -128,4 +135,7 @@ esac if [ -f "${SBOM_FILE}" ]; then xz -c "${SBOM_FILE}" > "$DEPLOY_DIR/image_$(basename "${SBOM_FILE}").xz" fi +if [ -f "${BMAP_FILE}" ]; then + xz -c "${BMAP_FILE}" > "$DEPLOY_DIR/image_$(basename "${BMAP_FILE}").xz" +fi cp "$INFO_FILE" "$DEPLOY_DIR/" From 04880a5a0f30099e5cd264d3c8fe201bbf55ed7c Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Tue, 15 Apr 2025 12:10:35 +0100 Subject: [PATCH 3/9] Remove old qemu-arm-static reference --- export-image/00-allow-rerun/00-run.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/export-image/00-allow-rerun/00-run.sh b/export-image/00-allow-rerun/00-run.sh index dd67f4c..860ed51 100755 --- a/export-image/00-allow-rerun/00-run.sh +++ b/export-image/00-allow-rerun/00-run.sh @@ -1,9 +1,5 @@ #!/bin/bash -e -if [ ! -x "${ROOTFS_DIR}/usr/bin/qemu-arm-static" ]; then - cp /usr/bin/qemu-arm-static "${ROOTFS_DIR}/usr/bin/" -fi - if [ -e "${ROOTFS_DIR}/etc/ld.so.preload" ]; then mv "${ROOTFS_DIR}/etc/ld.so.preload" "${ROOTFS_DIR}/etc/ld.so.preload.disabled" fi From 260c17db0e1904bec665e65a507a296279f22703 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Thu, 13 Mar 2025 16:17:41 +0000 Subject: [PATCH 4/9] stage2: trim down third party firmware package list --- stage2/02-net-tweaks/00-packages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stage2/02-net-tweaks/00-packages b/stage2/02-net-tweaks/00-packages index d446837..b8c319a 100644 --- a/stage2/02-net-tweaks/00-packages +++ b/stage2/02-net-tweaks/00-packages @@ -1,4 +1,4 @@ -wpasupplicant wireless-tools firmware-atheros firmware-brcm80211 firmware-libertas firmware-misc-nonfree firmware-realtek +wpasupplicant wireless-tools firmware-atheros firmware-brcm80211 firmware-libertas firmware-realtek firmware-mediatek firmware-marvell-prestera- raspberrypi-net-mods network-manager net-tools From ca3d54e7e77372e9018893ab482a9fb1ad0049eb Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Tue, 15 Apr 2025 11:48:57 +0100 Subject: [PATCH 5/9] Add TEMP_REPO variable --- README.md | 7 +++++++ build.sh | 1 + export-image/02-set-sources/01-run.sh | 1 + stage0/00-configure-apt/00-run.sh | 7 +++++++ 4 files changed, 16 insertions(+) diff --git a/README.md b/README.md index db46f87..c27bfe3 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,13 @@ The following environment variables are supported: will not be included in the image, making it safe to use an `apt-cacher` or similar package for development. + * `TEMP_REPO` (Default: unset) + + An additional temporary apt repo to be used during the build process. This + could be useful if you require pre-release software to be included in the + image. The variable should contain sources in [one-line-style format](https://manpages.debian.org/stable/apt/sources.list.5.en.html#ONE-LINE-STYLE_FORMAT). + "RELEASE" will be replaced with the RELEASE variable. + * `BASE_DIR` (Default: location of `build.sh`) **CAUTION**: Currently, changing this value will probably break build.sh diff --git a/build.sh b/build.sh index f35da03..4d3902c 100755 --- a/build.sh +++ b/build.sh @@ -222,6 +222,7 @@ export PUBKEY_SSH_FIRST_USER export CLEAN export APT_PROXY +export TEMP_REPO export STAGE export STAGE_DIR diff --git a/export-image/02-set-sources/01-run.sh b/export-image/02-set-sources/01-run.sh index 6d50496..d93efdf 100755 --- a/export-image/02-set-sources/01-run.sh +++ b/export-image/02-set-sources/01-run.sh @@ -1,6 +1,7 @@ #!/bin/bash -e rm -f "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache" +rm -f "${ROOTFS_DIR}/etc/apt/sources.list.d/00-temp.list" find "${ROOTFS_DIR}/var/lib/apt/lists/" -type f -delete on_chroot << EOF apt-get update diff --git a/stage0/00-configure-apt/00-run.sh b/stage0/00-configure-apt/00-run.sh index 926c4c6..1b7e03f 100755 --- a/stage0/00-configure-apt/00-run.sh +++ b/stage0/00-configure-apt/00-run.sh @@ -12,6 +12,13 @@ else rm -f "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache" fi +if [ -n "$TEMP_REPO" ]; then + install -m 644 /dev/null "${ROOTFS_DIR}/etc/apt/sources.list.d/00-temp.list" + echo "$TEMP_REPO" | sed "s/RELEASE/$RELEASE/g" > "${ROOTFS_DIR}/etc/apt/sources.list.d/00-temp.list" +else + rm -f "${ROOTFS_DIR}/etc/apt/sources.list.d/00-temp.list" +fi + cat files/raspberrypi.gpg.key | gpg --dearmor > "${STAGE_WORK_DIR}/raspberrypi-archive-stable.gpg" install -m 644 "${STAGE_WORK_DIR}/raspberrypi-archive-stable.gpg" "${ROOTFS_DIR}/etc/apt/trusted.gpg.d/" on_chroot <<- \EOF From bcf2bc1d98641f2d340b175978e7d7d0eececa5c Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Mon, 28 Apr 2025 13:29:12 +0100 Subject: [PATCH 6/9] stage4: do not install system-config-printer (replaced with rprinters by ui-mods) --- stage4/05-print-support/00-packages | 1 - 1 file changed, 1 deletion(-) diff --git a/stage4/05-print-support/00-packages b/stage4/05-print-support/00-packages index e9c36bd..462d36c 100644 --- a/stage4/05-print-support/00-packages +++ b/stage4/05-print-support/00-packages @@ -1,2 +1 @@ cups -system-config-printer From 79afc6e5e7fb353ccc5f53f3803298df8dcfb389 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Mon, 28 Apr 2025 16:12:23 +0100 Subject: [PATCH 7/9] export-image: remove image_ prefix from non-image files --- export-image/05-finalise/01-run.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/export-image/05-finalise/01-run.sh b/export-image/05-finalise/01-run.sh index 6012957..107becf 100755 --- a/export-image/05-finalise/01-run.sh +++ b/export-image/05-finalise/01-run.sh @@ -133,9 +133,9 @@ none | *) esac if [ -f "${SBOM_FILE}" ]; then - xz -c "${SBOM_FILE}" > "$DEPLOY_DIR/image_$(basename "${SBOM_FILE}").xz" + xz -c "${SBOM_FILE}" > "$DEPLOY_DIR/$(basename "${SBOM_FILE}").xz" fi if [ -f "${BMAP_FILE}" ]; then - xz -c "${BMAP_FILE}" > "$DEPLOY_DIR/image_$(basename "${BMAP_FILE}").xz" + xz -c "${BMAP_FILE}" > "$DEPLOY_DIR/$(basename "${BMAP_FILE}").xz" fi cp "$INFO_FILE" "$DEPLOY_DIR/" From 551c58880b6b752d231fcd0cbe9e58096e1e97fc Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Tue, 29 Apr 2025 10:13:23 +0100 Subject: [PATCH 8/9] export-image: Do not compress the bmap file --- export-image/05-finalise/01-run.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/export-image/05-finalise/01-run.sh b/export-image/05-finalise/01-run.sh index 107becf..5cbda20 100755 --- a/export-image/05-finalise/01-run.sh +++ b/export-image/05-finalise/01-run.sh @@ -135,7 +135,5 @@ esac if [ -f "${SBOM_FILE}" ]; then xz -c "${SBOM_FILE}" > "$DEPLOY_DIR/$(basename "${SBOM_FILE}").xz" fi -if [ -f "${BMAP_FILE}" ]; then - xz -c "${BMAP_FILE}" > "$DEPLOY_DIR/$(basename "${BMAP_FILE}").xz" -fi +cp "$BMAP_FILE" "$DEPLOY_DIR/" cp "$INFO_FILE" "$DEPLOY_DIR/" From b9f63ee11b79aca73cde356babd2e1139a31c3c6 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Tue, 6 May 2025 14:19:42 +0100 Subject: [PATCH 9/9] Update release notes --- .../00-release/files/release_notes.txt | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/export-noobs/00-release/files/release_notes.txt b/export-noobs/00-release/files/release_notes.txt index e905541..01662a0 100644 --- a/export-noobs/00-release/files/release_notes.txt +++ b/export-noobs/00-release/files/release_notes.txt @@ -1,5 +1,35 @@ UNRELEASED: - * + * New mouse and keyboard settings application, rasputin, to replace lxinput + * New printer application, rpinters, to replace system-config-printer + * Added swaylock screen lock application for labwc - use ctrl-alt-L to lock, or access via new option in Shutdown Options + * Added separate settings for console and desktop autologin to raspi-config and Raspberry Pi Configuration + * New command-line password prompt application, sudopwd, to replace zenity password prompts + * New command-line dialog tool, zenoty, to replace zenity error, information, warning and question dialogs + * labwc updated to version 0.8.1 + * wf-panel-pi startup optimised - now starts much faster + * Network manager plugin updated from latest upstream code + * Busy indication (watch cursor) added to first boot wizard + * uBlock Origin Lite now installed by default in Chromium, as it is no longer possible to preinstall uBlock Origin + * Added compatibility with recent kernel to GPU plugin and task manager + * Added more default touchscreen associations + * Added ability to select mouse emulation or multitouch mode for touchscreens in Screen Configuration + * Added ability to set monitor on which squeekboard on-screen keyboard is shown in Raspberry Pi Configuration + * Plugins for lxpanel and wf-panel-pi restructured to build from shared projects for each, to reduce any divergence between them + * Apperance Settings and Raspberry Pi Configuration reviewed - various minor inconsistencies between X and Wayland addressed + * HackSpace removed from Bookshelf application + * Bug fix - correctly position panel menus on secondary monitor under X + * Bug fix - prevent desktop pictures overflowing bounds of monitors + * Bug fix - squeekboard not starting unless a specific monitor had been set for it + * Bug fix - some application icons, including Chromium web apps, were incorrect on the taskbar + * Bug fix - greeter keyboard layout was being reset on updates + * Bug fix - main menu submenus were not scrollable if they didn't fit the screen + * Bug fix - Connect plugin now more accurately detects when Connect is installed and uninstalled + * Bug fix - modified wfpanelctl to work correctly when called via PackageKit + * Various other minor tweaks and updates + * Chromium updated to 135.0.7049.84 + * Firefox updated to 138.0 + * Raspberry Pi firmware bc7f439c234e19371115e07b57c366df59cc1bc7 + * Linux kernel 6.12.25 - 3dd2c2c507c271d411fab2e82a2b3b7e0b6d3f16 2024-10-22: * labwc compositor now used as the default on all models of Raspberry Pi * wf-panel-pi now loads plugins dynamically at runtime