95 Commits

Author SHA1 Message Date
7dd0d2f6a5 Merge branch 'arm64' into showpiece
Some checks failed
Build images / Build images (push) Failing after 4m36s
2025-11-28 21:11:28 -05:00
Serge Schneider
6e49e53174 Merge branch 'master' into arm64 2025-11-24 01:45:52 +00:00
Serge Schneider
a0785aeb71 Remove wget-log files left behind by debootstrap 2025-11-24 01:44:57 +00:00
Paul
cb05dfcc1c stage2: Re-add cloud-init files to bootfs (#881)
Signed-off-by: paulober <paul.oberosler@raspberrypi.com>
2025-11-24 01:32:51 +00:00
Serge Schneider
f807921292 Merge branch 'master' into arm64 2025-11-03 08:43:49 +00:00
Serge Schneider
a46065d9c0 export-image: fix timesync typo 2025-10-28 12:22:40 +00:00
Serge Schneider
92d1544319 Merge branch 'master' into arm64 2025-10-16 15:30:43 +01:00
Serge Schneider
d2708016d9 stage2: install rpi-connect-lite 2025-10-16 15:29:58 +01:00
Serge Schneider
bbe5f22cb8 stage2: install rpi-usb-gadget 2025-10-16 15:29:04 +01:00
Serge Schneider
378f968fdd Merge branch 'master' into arm64 2025-10-16 15:17:31 +01:00
Serge Schneider
67336fe8b5 Update Raspberry Pi Archive signing key 2025-10-16 15:15:17 +01:00
Serge Schneider
37a421418b Merge branch 'master' into arm64 2025-10-09 14:37:59 +01:00
Serge Schneider
3b77da7113 stage2: preseed console-setup/charmap47 2025-10-09 14:37:29 +01:00
paulober
ba8b9bcb60 Disable ssh fingerprint to console
Signed-off-by: paulober <paul.oberosler@raspberrypi.com>
2025-10-06 14:35:14 +01:00
paulober
db9a45ca9d cloud-init support: Disable emmiting keys to console by default
Signed-off-by: paulober <paul.oberosler@raspberrypi.com>
2025-10-06 14:35:14 +01:00
paulober
c2096dbf89 Drop powerstate change hook for rpi-usb-gadget
Signed-off-by: paulober <44974737+paulober@users.noreply.github.com>
2025-10-06 09:22:59 +01:00
Serge Schneider
7dadcf1fc5 Merge branch 'master' into arm64 2025-09-30 09:14:36 +01:00
Serge Schneider
7385adde4c Update release notes 2025-09-30 09:14:20 +01:00
Serge Schneider
0dfd9a5f4c stage2: install rpi-keyboard-config and rpi-keyboard-fw-update 2025-09-30 09:13:12 +01:00
Serge Schneider
9e53daa3b1 Merge branch 'master' into arm64 2025-09-30 08:31:10 +01:00
Serge Schneider
e46405317c Partially disable cloud-init 2025-09-30 08:30:45 +01:00
Serge Schneider
0a8f9826ce stage2: Enable first boot resize and fstrim service 2025-09-30 08:30:45 +01:00
paulober
372e563633 Add cloud-init support
Signed-off-by: paulober <44974737+paulober@users.noreply.github.com>
2025-09-30 08:30:20 +01:00
Serge Schneider
22dc0ec430 Merge branch 'master' into arm64 2025-09-12 17:21:28 +01:00
Serge Schneider
734e1a6349 Revert "stage5: Remove scratch3, since it wasn't provided for Trixie"
This reverts commit d4cd8f9a57.
2025-09-12 17:17:54 +01:00
Serge Schneider
f9160c08b2 stage4: Disable wayvnc 2025-09-12 17:17:54 +01:00
Serge Schneider
7f6d20cae1 Whitespace fixes 2025-09-05 12:39:13 +01:00
Serge Schneider
05071a97ea build.sh: log skipped non-executable run.sh files 2025-09-05 12:39:13 +01:00
Serge Schneider
c3848a3a37 README.md: mention first run wizard in FIRST_USER_NAME documentation 2025-09-05 12:39:13 +01:00
XECDesign
3bfeac6424 stage0: Change 'Arch' to 'Architectures' in raspbian.sources
Fixes #867
2025-09-05 12:28:59 +01:00
XECDesign
f0f91453e0 Add missing dependency to README and switch from apt-get to apt
Fixes #869
2025-09-05 12:25:40 +01:00
Serge Schneider
7cf36c964b Merge branch 'master' into arm64 2025-08-22 11:35:00 +01:00
Serge Schneider
8887a8834d export-image: pre-populate apt-listchanges database 2025-08-22 11:34:43 +01:00
Serge Schneider
b056b0ba80 Merge branch 'master' into arm64 2025-08-22 10:06:37 +01:00
Serge Schneider
bd0a6abb8d Move print support, rpd-theme and rpd-preferences to stage3 2025-08-22 09:31:29 +01:00
Serge Schneider
349a6a0ae0 Switch stage4 to use meta-packages 2025-08-22 09:31:27 +01:00
Serge Schneider
3bcd9d452a Switch stage3 to use meta-packages 2025-08-22 09:30:17 +01:00
Serge Schneider
ea8117d581 stage5: Remove mu-editor, since it wasn't provided for Trixie 2025-08-19 17:20:48 +01:00
Serge Schneider
9a0758bede Revert "Remove rpi-imager (armhf builds no longer provided)"
This reverts commit c4adcfca4f.
2025-08-19 17:11:11 +01:00
Serge Schneider
b434ecdf5d stage0: Use Debian as base arm64 repo 2025-08-19 17:11:11 +01:00
Serge Schneider
5fe4c02bcf Merge branch 'master' into arm64 2025-08-19 16:51:19 +01:00
Serge Schneider
d4cd8f9a57 stage5: Remove scratch3, since it wasn't provided for Trixie 2025-08-19 15:23:44 +01:00
Serge Schneider
556087cd06 stage5: Remove wolfram-engine, since it wasn't provided for Trixie 2025-08-19 15:23:44 +01:00
Serge Schneider
881aa41129 stage5: Remove realvnc packages, since they weren't provided for Trixie 2025-08-19 15:23:44 +01:00
Serge Schneider
3b4c7e2ab8 stage5: Remove (nu)scratch, since Trixie does not ship SqueakVM 2025-08-19 15:23:44 +01:00
Serge Schneider
04bc6843a9 stage1: add resize to cmdline.txt 2025-08-19 15:23:44 +01:00
Serge Schneider
ccb473a3ba stage2: replace pi-bluetooth with bluez and bluez-firmware 2025-08-19 15:23:44 +01:00
Serge Schneider
c4adcfca4f Remove rpi-imager (armhf builds no longer provided) 2025-08-19 15:23:44 +01:00
Serge Schneider
6baaa073c7 stage4: remove dillo 2025-08-19 15:23:44 +01:00
Serge Schneider
5a978bf9d2 stage4: remove raspberrypi-net-mods, since it's already installed in stage2 2025-08-19 15:23:44 +01:00
Serge Schneider
99068c0004 Replace raspberrypi-ui-mods with new meta-packages 2025-08-19 15:23:44 +01:00
Serge Schneider
59b16f3bb4 stage2: Don't modify journald.conf. This is done via a drop-in config file in sys-mods. 2025-08-19 15:23:44 +01:00
Serge Schneider
e2893c11ab stage2: don't enable regenerate_ssh_host_keys. SSH generates the keys itself now. 2025-08-19 15:23:44 +01:00
Serge Schneider
e324499cf8 stage2: disabling these services doesn't do anything on Trixie 2025-08-19 15:23:44 +01:00
Serge Schneider
131a3757ad stage2: remove nfs-common 2025-08-19 15:23:44 +01:00
Serge Schneider
22601c0e4a stage2: replace dphys-swapfile with rpi-swap 2025-08-19 15:23:44 +01:00
Serge Schneider
9ea6e44d64 stage2: enable pdiffs 2025-08-19 15:23:44 +01:00
Serge Schneider
a078afeba0 stage2: remove resize2fs_once init.d service 2025-08-19 15:23:44 +01:00
Serge Schneider
f6a540d36c Simplify console-setup configuration 2025-08-19 15:23:44 +01:00
Serge Schneider
6811c1dc41 Remove fake-hwclock 2025-08-19 15:23:07 +01:00
Serge Schneider
23e7af35a1 Remove firstboot init script in favour of initramfs and systemd services 2025-08-19 15:23:07 +01:00
Serge Schneider
c4e9044faf Set machine-id to "uninitialized" to signal first boot 2025-08-19 15:23:07 +01:00
Serge Schneider
a62422ce71 stage4: change do_wayland to W2 (labwc) 2025-08-19 15:23:07 +01:00
Serge Schneider
5dc3f5df48 Remove v7l kernel 2025-08-19 15:23:07 +01:00
Serge Schneider
56d7e30356 stage0: modernise apt sources 2025-08-19 15:23:07 +01:00
Serge Schneider
d8ff34585c Refresh patches 2025-08-19 15:23:07 +01:00
Serge Schneider
ec789c7b78 Remove obsolete packages 2025-08-19 15:23:07 +01:00
Serge Schneider
c2cd4e8a62 bookworm -> trixie 2025-08-19 12:09:17 +01:00
3cba93baa6 permissions
All checks were successful
Build images / Build images (push) Successful in 1h37m22s
2025-08-14 18:04:45 -05:00
4a1ae922b4 compress published images 2025-08-14 18:04:45 -05:00
48414ac32f update default wallpaper, video config uses hdmi2 2025-08-14 18:04:45 -05:00
8cea745c7f avoid parallel uploads 2025-08-14 18:04:45 -05:00
34f00ea0ca Fix publish step url 2025-08-14 18:04:45 -05:00
30b2d9413e Define build action 2025-08-14 18:04:45 -05:00
236bea7ae3 initial showpiece patches 2025-08-14 18:04:45 -05:00
Serge Schneider
816f458a99 Merge branch 'master' into arm64 2025-08-14 13:53:40 +01:00
Serge Schneider
52ac7751ca Add e2fsprogs to dependencies 2025-08-14 13:53:28 +01:00
Serge Schneider
05a772481a Merge branch 'master' into arm64 2025-05-28 14:49:11 +01:00
Serge Schneider
26ea1c19ff stage4: remove alacarte and alacarte-specific fixes 2025-05-28 14:47:57 +01:00
Serge Schneider
bf7981f6a4 stage4: remove stage4/03-bookshelf 2025-05-28 14:44:52 +01:00
Serge Schneider
9f8fc6ff6e Merge branch 'master' into arm64 2025-05-13 07:45:46 +01:00
Serge Schneider
e9c2afbdac export-image: Check if bmap file exists before copying 2025-05-13 07:45:25 +01:00
Serge Schneider
6e8dcbfd22 Update release notes 2025-05-13 07:43:36 +01:00
Serge Schneider
5dabc7dc94 Merge branch 'master' into arm64 2025-05-12 12:10:50 +01:00
Serge Schneider
f548f25325 Update release notes 2025-05-12 12:10:31 +01:00
Serge Schneider
49e1078c1b Merge branch 'master' into arm64 2025-05-06 14:20:09 +01:00
Serge Schneider
b9f63ee11b Update release notes 2025-05-06 14:19:42 +01:00
Serge Schneider
551c58880b export-image: Do not compress the bmap file 2025-04-29 10:13:23 +01:00
Serge Schneider
79afc6e5e7 export-image: remove image_ prefix from non-image files 2025-04-28 16:12:23 +01:00
Serge Schneider
bcf2bc1d98 stage4: do not install system-config-printer (replaced with rprinters by ui-mods) 2025-04-28 13:29:12 +01:00
Serge Schneider
ca3d54e7e7 Add TEMP_REPO variable 2025-04-15 14:57:18 +01:00
Serge Schneider
260c17db0e stage2: trim down third party firmware package list 2025-04-15 14:34:44 +01:00
Serge Schneider
04880a5a0f Remove old qemu-arm-static reference 2025-04-15 14:06:18 +01:00
Richard Oliver
2e5d13e1b9 export-image: generate bmap file if bmaptool is available 2025-03-14 14:33:23 +00:00
Jonathan Bell
f621f9e279 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 <jonathan@raspberrypi.com>
2025-03-13 15:58:40 +00:00
60 changed files with 410 additions and 317 deletions

View File

@@ -48,7 +48,7 @@ jobs:
- name: Compress images
if: startsWith(github.ref, 'refs/tags/v')
run: ./compress-images.sh
run: sudo ./compress-images.sh
- name: Publish client
if: startsWith(github.ref, 'refs/tags/v')

View File

@@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get -y update && \
apt-get -y install --no-install-recommends \
git vim parted \
quilt coreutils qemu-user-static debootstrap zerofree zip dosfstools \
quilt coreutils qemu-user-static debootstrap zerofree zip dosfstools e2fsprogs\
libarchive-tools libcap2-bin rsync grep udev xz-utils curl xxd file kmod bc \
binfmt-support ca-certificates fdisk gpg pigz arch-test \
&& rm -rf /var/lib/apt/lists/*

View File

@@ -20,9 +20,9 @@ below.
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
apt install coreutils quilt parted qemu-user-static debootstrap zerofree zip \
dosfstools e2fsprogs libarchive-tools libcap2-bin grep rsync xz-utils file git curl bc \
gpg pigz xxd arch-test bmap-tools kmod
```
The file `depends` contains a list of tools needed. The format of this
@@ -55,7 +55,7 @@ environment variables.
The following environment variables are supported:
* `IMG_NAME` (Default: `raspios-$RELEASE-$ARCH`, for example: `raspios-bookworm-armhf`)
* `IMG_NAME` (Default: `raspios-$RELEASE-$ARCH`, for example: `raspios-trixie-armhf`)
The name of the image to build with the current stage directories. Use this
variable to set the root name of your OS, eg `IMG_NAME=Frobulator`.
@@ -66,7 +66,7 @@ The following environment variables are supported:
The release name to use in `/etc/issue.txt`. The default should only be used
for official Raspberry Pi builds.
* `RELEASE` (Default: `bookworm`)
* `RELEASE` (Default: `trixie`)
The release version to build images against. Valid values are any supported
Debian release. However, since different releases will have different sets of
@@ -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
@@ -167,6 +174,8 @@ The following environment variables are supported:
a name chosen by the final user. This security feature is designed to prevent shipping images
with a default username and help prevent malicious actors from taking over your devices.
If the FIRST_USER_NAME is set to `pi` and no `FIRST_USER_PASS` is set, the setup wizard will be launched on first boot to allow the user to set the password.
* `FIRST_USER_PASS` (Default: unset)
Password for the first user. If unset, the account is locked.
@@ -212,6 +221,10 @@ The following environment variables are supported:
If set, use this directory path as the location of scripts to run when generating images. An absolute or relative path can be given for a location outside the pi-gen directory.
* `ENABLE_CLOUD_INIT` (Default: `1`)
If set to `1`, cloud-init and netplan will be installed and configured. This will allow you to configure your Raspberry Pi using cloud-init configuration files. The cloud-init configuration files should be placed in the bootfs or by editing the files in `stage2/04-cloud-init/files`. Cloud-init will be configured to read them on first boot.
A simple example for building Raspberry Pi OS:
```bash

View File

@@ -82,7 +82,7 @@ fi
# Modify original build-options to allow config file to be mounted in the docker container
BUILD_OPTS="$(echo "${BUILD_OPTS:-}" | sed -E 's@\-c\s?([^ ]+)@-c /config@')"
${DOCKER} build --build-arg BASE_IMAGE=debian:bookworm -t pi-gen "${DIR}"
${DOCKER} build --build-arg BASE_IMAGE=debian:trixie -t pi-gen "${DIR}"
if [ "${CONTAINER_EXISTS}" != "" ]; then
DOCKER_CMDLINE_NAME="${CONTAINER_NAME}_cont"
@@ -142,7 +142,7 @@ time ${DOCKER} run \
pi-gen \
bash -e -o pipefail -c "
dpkg-reconfigure qemu-user-static &&
# binfmt_misc is sometimes not mounted with debian bookworm image
# binfmt_misc is sometimes not mounted with debian trixie image
(mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc || true) &&
cd /pi-gen; ./build.sh ${BUILD_OPTS} &&
rsync -av work/*/build.log deploy/

View File

@@ -68,6 +68,8 @@ EOF
log "Begin ${SUB_STAGE_DIR}/${i}-run.sh"
./${i}-run.sh
log "End ${SUB_STAGE_DIR}/${i}-run.sh"
elif [ -f ${i}-run.sh ]; then
log "Skip ${SUB_STAGE_DIR}/${i}-run.sh (not executable)"
fi
if [ -f ${i}-run-chroot.sh ]; then
log "Begin ${SUB_STAGE_DIR}/${i}-run-chroot.sh"
@@ -176,7 +178,7 @@ export PI_GEN_REPO=${PI_GEN_REPO:-https://github.com/RPi-Distro/pi-gen}
export PI_GEN_RELEASE=${PI_GEN_RELEASE:-Raspberry Pi reference}
export ARCH=arm64
export RELEASE=${RELEASE:-bookworm} # Don't forget to update stage0/prerun.sh
export RELEASE=${RELEASE:-trixie} # Don't forget to update stage0/prerun.sh
export IMG_NAME="${IMG_NAME:-raspios-$RELEASE-$ARCH}"
export USE_QEMU="${USE_QEMU:-0}"
@@ -222,6 +224,7 @@ export PUBKEY_SSH_FIRST_USER
export CLEAN
export APT_PROXY
export TEMP_REPO
export STAGE
export STAGE_DIR
@@ -241,6 +244,8 @@ export QUILT_NO_DIFF_INDEX=1
export QUILT_NO_DIFF_TIMESTAMPS=1
export QUILT_REFRESH_ARGS="-p ab"
export ENABLE_CLOUD_INIT=${ENABLE_CLOUD_INIT:-1}
# shellcheck source=scripts/common
source "${SCRIPT_DIR}/common"
# shellcheck source=scripts/dependencies_check

View File

@@ -6,6 +6,7 @@ debootstrap
zerofree
zip
mkdosfs:dosfstools
mke2fs:e2fsprogs
capsh:libcap2-bin
bsdtar:libarchive-tools
grep

View File

@@ -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

View File

@@ -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

View File

@@ -3,15 +3,19 @@
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
if [ -x /etc/init.d/fake-hwclock ]; then
/etc/init.d/fake-hwclock stop
fi
if hash hardlink 2>/dev/null; then
on_chroot <<- EOF
update-initramfs -k all -c
if hash hardlink 2>/dev/null; then
hardlink -t /usr/share/doc
fi
fi
if [ -f /usr/lib/systemd/system/apt-listchanges.service ]; then
python3 -m apt_listchanges.populate_database --profile apt
systemctl disable apt-listchanges.timer
fi
install -m 755 -o systemd-timesync -g systemd-timesync -d /var/lib/systemd/timesync
install -m 644 -o systemd-timesync -g systemd-timesync /dev/null /var/lib/systemd/timesync/clock
EOF
if [ -f "${ROOTFS_DIR}/etc/initramfs-tools/update-initramfs.conf" ]; then
@@ -50,7 +54,7 @@ rm -f "${ROOTFS_DIR}"/usr/share/icons/*/icon-theme.cache
rm -f "${ROOTFS_DIR}/var/lib/dbus/machine-id"
true > "${ROOTFS_DIR}/etc/machine-id"
echo "uninitialized" > "${ROOTFS_DIR}/etc/machine-id"
ln -nsf /proc/mounts "${ROOTFS_DIR}/etc/mtab"
@@ -100,6 +104,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}.*"
@@ -126,6 +136,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
cp "$BMAP_FILE" "$DEPLOY_DIR/"
fi
cp "$INFO_FILE" "$DEPLOY_DIR/"

View File

@@ -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

View File

@@ -1,5 +1,77 @@
UNRELEASED:
*
* Based on Debian Trixie release
* New plugin-based Control Centre application
* Plugins for same built from existing Raspberry Pi Configuration, Appearance
Settings, Mouse and Keyboard Settings, Screen Configuration and Printer
Settings applications; code and functionality identical
* New icon theme, PiXtrix
* New GTK themes, PiXtrix (standard) and PiXonyx (dark)
* New desktop wallpapers
* New system font, Nunito Sans Light
* lxpanel replaced with forked lxpanel-pi; unsupported plugins removed
* lxpanelctl replaced with lxpanelctl-pi command-line application
* New System Monitor plugin added to taskbar for power and other warnings
* New shared Clock plugin added for wf-panel-pi and lxpanel-pi taskbars
* Main menu shortcuts to Raspberry Pi website removed and replaced with
pre-loaded bookmarks in Chromium and Firefox
* Main menu shortcut to Raspberry Pi Beginner's Guide added
* Bookshelf application now displays contributor-only titles and includes
option to contribute to unlock them
* SenseHAT Emulator reinstated in Recommended Software
* labwc updated to version 0.8.4
* General keyboard control improvements in GTK applications
* International translations of user guides installed by startup wizard as
appropriate
* raspberrypi-ui-mods package removed - replaced with structured metapackage,
rpd-metas
* Shutdown helper does not offer lock screen option when invoked by a user
who has no password set
* Chromium updated to version 140.0.7339.185
* Firefox updated to version 142.0.1
* Debian Reference no longer included
* Alacarte menu editor no longer included
* Remote GPIO option removed from Control Centre
* Added rpi-keyboard-config and rpi-keyboard-fw-update
* Raspberry Pi firmware 676efed1194de38975889a34276091da1f5aadd3
* Linux kernel 6.12.47 - 359f37f0faefb712add32a39f98751aea67d5c1f
2025-05-13:
* Setting touchscreen in Screen Configuration does not delete default associations for greeter
* Bug fix - wizard keyboard setting correctly transferred into desktop
* Chromium updated to 136.0.7103.92
* Raspberry Pi firmware bc7f439c234e19371115e07b57c366df59cc1bc7
* Linux kernel 6.12.25 - 3dd2c2c507c271d411fab2e82a2b3b7e0b6d3f16
2025-05-06:
* 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

View File

@@ -20,6 +20,9 @@ bootstrap(){
capsh $CAPSH_ARG -- -c "'${BOOTSTRAP_CMD}' $BOOTSTRAP_STR" || true
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050719
rm -f wget-log*
if [ -d "$2/debootstrap" ] && ! rmdir "$2/debootstrap"; then
cp "$2/debootstrap/debootstrap.log" "${STAGE_WORK_DIR}"
log "bootstrap failed: please check ${STAGE_WORK_DIR}/debootstrap.log"

View File

@@ -1,9 +1,10 @@
#!/bin/bash -e
install -m 644 files/sources.list "${ROOTFS_DIR}/etc/apt/"
install -m 644 files/raspi.list "${ROOTFS_DIR}/etc/apt/sources.list.d/"
sed -i "s/RELEASE/${RELEASE}/g" "${ROOTFS_DIR}/etc/apt/sources.list"
sed -i "s/RELEASE/${RELEASE}/g" "${ROOTFS_DIR}/etc/apt/sources.list.d/raspi.list"
true > "${ROOTFS_DIR}/etc/apt/sources.list"
install -m 644 files/debian.sources "${ROOTFS_DIR}/etc/apt/sources.list.d/"
install -m 644 files/raspi.sources "${ROOTFS_DIR}/etc/apt/sources.list.d/"
sed -i "s/RELEASE/${RELEASE}/g" "${ROOTFS_DIR}/etc/apt/sources.list.d/debian.sources"
sed -i "s/RELEASE/${RELEASE}/g" "${ROOTFS_DIR}/etc/apt/sources.list.d/raspi.sources"
if [ -n "$APT_PROXY" ]; then
install -m 644 files/51cache "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache"
@@ -12,8 +13,14 @@ else
rm -f "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache"
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/"
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
install -m 644 files/raspberrypi-archive-keyring.pgp "${ROOTFS_DIR}/usr/share/keyrings/"
on_chroot <<- \EOF
ARCH="$(dpkg --print-architecture)"
if [ "$ARCH" = "armhf" ]; then

View File

@@ -0,0 +1,11 @@
Types: deb
URIs: http://deb.debian.org/debian/
Suites: RELEASE RELEASE-updates
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.pgp
Types: deb
URIs: http://deb.debian.org/debian-security/
Suites: RELEASE-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.pgp

View File

@@ -1,30 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.12 (GNU/Linux)
mQENBE/d7o8BCACrwqQacGJfn3tnMzGui6mv2lLxYbsOuy/+U4rqMmGEuo3h9m92
30E2EtypsoWczkBretzLUCFv+VUOxaA6sV9+puTqYGhhQZFuKUWcG7orf7QbZRuu
TxsEUepW5lg7MExmAu1JJzqM0kMQX8fVyWVDkjchZ/is4q3BPOUCJbUJOsE+kK/6
8kW6nWdhwSAjfDh06bA5wvoXNjYoDdnSZyVdcYCPEJXEg5jfF/+nmiFKMZBraHwn
eQsepr7rBXxNcEvDlSOPal11fg90KXpy7Umre1UcAZYJdQeWcHu7X5uoJx/MG5J8
ic6CwYmDaShIFa92f8qmFcna05+lppk76fsnABEBAAG0IFJhc3BiZXJyeSBQaSBB
cmNoaXZlIFNpZ25pbmcgS2V5iQE4BBMBAgAiBQJP3e6PAhsDBgsJCAcDAgYVCAIJ
CgsEFgIDAQIeAQIXgAAKCRCCsSmSf6MwPk6vB/9pePB3IukU9WC9Bammh3mpQTvL
OifbkzHkmAYxzjfK6D2I8pT0xMxy949+ThzJ7uL60p6T/32ED9DR3LHIMXZvKtuc
mQnSiNDX03E2p7lIP/htoxW2hDP2n8cdlNdt0M9IjaWBppsbO7IrDppG2B1aRLni
uD7v8bHRL2mKTtIDLX42Enl8aLAkJYgNWpZyPkDyOqamjijarIWjGEPCkaURF7g4
d44HvYhpbLMOrz1m6N5Bzoa5+nq3lmifeiWKxioFXU+Hy5bhtAM6ljVb59hbD2ra
X4+3LXC9oox2flmQnyqwoyfZqVgSQa0B41qEQo8t1bz6Q1Ti7fbMLThmbRHiuQEN
BE/d7o8BCADNlVtBZU63fm79SjHh5AEKFs0C3kwa0mOhp9oas/haDggmhiXdzeD3
49JWz9ZTx+vlTq0s+I+nIR1a+q+GL+hxYt4HhxoA6vlDMegVfvZKzqTX9Nr2VqQa
S4Kz3W5ULv81tw3WowK6i0L7pqDmvDqgm73mMbbxfHD0SyTt8+fk7qX6Ag2pZ4a9
ZdJGxvASkh0McGpbYJhk1WYD+eh4fqH3IaeJi6xtNoRdc5YXuzILnp+KaJyPE5CR
qUY5JibOD3qR7zDjP0ueP93jLqmoKltCdN5+yYEExtSwz5lXniiYOJp8LWFCgv5h
m8aYXkcJS1xVV9Ltno23YvX5edw9QY4hABEBAAGJAR8EGAECAAkFAk/d7o8CGwwA
CgkQgrEpkn+jMD5Figf/dIC1qtDMTbu5IsI5uZPX63xydaExQNYf98cq5H2fWF6O
yVR7ERzA2w33hI0yZQrqO6pU9SRnHRxCFvGv6y+mXXXMRcmjZG7GiD6tQWeN/3wb
EbAn5cg6CJ/Lk/BI4iRRfBX07LbYULCohlGkwBOkRo10T+Ld4vCCnBftCh5x2OtZ
TOWRULxP36y2PLGVNF+q9pho98qx+RIxvpofQM/842ZycjPJvzgVQsW4LT91KYAE
4TVf6JjwUM6HZDoiNcX6d7zOhNfQihXTsniZZ6rky287htsWVDNkqOi5T3oTxWUo
m++/7s3K3L0zWopdhMVcgg6Nt9gcjzqN1c0gy55L/g==
=mNSj
-----END PGP PUBLIC KEY BLOCK-----

View File

@@ -1,3 +0,0 @@
deb http://archive.raspberrypi.com/debian/ RELEASE main
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspberrypi.com/debian/ RELEASE main

View File

@@ -0,0 +1,5 @@
Types: deb
URIs: http://archive.raspberrypi.com/debian/
Suites: RELEASE
Components: main
Signed-By: /usr/share/keyrings/raspberrypi-archive-keyring.pgp

View File

@@ -1,7 +0,0 @@
deb http://deb.debian.org/debian RELEASE main contrib non-free non-free-firmware
deb http://deb.debian.org/debian-security/ RELEASE-security main contrib non-free non-free-firmware
deb http://deb.debian.org/debian RELEASE-updates main contrib non-free non-free-firmware
# Uncomment deb-src lines below then 'apt-get update' to enable 'apt-get source'
#deb-src http://deb.debian.org/debian RELEASE main contrib non-free non-free-firmware
#deb-src http://deb.debian.org/debian-security/ RELEASE-security main contrib non-free non-free-firmware
#deb-src http://deb.debian.org/debian RELEASE-updates main contrib non-free non-free-firmware

Binary file not shown.

View File

@@ -1,6 +1,6 @@
#!/bin/bash -e
if [ "$RELEASE" != "bookworm" ]; then
if [ "$RELEASE" != "trixie" ]; then
echo "WARNING: RELEASE does not match the intended option for this branch."
echo " Please check the relevant README.md section."
fi

View File

@@ -1 +1 @@
console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 fsck.repair=yes rootwait
console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 fsck.repair=yes rootwait resize

View File

@@ -1,6 +1,6 @@
--- a/rootfs/etc/skel/.bashrc
+++ b/rootfs/etc/skel/.bashrc
@@ -43,7 +43,7 @@
--- stage1.orig/rootfs/etc/skel/.bashrc
+++ stage1/rootfs/etc/skel/.bashrc
@@ -43,7 +43,7 @@ esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
@@ -9,7 +9,7 @@
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
@@ -57,7 +57,7 @@
@@ -57,7 +57,7 @@ if [ -n "$force_color_prompt" ]; then
fi
if [ "$color_prompt" = yes ]; then
@@ -18,7 +18,7 @@
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
@@ -79,9 +79,9 @@
@@ -79,9 +79,9 @@ if [ -x /usr/bin/dircolors ]; then
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'

View File

@@ -12,5 +12,3 @@ if [ -n "${FIRST_USER_PASS}" ]; then
fi
echo "root:root" | chpasswd
EOF

View File

@@ -4,9 +4,6 @@ console-setup console-setup/charmap47 select UTF-8
# Character set to support:
# Choices: . Arabic, # Armenian, # Cyrillic - KOI8-R and KOI8-U, # Cyrillic - non-Slavic languages, # Cyrillic - Slavic languages (also Bosnian and Serbian Latin), . Ethiopic, # Georgian, # Greek, # Hebrew, # Lao, # Latin1 and Latin5 - western Europe and Turkic languages, # Latin2 - central Europe and Romanian, # Latin3 and Latin8 - Chichewa; Esperanto; Irish; Maltese and Welsh, # Latin7 - Lithuanian; Latvian; Maori and Marshallese, . Latin - Vietnamese, # Thai, . Combined - Latin; Slavic Cyrillic; Hebrew; basic Arabic, . Combined - Latin; Slavic Cyrillic; Greek, . Combined - Latin; Slavic and non-Slavic Cyrillic, Guess optimal character set
console-setup console-setup/codeset47 select Guess optimal character set
# Font for the console:
# Choices: Fixed, Goha, GohaClassic, Terminus, TerminusBold, TerminusBoldVGA, VGA, Do not change the boot/kernel font, Let the system select a suitable font
console-setup console-setup/fontface47 select Do not change the boot/kernel font
# Key to function as AltGr:
# Choices: The default for the keyboard layout, No AltGr key, Right Alt (AltGr), Right Control, Right Logo key, Menu key, Left Alt, Left Logo key, Keypad Enter key, Both Logo keys, Both Alt keys
keyboard-configuration keyboard-configuration/altgr select The default for the keyboard layout

View File

@@ -5,18 +5,17 @@ python-is-python3
v4l-utils
gpiod python3-libgpiod
python3-gpiozero
pigpio python3-pigpio raspi-gpio python3-rpi-lgpio
python3-rpi-lgpio
python3-spidev
python3-smbus2
avahi-daemon
lua5.1
luajit
ca-certificates curl
fake-hwclock nfs-common usbutils
usbutils
dosfstools
dphys-swapfile
rpi-swap rpi-loop-utils
raspberrypi-sys-mods
pi-bluetooth
apt-listchanges
usb-modeswitch
libpam-chksshpwd
@@ -25,7 +24,6 @@ libmtp-runtime
rsync
htop
man-db
policykit-1
ssh-import-id
ethtool
ntfs-3g
@@ -37,3 +35,8 @@ unzip zip p7zip-full
file
kms++-utils
python3-venv
bluez bluez-firmware
rpi-keyboard-config
rpi-keyboard-fw-update
rpi-usb-gadget
rpi-connect-lite

View File

@@ -1,9 +1,7 @@
Index: jessie-stage2/rootfs/etc/default/useradd
===================================================================
--- jessie-stage2.orig/rootfs/etc/default/useradd
+++ jessie-stage2/rootfs/etc/default/useradd
--- stage2.orig/rootfs/etc/default/useradd
+++ stage2/rootfs/etc/default/useradd
@@ -5,7 +5,7 @@
# Similar to DHSELL in adduser. However, we use "sh" here because
# Similar to DSHELL in adduser. However, we use "sh" here because
# useradd is a low level utility and should be as general
# as possible
-SHELL=/bin/sh

View File

@@ -1,13 +0,0 @@
Index: jessie-stage2/rootfs/etc/dphys-swapfile
===================================================================
--- jessie-stage2.orig/rootfs/etc/dphys-swapfile
+++ jessie-stage2/rootfs/etc/dphys-swapfile
@@ -13,7 +13,7 @@
# set size to absolute value, leaving empty (default) then uses computed value
# you most likely don't want this, unless you have an special disk situation
-#CONF_SWAPSIZE=
+CONF_SWAPSIZE=512
# set size to computed value, this times RAM size, dynamically adapts,
# guarantees that there is enough swap without wasting disk space on excess

View File

@@ -1,8 +1,6 @@
Index: jessie-stage2/rootfs/etc/inputrc
===================================================================
--- jessie-stage2.orig/rootfs/etc/inputrc
+++ jessie-stage2/rootfs/etc/inputrc
@@ -65,3 +65,7 @@ $endif
--- stage2.orig/rootfs/etc/inputrc
+++ stage2/rootfs/etc/inputrc
@@ -69,3 +69,7 @@ $endif
# "\e[F": end-of-line
$endif

View File

@@ -1,8 +1,6 @@
Index: jessie-stage2/rootfs/etc/login.defs
===================================================================
--- jessie-stage2.orig/rootfs/etc/login.defs
+++ jessie-stage2/rootfs/etc/login.defs
@@ -100,7 +100,7 @@ HUSHLOGIN_FILE .hushlogin
--- stage2.orig/rootfs/etc/login.defs
+++ stage2/rootfs/etc/login.defs
@@ -60,7 +60,7 @@ HUSHLOGIN_FILE .hushlogin
#
# (they are minimal, add the rest in the shell startup files)
ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
@@ -10,13 +8,11 @@ Index: jessie-stage2/rootfs/etc/login.defs
+ENV_PATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
#
# Terminal permissions
Index: jessie-stage2/rootfs/etc/profile
===================================================================
--- jessie-stage2.orig/rootfs/etc/profile
+++ jessie-stage2/rootfs/etc/profile
# Terminal permissions for terminals after login(1).
--- stage2.orig/rootfs/etc/profile
+++ stage2/rootfs/etc/profile
@@ -4,7 +4,7 @@
if [ "`id -u`" -eq 0 ]; then
if [ "$(id -u)" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
- PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"

View File

@@ -1,5 +0,0 @@
--- stage2.orig/rootfs/boot/firmware/cmdline.txt
+++ stage2/rootfs/boot/firmware/cmdline.txt
@@ -1 +1 @@
-console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 fsck.repair=yes rootwait
+console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 fsck.repair=yes rootwait quiet init=/usr/lib/raspberrypi-sys-mods/firstboot

View File

@@ -1,5 +1,3 @@
01-useradd.diff
02-swap.diff
04-inputrc.diff
05-path.diff
07-resize-init.diff

View File

@@ -1,11 +1,5 @@
#!/bin/bash -e
install -m 755 files/resize2fs_once "${ROOTFS_DIR}/etc/init.d/"
install -m 644 files/50raspi "${ROOTFS_DIR}/etc/apt/apt.conf.d/"
install -m 644 files/console-setup "${ROOTFS_DIR}/etc/default/"
if [ -n "${PUBKEY_SSH_FIRST_USER}" ]; then
install -v -m 0700 -o 1000 -g 1000 -d "${ROOTFS_DIR}"/home/"${FIRST_USER_NAME}"/.ssh
echo "${PUBKEY_SSH_FIRST_USER}" >"${ROOTFS_DIR}"/home/"${FIRST_USER_NAME}"/.ssh/authorized_keys
@@ -19,37 +13,29 @@ s/^#?[[:blank:]]*PasswordAuthentication[[:blank:]]*yes[[:blank:]]*$/PasswordAuth
fi
on_chroot << EOF
systemctl disable hwclock.sh
systemctl disable nfs-common
systemctl disable rpcbind
if [ "${ENABLE_SSH}" == "1" ]; then
systemctl enable ssh
else
systemctl disable ssh
fi
systemctl enable regenerate_ssh_host_keys
EOF
if [ "${USE_QEMU}" = "1" ]; then
echo "enter QEMU mode"
install -m 644 files/90-qemu.rules "${ROOTFS_DIR}/etc/udev/rules.d/"
on_chroot << EOF
systemctl disable resize2fs_once
EOF
echo "leaving QEMU mode"
else
on_chroot << EOF
systemctl enable resize2fs_once
EOF
fi
on_chroot <<EOF
for GRP in input spi i2c gpio; do
on_chroot <<- EOF
systemctl enable rpi-resize
for GRP in input spi i2c gpio; do
groupadd -f -r "\$GRP"
done
for GRP in adm dialout cdrom audio users sudo video games plugdev input gpio spi i2c netdev render; do
done
for GRP in adm dialout cdrom audio users sudo video games plugdev input gpio spi i2c netdev render; do
adduser $FIRST_USER_NAME \$GRP
done
done
EOF
if [ -f "${ROOTFS_DIR}/etc/sudoers.d/010_pi-nopasswd" ]; then
@@ -66,13 +52,12 @@ EOF
rm -f "${ROOTFS_DIR}/etc/ssh/"ssh_host_*_key*
sed -i 's/^FONTFACE=.*/FONTFACE=""/;s/^FONTSIZE=.*/FONTSIZE=""/' "${ROOTFS_DIR}/etc/default/console-setup"
sed -i "s/PLACEHOLDER//" "${ROOTFS_DIR}/etc/default/keyboard"
on_chroot << EOF
DEBIAN_FRONTEND=noninteractive dpkg-reconfigure keyboard-configuration
DEBIAN_FRONTEND=noninteractive dpkg-reconfigure keyboard-configuration console-setup
EOF
sed -i 's/^#\?Storage=.*/Storage=volatile/' "${ROOTFS_DIR}/etc/systemd/journald.conf"
if [ -e "${ROOTFS_DIR}/etc/avahi/avahi-daemon.conf" ]; then
sed -i 's/^#\?publish-workstation=.*/publish-workstation=yes/' "${ROOTFS_DIR}/etc/avahi/avahi-daemon.conf"
fi

View File

@@ -1,5 +0,0 @@
# never use pdiffs. Current implementation is very slow on low-powered devices
Acquire::PDiffs "0";
# download up to 5 pdiffs:
#Acquire::PDiffs::FileLimit "5";

View File

@@ -1,16 +0,0 @@
# CONFIGURATION FILE FOR SETUPCON
# Consult the console-setup(5) manual page.
ACTIVE_CONSOLES="/dev/tty[1-6]"
CHARMAP="UTF-8"
CODESET="guess"
FONTFACE=""
FONTSIZE=""
VIDEOMODE=
# The following is an example how to use a braille font
# FONT='lat9w-08.psf.gz brl-8x8.psf'

View File

@@ -1,25 +0,0 @@
#!/bin/sh
### BEGIN INIT INFO
# Provides: resize2fs_once
# Required-Start:
# Required-Stop:
# Default-Start: 3
# Default-Stop:
# Short-Description: Resize the root filesystem to fill partition
# Description:
### END INIT INFO
. /lib/lsb/init-functions
case "$1" in
start)
log_daemon_msg "Starting resize2fs_once"
ROOT_DEV=$(findmnt / -o source -n) &&
resize2fs $ROOT_DEV &&
update-rc.d resize2fs_once remove &&
rm /etc/init.d/resize2fs_once &&
log_end_msg $?
;;
*)
echo "Usage: $0 start" >&2
exit 3
;;
esac

View File

@@ -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

View File

@@ -0,0 +1,2 @@
cloud-init
rpi-cloud-init-mods

12
stage2/04-cloud-init/01-run.sh Executable file
View File

@@ -0,0 +1,12 @@
#!/bin/bash -e
if [ "${ENABLE_CLOUD_INIT}" != "1" ]; then
log "Skipping cloud-init stage"
exit 0
fi
# some preseeding without any runtime effect if not modified
# install meta-data file for NoCloud data-source to work
install -v -m 755 files/meta-data "${ROOTFS_DIR}/boot/firmware/meta-data"
install -v -m 755 files/user-data "${ROOTFS_DIR}/boot/firmware/user-data"
install -v -m 755 files/network-config "${ROOTFS_DIR}/boot/firmware/network-config"

View File

@@ -0,0 +1,10 @@
Cloud-Init support for Raspberry Pi OS
Reference for Raspberry Pi custom cloud-init config module: https://cloudinit.readthedocs.io/en/latest/reference/modules.html#raspberry-pi-configuration
- files/network-config is required because otherwise imager would fail to create the correct filesystem entry
- files/user-data same reason and to include some example configurations
- files/meta-data Cloud-init instance configuration

View File

@@ -0,0 +1,18 @@
# This is the meta-data configuration file for cloud-init. Please refer to the
# cloud-init documentation for more information:
#
# https://cloudinit.readthedocs.io/
# Set the datasource mode to "local". This ensures that user-data is acted upon
# prior to bringing up the network (because everything about the datasource is
# assumed to be local). If you wish to use an HTTP datasource instead, you can
# change this to "net" or override it on the kernel cmdline (see README).
dsmode: local
# Specifies the "unique" identifier of the instance. Typically in cloud-init
# this is generated by the owning cloud and is actually unique (to some
# degree). Here our data-source is local, so this is just a fixed string.
# Warning: changing this will cause cloud-init to assume it is running on a
# "new" instance, and to go through first time setup again (the value is
# compared to a cached copy).
instance_id: rpios-image

View File

@@ -0,0 +1,50 @@
# This file contains a netplan-compatible configuration which cloud-init will
# apply on first-boot (note: it will *not* update the config after the first
# boot). Please refer to the cloud-init documentation and the netplan reference
# for full details:
#
# https://netplan.io/reference
# https://cloudinit.readthedocs.io/en/latest/topics/network-config.html
# https://cloudinit.readthedocs.io/en/latest/topics/network-config-format-v2.html
#
# Please note that the YAML format employed by this file is sensitive to
# differences in whitespace; if you are editing this file in an editor (like
# Notepad) which uses literal tabs, take care to only use spaces for
# indentation. See the following link for more details:
#
# https://en.wikipedia.org/wiki/YAML
#
# Additionally, please be aware that if your boot sequence depends on active
# networking (e.g. if your cloud-init configuration pulls packages or SSH
# keys from the network), you *must* mark at least one interface as required
# ("optional: false") below. Otherwise, particularly on faster boards,
# cloud-init will start attempting to use the network before it is ready
# Some additional examples are commented out below
#network:
# version: 2
#
# ethernets:
# eth0:
# dhcp4: true
# optional: true
# wifis:
# wlan0:
# dhcp4: true
# optional: true
# access-points:
# myhomewifi:
# password: "S3kr1t"
# myworkwifi:
# password: "correct battery horse staple"
# workssid:
# auth:
# key-management: eap
# method: peap
# identity: "me@example.com"
# password: "passw0rd"
# ca-certificate: /etc/my_ca.pem
# regulatory-domain: GB

View File

@@ -0,0 +1,102 @@
#cloud-config
# This is the user-data configuration file for cloud-init. By default this sets
# up an initial user called "ubuntu" with password "ubuntu", which must be
# changed at first login. However, many additional actions can be initiated on
# first boot from this file. The cloud-init documentation has more details:
#
# https://cloudinit.readthedocs.io/
#
# Please note that the YAML format employed by this file is sensitive to
# differences in whitespace; if you are editing this file in an editor (like
# Notepad) which uses literal tabs, take care to only use spaces for
# indentation. See the following link for more details:
#
# https://en.wikipedia.org/wiki/YAML
#
# Some additional examples are provided in comments below the default
# configuration.
## Set the system's hostname. Please note that, unless you have a local DNS
## setup where the hostname is derived from DHCP requests (as with dnsmasq),
## setting the hostname here will not make the machine reachable by this name.
## You may also wish to install avahi-daemon (see the "packages:" key below)
## to make your machine reachable by the .local domain
#hostname: raspberrypi
## Set up the keyboard layout. See localectl(1), in particular the various
## list-x11-* sub-commands, to determine the available models, layouts,
## variants, and options
#keyboard:
# model: pc105
# layout: gb
# variant:
# options: ctrl:nocaps
# Controls password authentication with the SSH daemon; the default here can
# prevent logging into SSH with a password. Changing this is a security risk
# and you should at the very least ensure a different default password is
# specified above
#ssh_pwauth: false
## On first boot, use ssh-import-id to give the specific users SSH access to
## the default user
#ssh_import_id:
#- lp:my_launchpad_username
#- gh:my_github_username
## Add users and groups to the system, and import keys with the ssh-import-id
## utility
#groups:
#- robot: [robot]
#- robotics: [robot]
#- pi
#
#users:
#- default
#- name: robot
# gecos: Mr. Robot
# primary_group: robot
# groups: users
# ssh_import_id: foobar
# lock_passwd: false
# passwd: $5$hkui88$nvZgIle31cNpryjRfO9uArF7DYiBcWEnjqq7L1AQNN3
## Update apt database and upgrade packages on first boot
#package_update: true
#package_upgrade: true
## Install additional packages on first boot
#packages:
#- avahi-daemon
#- rng-tools
#- python3-gpiozero
#- [python3-serial, 3.5-1]
## Write arbitrary files to the file-system (including binaries!)
#write_files:
#- path: /etc/default/console-setup
# content: |
# # Consult the console-setup(5) manual page.
# ACTIVE_CONSOLES="/dev/tty[1-6]"
# CHARMAP="UTF-8"
# VIDEOMODE=
# FONT="Lat15-Terminus18x10.psf.gz"
# FONTFACE=
# FONTSIZE=
# CODESET="Lat15"
# permissions: '0644'
# owner: root:root
#- encoding: gzip
# path: /root/Makefile
# content: !!binary |
# H4sICF2DTWIAA01ha2VmaWxlAFNWCM8syVBILMjPyU/PTC1WKMlXiPB2dlFQNjSx5MpNteLi
# dLDiSoRQxYl5KeWZyRkgXrSCkoqKRmaKgm6pppKCbmqhgoFCrIKamkK1QmpyRr6Ckn92YqWS
# NdC80uQMBZhOa4VahZoaqIrwjMQSewXfxOxUhcwShcr80qLi1Jw0RSUuAIYfEJmVAAAA
# owner: root:root
# permissions: '0644'
## Run arbitrary commands at rc.local like time
#runcmd:
#- [ ls, -l, / ]
#- [ sh, -xc, "echo $(date) ': hello world!'" ]

View File

@@ -1,22 +1,4 @@
gstreamer1.0-x gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-libav
evince gtk2-engines alsa-utils
desktop-base
git
policykit-1
gvfs
rfkill
chromium rpi-chromium-mods libwidevinecdm0
firefox rpi-firefox-mods
gldriver-test
fonts-droid-fallback
fonts-liberation2
rpd-preferences
rpd-theme
fonts-noto
fonts-noto-color-emoji
obconf
raindrop
libcamera-tools
rpicam-apps
python3-picamera2
python3-pyqt5
python3-opengl
vulkan-tools mesa-vulkan-drivers

View File

@@ -1,10 +1,3 @@
xserver-xorg xinit
x11-xserver-utils
mousepad
eom
rpd-wayland-core
rpd-x-core
vim
lxde lxtask menu-xdg
zenity xdg-utils
gvfs-backends gvfs-fuse
lightdm gnome-themes-extra-data gnome-icon-theme
gnome-keyring

View File

@@ -1,5 +0,0 @@
#!/bin/bash -e
on_chroot <<- EOF
apt-mark auto python3-pyqt5 python3-opengl
EOF

View File

@@ -1,2 +0,0 @@
# Enable realtime process priority?
jackd2 jackd/tweak_rt_limits boolean true

View File

@@ -1,27 +1,6 @@
python3-pygame
python3-tk thonny
python3-pgzero
python3-serial
debian-reference-en dillo
raspberrypi-net-mods raspberrypi-ui-mods
python3-pip
python3-numpy
alacarte rc-gui sense-hat
tree
libgl1-mesa-dri libgles1 libgles2-mesa xcompmgr
geany
piclone
python3-twython
python3-flask
pprompt
piwiz
rp-prefapps
ffmpeg
vlc
rpi-connect
rpi-imager
labwc
squeekboard
# ninja-build and openocd needed for vscode pico extension
meson openocd
rpd-applications
rpd-developer
rpd-graphics
rpd-utilities
rpd-wayland-extras
rpd-x-extras

View File

@@ -1,2 +0,0 @@
pi-package
realvnc-vnc-server

View File

@@ -1,4 +0,0 @@
hunspell-en-gb
hyphen-en-gb
wamerican
wbritish

View File

@@ -1,5 +0,0 @@
#!/bin/bash -e
on_chroot << EOF
SUDO_USER="${FIRST_USER_NAME}" raspi-config nonint do_boot_behaviour B4
EOF

View File

@@ -0,0 +1,5 @@
#!/bin/bash -e
on_chroot <<- EOF
SUDO_USER="${FIRST_USER_NAME}" raspi-config nonint do_vnc 1
EOF

View File

@@ -1,7 +0,0 @@
#!/bin/bash -e
#Alacarte fixes
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.local"
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.local/share"
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.local/share/applications"
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.local/share/desktop-directories"

View File

@@ -1,15 +0,0 @@
#!/bin/sh -e
BOOKSHELF_URL="https://magpi.raspberrypi.com/bookshelf.xml"
GUIDE_URL="$(curl -s "$BOOKSHELF_URL" | awk -F '[<>]' "/<TITLE>Raspberry Pi Beginner's Guide .*<\/TITLE>/ {f=1; next} f==1 && /PDF/ {print \$3; exit}")"
OUTPUT="$(basename "$GUIDE_URL" | cut -f1 -d'?')"
if [ ! -f "files/$OUTPUT" ]; then
rm files/*.pdf -f
curl -s "$GUIDE_URL" -o "files/$OUTPUT"
fi
file "files/$OUTPUT" | grep -q "PDF document"
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/Bookshelf"
install -v -o 1000 -g 1000 -m 644 "files/$OUTPUT" "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/Bookshelf/"

View File

@@ -1 +0,0 @@
*.pdf

View File

@@ -1,5 +0,0 @@
#!/bin/bash -e
on_chroot << EOF
raspi-config nonint do_xcompmgr 0
EOF

View File

@@ -1,2 +0,0 @@
cups
system-config-printer

View File

@@ -1,5 +0,0 @@
#!/bin/bash -e
on_chroot << EOF
SUDO_USER="${FIRST_USER_NAME}" raspi-config nonint do_wayland W3
EOF

View File

@@ -1,7 +1,4 @@
mu-editor
scratch nuscratch scratch3
wolfram-engine
scratch3
claws-mail
realvnc-vnc-viewer
code-the-classics code-the-classics-2
kicad