246 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
Serge Schneider
b9e30f2e0e Merge branch 'master' into arm64 2025-01-22 13:58:26 +00:00
Stefan Becker
e071d0de36 Switch docker build to Debian Bookworm 2025-01-22 13:55:04 +00:00
Serge Schneider
47958f5efe Merge branch 'master' into arm64 2025-01-02 13:27:07 +00:00
Stefan Becker
fb5180d3de Dockerfile: fix ENV warning (#791)
Newer versions of docker generate the following warning

   - LegacyKeyValueFormat: "ENV key=value" should be used instead of
     legacy "ENV key value" format (line 4)
2025-01-02 13:26:42 +00:00
Serge Schneider
1e780d18c2 Merge branch 'master' into arm64 2025-01-02 09:32:25 +00:00
Serge Schneider
fc280356b1 Escape the ? expression in sed
Fixes #817, fixes #820
2025-01-02 09:27:21 +00:00
marcone
ca08900c66 README.md: Fix typo (#813) 2024-11-28 11:05:29 +00:00
Serge Schneider
744c7151fb Merge branch 'master' into arm64 2024-11-22 14:38:36 +00:00
Serge Schneider
8946f77e4a Merge branch 'master' into arm64 2024-11-21 15:57:29 +00:00
Serge Schneider
18acfd7f87 Merge branch 'master' into arm64 2024-11-21 12:43:41 +00:00
Serge Schneider
891df1e21e Merge branch 'master' into arm64 2024-11-19 13:28:23 +00:00
Serge Schneider
919f1e86b9 Merge branch 'master' into arm64 2024-11-11 13:34:14 +00:00
Serge Schneider
e335a4e8b6 Merge branch 'master' into arm64 2024-11-01 12:43:15 +00:00
Serge Schneider
da8f0063ea Merge branch 'master' into arm64 2024-10-31 13:28:46 +00:00
Serge Schneider
ccc23c6738 Merge branch 'master' into arm64 2024-10-30 11:33:22 +00:00
Serge Schneider
150246acda Merge branch 'master' into arm64 2024-10-29 15:33:28 +00:00
Serge Schneider
19fd60cef7 Merge branch 'master' into arm64 2024-10-29 10:16:06 +00:00
Serge Schneider
6453828cce Merge branch 'master' into arm64 2024-10-28 15:00:29 +00:00
Serge Schneider
9aa52c467b Merge branch 'master' into arm64 2024-10-28 08:27:07 +00:00
Serge Schneider
b040e0a64e Update release notes 2024-10-28 08:26:59 +00:00
Serge Schneider
17c8e48534 Merge branch 'master' into arm64 2024-10-28 08:15:53 +00:00
Serge Schneider
7c7d74f210 Update release notes 2024-10-28 08:11:44 +00:00
Serge Schneider
ecda2579eb Merge branch 'master' into arm64 2024-10-07 15:16:24 +01:00
Serge Schneider
94f7acf599 Update release notes 2024-10-07 15:16:04 +01:00
Serge Schneider
4cfc6758ff Merge branch 'master' into arm64 2024-09-25 11:58:30 +01:00
Serge Schneider
fd5a1e93cd stage4: install squeekboard 2024-09-25 11:57:45 +01:00
Serge Schneider
c94d23e165 Replace python3-rpi.gpio with python3-rpi-lgpio 2024-09-25 11:57:45 +01:00
Serge Schneider
cdc1467e13 stage3: switch from arandr to raindrop 2024-09-11 13:39:38 +01:00
Serge Schneider
def6e65ffb stage3: switch to labwc by default 2024-09-11 13:38:16 +01:00
Serge Schneider
36048218e0 Merge branch 'master' into arm64 2024-08-27 13:01:06 +01:00
Serge Schneider
98f522e64d stage3: Switch chromium package and remove unnecessary steps 2024-08-27 13:00:07 +01:00
Serge Schneider
0668700902 Merge branch 'master' into arm64 2024-07-28 21:06:21 +01:00
Serge Schneider
291f869713 export-image: generate sbom file if syft is available 2024-07-28 21:06:03 +01:00
Serge Schneider
48efb5fc54 Merge branch 'master' into arm64 2024-06-24 14:01:51 +01:00
Serge Schneider
a63eb86d7b Merge branch 'master' into arm64 2024-05-27 13:48:46 +01:00
Serge Schneider
0755b07f06 Merge branch 'master' into arm64 2024-05-15 15:52:53 +01:00
Serge Schneider
97aa847ea8 Merge branch 'master' into arm64 2024-05-13 16:41:38 +01:00
Serge Schneider
72b2dfd634 build.sh: set ARCH to arm64 2024-05-13 16:28:34 +01:00
Serge Schneider
2327c5e28d Merge branch 'master' into arm64 2024-05-13 16:28:00 +01:00
Serge Schneider
64e205739c Merge branch 'master' into arm64 2024-04-29 14:38:09 +01:00
Serge Schneider
2c29fc27c5 Merge branch 'master' into arm64 2024-04-29 10:53:31 +01:00
Serge Schneider
7dd5b7dd59 Merge branch 'master' into arm64 2024-04-18 11:35:15 +01:00
Serge Schneider
8056aa3bec Merge branch 'master' into arm64 2024-04-09 15:51:52 +01:00
Serge Schneider
56916d4d84 Merge branch 'master' into arm64 2024-04-09 15:30:05 +01:00
Serge Schneider
f19ee211dd Merge branch 'master' into arm64 2024-03-15 14:55:13 +00:00
Serge Schneider
8273e8553b Merge branch 'master' into arm64 2024-03-13 19:53:20 +00:00
Serge Schneider
dd93d6280f Merge branch 'master' into arm64 2024-03-13 18:17:33 +00:00
Serge Schneider
3358eb36e1 Merge branch 'master' into arm64 2024-03-13 15:46:15 +00:00
Serge Schneider
9a13a81115 Merge branch 'master' into arm64 2024-03-11 14:53:03 +00:00
Serge Schneider
ff2fd5007f Merge branch 'master' into arm64 2024-03-07 23:18:15 +00:00
Serge Schneider
6fb311e7fb Merge branch 'master' into arm64 2024-03-04 08:54:54 +00:00
Serge Schneider
b4f2aeabde Merge branch 'master' into arm64 2024-02-26 14:15:02 +00:00
Serge Schneider
57149546cf Merge branch 'master' into arm64 2024-01-30 14:43:42 +00:00
Serge Schneider
a34bf65c4c Merge branch 'master' into arm64 2024-01-23 15:14:38 +00:00
Serge Schneider
62eeab3a86 Merge branch 'master' into arm64 2024-01-22 14:49:34 +00:00
Serge Schneider
94bb86632d Merge branch 'master' into arm64 2024-01-17 17:37:07 +00:00
Serge Schneider
70cd6f2a1e Merge branch 'master' into arm64 2023-11-29 16:14:49 +00:00
Serge Schneider
0fda3224f6 Merge branch 'master' into arm64 2023-11-29 01:34:19 +00:00
Serge Schneider
caf3d8681b Merge branch 'master' into arm64 2023-11-28 14:25:40 +00:00
Serge Schneider
1460069163 Merge branch 'master' into arm64 2023-11-27 15:34:52 +00:00
Serge Schneider
78444eaf07 Merge branch 'master' into arm64 2023-10-17 14:42:49 +01:00
Serge Schneider
962bf483c8 Merge branch 'master' into arm64 2023-10-04 14:18:52 +01:00
Serge Schneider
5f2fe0f854 pi5 support 2023-09-27 16:04:18 +01:00
Serge Schneider
5ef8b0d45c Remove 32-bit kernels and install 64-bit headers 2023-09-27 16:04:06 +01:00
Serge Schneider
325123ff22 stage0: add non-free-firmware 2023-09-27 16:02:00 +01:00
Serge Schneider
c318daf364 Merge branch 'master' into arm64 2023-09-27 16:01:28 +01:00
Reuben Miller
77706bd2f6 fix: support bash v3 by removing array usage (#705) 2023-09-25 14:59:25 +01:00
Serge Schneider
e484aa8581 Merge branch 'master' into arm64 2023-08-17 16:51:11 +01:00
Stefan Becker
a86d732f58 Register aarch64 in binfmt misc (#694)
This modifies commit 6dc45a80e7 for the
arm64 branch. For 64-bit builds we need to register qemu-aarch64-static
instead.

Improves on #685
2023-05-09 14:27:36 +01:00
Serge Schneider
7c750947a9 Update chromium install 2023-04-25 21:46:39 +01:00
Serge Schneider
c16e6b7dee Merge branch 'master' into arm64 2023-04-25 15:44:25 +01:00
Serge Schneider
0defafedd4 Merge branch 'master' into arm64 2023-03-29 07:59:56 +01:00
Serge Schneider
84746b2bcd Merge branch 'master' into arm64 2023-03-28 17:21:32 +01:00
Stefan Becker
3e8046da4c Update qemu ARM binary name in README.md (#684)
When running a 64 bit build you need the QEMU aarch64 binary installed
on the host system.

Fixes #678
2023-03-27 16:02:46 +01:00
Serge Schneider
a2afdf78cb Merge branch 'master' into arm64 2023-03-27 14:44:45 +01:00
Serge Schneider
60c9ba3199 Re-enable wolfram-engine on arm64 2023-03-09 15:12:33 +00:00
Serge Schneider
25e2319eff Merge branch 'master' into arm64 2023-02-14 15:26:22 +00:00
Serge Schneider
04d0dcb46c Merge branch 'master' into arm64 2023-02-14 15:23:58 +00:00
Serge Schneider
b48040b3f0 Merge branch 'master' into arm64 2023-02-09 12:28:47 +00:00
Serge Schneider
366bc2c8f3 Merge branch 'master' into arm64 2022-11-11 08:58:33 +00:00
Serge Schneider
bd2cf0e0e4 Merge branch 'master' into arm64 2022-11-08 12:07:33 +00:00
Serge Schneider
da6dde2aea Merge branch 'master' into arm64 2022-11-08 11:09:30 +00:00
Serge Schneider
2bc1f64a57 Merge branch 'master' into arm64 2022-09-26 12:15:33 +01:00
Serge Schneider
3dff0ce787 Merge branch 'master' into arm64 2022-09-22 13:07:48 +01:00
Serge Schneider
005a8c73b0 Merge branch 'master' into arm64 2022-09-21 16:15:08 +01:00
Serge Schneider
b37b47e559 Merge branch 'master' into arm64 2022-09-15 15:41:32 +01:00
Serge Schneider
3f78c2b444 Merge branch 'master' into arm64 2022-09-14 16:51:02 +01:00
Serge Schneider
bd85d61c05 Merge branch 'master' into arm64 2022-09-07 13:00:42 +01:00
Serge Schneider
827affcc11 Merge branch 'master' into arm64 2022-09-06 11:28:59 +01:00
Serge Schneider
4e9aaac41e Merge branch 'master' into arm64 2022-09-01 16:32:50 +01:00
Serge Schneider
fb582e2e67 Merge remote-tracking branch 'origin/master' into arm64 2022-07-26 12:08:25 +01:00
XECDesign
ca06d62f2e Docker: always use debian:bullseye for arm64 image
Fixes #613
2022-04-25 15:11:28 +01:00
Serge Schneider
18aee5cfb8 Merge branch 'master' into arm64 2022-04-08 15:29:02 +01:00
Serge Schneider
27a8050c3c Merge branch 'master' into arm64 2022-04-04 12:42:35 +01:00
Serge Schneider
151f3ff80f Merge branch 'master' into arm64 2022-03-29 10:59:31 +01:00
Serge Schneider
e5bd8d5433 Merge branch 'master' into arm64 2022-03-28 19:44:49 +01:00
Serge Schneider
10a538ff92 Merge branch 'master' into arm64 2022-03-21 11:48:48 +00:00
Serge Schneider
7073d28f22 Merge branch 'master' into arm64 2022-03-01 16:25:28 +00:00
Serge Schneider
d1b8a2005b Merge branch 'master' into arm64 2022-02-28 14:19:38 +00:00
Serge Schneider
a0ba64e5c8 Merge branch 'master' into arm64 2022-02-23 18:36:52 +00:00
Serge Schneider
733513aa25 Enable APT_PROXY for arm64 builds
Closes #598
2022-02-22 11:34:06 +00:00
Serge Schneider
255288909b Merge branch 'master' into arm64 2022-02-03 15:51:14 +00:00
Serge Schneider
4721bfe590 Update os.json 2022-02-02 14:32:09 +00:00
Serge Schneider
2b3ba5b2a6 Merge branch 'master' into arm64 2022-02-02 14:26:31 +00:00
Serge Schneider
fbe448ccdc Merge branch 'master' into arm64 2022-01-20 15:32:05 +00:00
Serge Schneider
61c6294e23 Merge branch 'master' into arm64 2022-01-14 09:18:35 +00:00
Serge Schneider
dec2743355 Merge branch 'master' into arm64 2022-01-13 15:39:30 +00:00
Serge Schneider
43c42bf9e4 Merge branch 'master' into arm64 2022-01-12 10:22:21 +00:00
Serge Schneider
69cc4146c8 Build complete set of arm64 images 2022-01-11 11:20:35 +00:00
Serge Schneider
ef933ae156 Merge branch 'master' into arm64 2022-01-10 12:41:54 +00:00
Serge Schneider
0f7ab62ac9 Revert "Update chromium install"
This reverts commit 69cd27944c.
2021-12-22 15:55:04 +00:00
Serge Schneider
f81afa8282 Merge branch 'master' into arm64 2021-12-22 15:54:16 +00:00
XECDesign
45b4cc19d0 Remove use of setarch for arm64
Fixes #572
2021-12-22 15:43:06 +00:00
Serge Schneider
14a28a729e Merge branch 'master' into arm64 2021-11-12 12:14:10 +00:00
Serge Schneider
720f4aea86 Merge branch 'master' into arm64 2021-11-08 08:44:58 +00:00
Serge Schneider
c12b1df4ed Merge branch 'master' into arm64 2021-10-29 20:38:23 +01:00
Serge Schneider
c61f8b72fa Merge branch 'master' into arm64 2021-10-29 10:24:20 +01:00
Serge Schneider
edbc8b604d Merge branch 'master' into arm64 2021-10-29 10:21:19 +01:00
Serge Schneider
5ea223355a Add debian-security repo 2021-10-26 12:28:11 +01:00
Serge Schneider
cd8a82d4fd Merge branch 'master' into arm64 2021-10-15 16:04:49 +01:00
Serge Schneider
cf938b0549 Merge branch 'master' into arm64 2021-10-07 10:08:40 +01:00
Serge Schneider
268d4c4f44 Remove debian-security bullseye/updates repo 2021-10-06 14:59:29 +01:00
Serge Schneider
2e3603d228 Merge branch 'master' into arm64 2021-10-05 17:43:06 +01:00
Serge Schneider
5971767590 Merge branch 'master' into arm64 2021-09-21 16:36:50 +01:00
Serge Schneider
535ea6c7f0 Merge branch 'master' into arm64 2021-09-01 14:07:47 +01:00
Serge Schneider
600f7c1fa4 Merge branch 'master' into arm64 2021-09-01 11:10:57 +01:00
Serge Schneider
4b59b5a70d Merge remote-tracking branch 'upstream/master' into arm64 2021-06-22 15:57:11 +01:00
Serge Schneider
95ea0ba696 Merge branch 'master' into arm64 2021-06-17 16:53:05 +01:00
Serge Schneider
071d395635 Merge branch 'master' into arm64 2021-05-07 15:37:59 +01:00
Serge Schneider
7cfcace573 Merge branch 'master' into arm64 2021-03-31 12:29:10 +01:00
Serge Schneider
04f9b9bb5f Install gpiozero in lite images 2021-03-31 12:28:30 +01:00
Serge Schneider
2b9e8e9b22 Merge branch 'master' into arm64 2021-03-04 22:43:17 +00:00
Serge Schneider
4929d829f2 Merge branch 'master' into arm64 2021-03-04 00:37:55 +00:00
Serge Schneider
cfe65b2e64 Merge branch 'master' into arm64 2021-01-11 12:48:15 +00:00
Serge Schneider
88e48a8aca Switch to KMS 2020-12-15 13:35:23 +00:00
Serge Schneider
31aa04e99c Merge branch 'master' into arm64 2020-12-02 16:56:57 +00:00
Serge Schneider
571fe1e26b Merge branch 'master' into arm64 2020-11-27 15:51:11 +00:00
Serge Schneider
041b97464c Merge branch 'master' into arm64 2020-11-17 15:22:34 +00:00
Serge Schneider
fbdcaaf4f8 Merge branch 'master' into arm64 2020-11-17 15:15:11 +00:00
Serge Schneider
ec4562c7f2 Merge remote-tracking branch 'upstream/master' into arm64 2020-10-14 14:51:20 +01:00
Serge Schneider
8808124cc3 Merge branch 'master' into arm64 2020-09-23 20:02:52 +01:00
Serge Schneider
bc3970f9e3 Merge branch 'master' into arm64 2020-09-09 15:12:53 +01:00
Serge Schneider
d3553f5ec4 Merge branch 'master' into arm64 2020-08-24 17:06:36 +01:00
Serge Schneider
0cab554f7d Merge branch 'master' into arm64 2020-08-24 15:49:08 +01:00
Serge Schneider
75123fd64e export lite image 2020-08-06 10:29:04 +01:00
Serge Schneider
0f41e41c8c Switch to FKMS 2020-07-30 15:32:03 +01:00
Serge Schneider
a58e722bee Install RealVNC server 2020-07-30 15:31:16 +01:00
Serge Schneider
c640efa6e1 Revert "fix vlc installation"
This reverts commit f644fa284871341f89b153679339bcc233d7990f.
2020-07-30 15:29:40 +01:00
Serge Schneider
d4049eeffb fix vlc installation 2020-07-30 15:29:40 +01:00
Serge Schneider
906c587fcd Package changes
Install vlc

Remove realvnc server

Switch to Full KMS
2020-07-30 15:29:40 +01:00
Serge Schneider
99399d30fc aarch64 2020-07-30 15:29:40 +01:00
86 changed files with 644 additions and 361 deletions

68
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,68 @@
name: Build images
on:
push:
branches:
- showpiece
tags:
- 'v*'
jobs:
build_images:
name: Build images
runs-on: ubuntu-latest
timeout-minutes: 120
strategy:
fail-fast: true
env:
DEPLOY: startsWith(github.ref, 'refs/tags/v')
permissions:
contents: read
packages: write
steps:
- name: Checkout
uses: https://github.com/actions/checkout@v4
- name: Apply patches
run: ./runtime-patches.sh
- name: Install dependencies
run: |
sudo apt-get update &&
sudo apt-get install -y qemu-user-static quilt debootstrap libarchive-tools arch-test binfmt-support
- name: Setup binfmt_misc
run: |
ls /proc/sys/fs/binfmt_misc/ || true
sudo mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc || true
sudo update-binfmts --enable qemu-aarch64
- name: Run build process
run: |
sudo ./build.sh &&
sudo mv deploy/*-arm64-standalone.img deploy/showpieceos-arm64-standalone.img &&
sudo mv deploy/*-arm64-client.img deploy/showpieceos-arm64-client.img
- name: Compress images
if: startsWith(github.ref, 'refs/tags/v')
run: sudo ./compress-images.sh
- name: Publish client
if: startsWith(github.ref, 'refs/tags/v')
uses: https://github.com/softprops/action-gh-release@v2
with:
tag_name: ${{ github.ref_name }}
name: ${{ github.ref_name }}
files: deploy/*-client.img.gz
- name: Publish standalone
if: startsWith(github.ref, 'refs/tags/v')
uses: https://github.com/softprops/action-gh-release@v2
with:
tag_name: ${{ github.ref_name }}
name: ${{ github.ref_name }}
files: deploy/*-standalone.img.gz

3
.gitignore vendored
View File

@@ -1,8 +1,5 @@
deploy/*
work/*
config
postrun.sh
SKIP
SKIP_IMAGES
.pc
*-pc

View File

@@ -1,12 +1,12 @@
ARG BASE_IMAGE=debian:bullseye
FROM ${BASE_IMAGE}
ENV DEBIAN_FRONTEND noninteractive
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
@@ -423,7 +436,7 @@ work from a Raspberry Pi with a 64-bit capable processor (i.e. Raspberry Pi Zero
## `binfmt_misc`
Linux is able execute binaries from other architectures, meaning that it should be
Linux is able to execute binaries from other architectures, meaning that it should be
possible to make use of `pi-gen` on an x86_64 system, even though it will be running
ARM binaries. This requires support from the [`binfmt_misc`](https://en.wikipedia.org/wiki/Binfmt_misc)
kernel module.
@@ -443,7 +456,7 @@ To resolve this, ensure that the following files are available (install them if
```
/lib/modules/$(uname -r)/kernel/fs/binfmt_misc.ko
/usr/bin/qemu-arm-static
/usr/bin/qemu-aarch64-static
```
You may also need to load the module by hand - run `modprobe binfmt_misc`.

View File

@@ -82,16 +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@')"
# Check the arch of the machine we're running on. If it's 64-bit, use a 32-bit base image instead
case "$(uname -m)" in
x86_64|aarch64)
BASE_IMAGE=i386/debian:bullseye
;;
*)
BASE_IMAGE=debian:bullseye
;;
esac
${DOCKER} build --build-arg BASE_IMAGE=${BASE_IMAGE} -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"
@@ -114,10 +105,10 @@ case $(uname -m) in
;;
esac
# Check if qemu-arm-static and /proc/sys/fs/binfmt_misc are present
# Check if qemu-aarch64-static and /proc/sys/fs/binfmt_misc are present
if [[ "${binfmt_misc_required}" == "1" ]]; then
if ! qemu_arm=$(which qemu-arm-static) ; then
echo "qemu-arm-static not found (please install qemu-user-static)"
if ! qemu_arm=$(which qemu-aarch64-static) ; then
echo "qemu-aarch64-static not found (please install qemu-user-static)"
exit 1
fi
if [ ! -f /proc/sys/fs/binfmt_misc/register ]; then
@@ -128,13 +119,13 @@ if [[ "${binfmt_misc_required}" == "1" ]]; then
fi
echo "binfmt_misc mounted"
fi
if ! grep -q "^interpreter ${qemu_arm}" /proc/sys/fs/binfmt_misc/qemu-arm* ; then
# Register qemu-arm for binfmt_misc
reg="echo ':qemu-arm-rpi:M::"\
"\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:"\
if ! grep -q "^interpreter ${qemu_arm}" /proc/sys/fs/binfmt_misc/qemu-aarch64* ; then
# Register qemu-aarch64 for binfmt_misc
reg="echo ':qemu-aarch64-rpi:M::"\
"\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00:"\
"\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:"\
"${qemu_arm}:F' > /proc/sys/fs/binfmt_misc/register"
echo "Registering qemu-arm for binfmt_misc..."
echo "Registering qemu-aarch64 for binfmt_misc..."
sudo bash -c "${reg}" 2>/dev/null || true
fi
fi
@@ -151,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 bullseye 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"
@@ -175,8 +177,8 @@ export PI_GEN=${PI_GEN:-pi-gen}
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=armhf
export RELEASE=${RELEASE:-bookworm} # Don't forget to update stage0/prerun.sh
export ARCH=arm64
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

5
compress-images.sh Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/bash
for img in "deploy/"*.img; do
gzip -4 -v -k "$img"
done

22
config Normal file
View File

@@ -0,0 +1,22 @@
IMG_NAME="showpieceos-bookworm-arm64"
PI_GEN_RELEASE="Showpiece OS Bookworm"
RELEASE="bookworm"
DEPLOY_COMPRESSION="none"
COMPRESSION_LEVEL=0
LOCALE_DEFAULT="en_US.UTF-8"
TARGET_HOSTNAME="showpiece"
KEYBOARD_KEYMAP="us"
KEYBOARD_LAYOUT="English (US)"
TIMEZONE_DEFAULT="America/Chicago"
FIRST_USER_NAME="pi"
FIRST_USER_PASS="letmein"
DISABLE_FIRST_BOOT_USER_RENAME=1
WPA_COUNTRY=US
ENABLE_SSH=0
STAGE_LIST=""
for d in stage*; do
if [ -d "$d" ] && [ ! -f "$d/SKIP" ]; then
STAGE_LIST+="$d "
fi
done
STAGE_LIST="$(echo "$STAGE_LIST" | xargs)"

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,18 +1,15 @@
{
"description": "NOOBS_DESCRIPTION",
"feature_level": 35120124,
"kernel": "KERNEL",
"name": "NOOBS_NAME",
"password": "raspberry",
"release_date": "UNRELEASED",
"supported_hex_revisions": "2,3,4,5,6,7,8,9,d,e,f,10,11,12,14,19,1040,1041,0092,0093,2082",
"supported_models": [
"Pi Model",
"Pi 2",
"Pi Zero",
"Pi Zero 2",
"Pi 3",
"Pi 4",
"Pi Compute Module 3",
"Pi 4"
"Pi Compute Module 4"
],
"url": "http://www.raspbian.org/",
"username": "pi",

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

6
runtime-patches.sh Executable file
View File

@@ -0,0 +1,6 @@
#!/bin/bash
# Patches to run before building showpieceos
# Allows for non-destructive deletion of files
rm stage2/EXPORT_IMAGE

View File

@@ -9,15 +9,19 @@ bootstrap(){
export http_proxy=${APT_PROXY}
BOOTSTRAP_ARGS+=(--arch armhf)
BOOTSTRAP_ARGS+=(--arch arm64)
BOOTSTRAP_ARGS+=(--include gnupg)
BOOTSTRAP_ARGS+=(--components "main,contrib,non-free")
BOOTSTRAP_ARGS+=(--keyring "${STAGE_DIR}/files/raspberrypi.gpg")
#BOOTSTRAP_ARGS+=(--keyring "${STAGE_DIR}/files/raspberrypi.gpg")
BOOTSTRAP_ARGS+=(--exclude=info,ifupdown)
BOOTSTRAP_ARGS+=(--include=ca-certificates)
BOOTSTRAP_ARGS+=("$@")
printf -v BOOTSTRAP_STR '%q ' "${BOOTSTRAP_ARGS[@]}"
setarch linux32 capsh $CAPSH_ARG -- -c "'${BOOTSTRAP_CMD}' $BOOTSTRAP_STR" || true
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}"
@@ -100,7 +104,7 @@ on_chroot() {
mount -t tmpfs tmpfs "${ROOTFS_DIR}/tmp"
fi
setarch linux32 capsh $CAPSH_ARG "--chroot=${ROOTFS_DIR}/" -- -e "$@"
capsh $CAPSH_ARG "--chroot=${ROOTFS_DIR}/" -- -e "$@"
}
export -f on_chroot

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,3 +0,0 @@
deb [ arch=armhf ] http://raspbian.raspberrypi.com/raspbian/ RELEASE main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://raspbian.raspberrypi.com/raspbian/ RELEASE main contrib non-free rpi

View File

@@ -1,9 +1,6 @@
initramfs-tools
raspi-firmware
linux-image-rpi-v6
linux-image-rpi-v7
linux-image-rpi-v7l
linux-image-rpi-v8
linux-headers-rpi-v6
linux-headers-rpi-v7
linux-headers-rpi-v7l
linux-image-rpi-2712
linux-headers-rpi-v8
linux-headers-rpi-2712

Binary file not shown.

View File

@@ -1,10 +1,10 @@
#!/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
if [ ! -d "${ROOTFS_DIR}" ]; then
bootstrap ${RELEASE} "${ROOTFS_DIR}" http://raspbian.raspberrypi.com/raspbian/
bootstrap ${RELEASE} "${ROOTFS_DIR}" http://deb.debian.org/debian/
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

@@ -30,6 +30,9 @@ max_framebuffers=2
# Use the kernel's default instead.
disable_fw_kms_setup=1
# Run in 64-bit mode
arm_64bit=1
# Disable compensation for displays with overscan
disable_overscan=1

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

@@ -1 +0,0 @@
raspi-copies-and-fills

View File

@@ -1,6 +0,0 @@
#!/bin/bash -e
if [ -f "${ROOTFS_DIR}/etc/ld.so.preload" ]; then
mv "${ROOTFS_DIR}/etc/ld.so.preload" "${ROOTFS_DIR}/etc/ld.so.preload.disabled"
fi

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"
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,20 +1,4 @@
gstreamer1.0-x gstreamer1.0-omx 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
obconf
raindrop
libcamera-tools
rpicam-apps
python3-picamera2
python3-pyqt5
python3-opengl
vulkan-tools mesa-vulkan-drivers
rpd-preferences
rpd-theme
fonts-noto
fonts-noto-color-emoji

View File

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

View File

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

View File

@@ -0,0 +1,6 @@
#!/bin/bash -e
install -d -o 1000 -g 1000 "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config/autostart"
install -m 644 files/kiosk.desktop "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config/autostart/"
chown -R 1000:1000 "${ROOTFS_DIR}"/home/"${FIRST_USER_NAME}"/.config
mkdir -p "${ROOTFS_DIR}/tmp"

View File

@@ -0,0 +1,6 @@
[Desktop Entry]
Type=Application
Name=Chromium
Exec=chromium-browser --profile-directory="showpiece-browser" --kiosk https://showpiece.sanin.dev/
StartupNotify=false
Terminal=false

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

@@ -0,0 +1,6 @@
#!/bin/bash -e
echo "Setting default wallpaper"
for conf in "${ROOTFS_DIR}/etc/xdg/pcmanfm/LXDE-pi/desktop-items-"*.conf; do
sed -E 's|/usr/share/rpd-wallpaper/.+$|/usr/share/rpd-wallpaper/RPiSystem.png|' -i "$conf"
done

View File

@@ -0,0 +1,4 @@
#!/bin/bash -e
echo "Setting custom cmdline"
sed -i 's/$/ video=HDMI-A-2:1920x1080M@60/' "${ROOTFS_DIR}/boot/firmware/cmdline.txt"

View File

@@ -1,4 +1,4 @@
IMG_SUFFIX=""
IMG_SUFFIX="-client"
if [ "${USE_QEMU}" = "1" ]; then
export IMG_SUFFIX="${IMG_SUFFIX}-qemu"
fi

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

0
stage5/SKIP Normal file
View File

View File

@@ -0,0 +1,3 @@
apt-transport-https
gnupg2
software-properties-common

View File

@@ -0,0 +1,7 @@
#!/bin/bash
#change to "debian" if necessary:
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | sudo apt-key add -
echo "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
$(lsb_release -cs) stable" | \
tee /etc/apt/sources.list.d/docker.list
apt update

View File

@@ -0,0 +1,3 @@
docker-ce
docker-compose-plugin
cgroupfs-mount

View File

@@ -0,0 +1,5 @@
#!/bin/bash
systemctl enable docker
systemctl start docker
gpasswd -a pi docker
newgrp docker

11
stage9/02-showpiece/01-run.sh Executable file
View File

@@ -0,0 +1,11 @@
#!/bin/bash -e
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config/showpiece"
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config/showpiece/config"
install -m 644 files/docker-compose.yml "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config/showpiece/"
install -m 644 files/config.json5 "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config/showpiece/config/"
install -d -o 1000 -g 1000 "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config/autostart"
install -m 644 files/kiosk.desktop "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config/autostart/"
chown -R 1000:1000 "${ROOTFS_DIR}"/home/"${FIRST_USER_NAME}"/.config
mkdir -p "${ROOTFS_DIR}/tmp"
echo "$FIRST_USER_NAME" > "${ROOTFS_DIR}/tmp/first_username"

View File

@@ -0,0 +1,12 @@
#!/bin/bash
USERNAME=$(cat /tmp/first_username)
COMPOSEFILE="/home/$USERNAME/.config/showpiece/docker-compose.yml"
echo "@reboot docker compose --file '$COMPOSEFILE' up -d && chromium --kiosk 'http://localhost:8080/?w=1080'" >> /tmp/user.crontab
echo "40 3 * * * docker compose --file '$COMPOSEFILE' pull && docker compose --file '$COMPOSEFILE' up -d" >> /tmp/user.crontab
crontab -u "$USERNAME" /tmp/user.crontab
rm /tmp/first_username
rm /tmp/user.crontab

View File

@@ -0,0 +1,14 @@
{
// Port for the viewer
"port": 8080,
// Port for the control panel
// (use a different port to restrict access to this interface)
"controlport": 8080,
// (optional) provide weather data to modules that support it
"weather": {
// Provide an OpenWeatherMap API key
// https://openweathermap.org/price
// "key": "not0a0real0key00281f631aef6ad3a1",
// "city": "chicago"
}
}

View File

@@ -0,0 +1,10 @@
services:
showpiece:
container_name: showpiece
image: corysanin/showpiece:latest
restart: always
ports:
- 8080:8080
volumes:
- /etc/localtime:/etc/localtime:ro
- ./config:/usr/src/showpiece/config

View File

@@ -0,0 +1,6 @@
[Desktop Entry]
Type=Application
Name=Chromium
Exec=chromium-browser --profile-directory="showpiece-browser" --kiosk http://localhost:8080/?w=1080
StartupNotify=false
Terminal=false

4
stage9/EXPORT_IMAGE Normal file
View File

@@ -0,0 +1,4 @@
IMG_SUFFIX="-standalone"
if [ "${USE_QEMU}" = "1" ]; then
export IMG_SUFFIX="${IMG_SUFFIX}-qemu"
fi

5
stage9/prerun.sh Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/bash -e
if [ ! -d "${ROOTFS_DIR}" ]; then
copy_previous
fi