176 Commits

Author SHA1 Message Date
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
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
49 changed files with 317 additions and 91 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/* deploy/*
work/* work/*
config
postrun.sh postrun.sh
SKIP
SKIP_IMAGES
.pc .pc
*-pc *-pc

View File

@@ -1,7 +1,7 @@
ARG BASE_IMAGE=debian:bullseye ARG BASE_IMAGE=debian:bullseye
FROM ${BASE_IMAGE} FROM ${BASE_IMAGE}
ENV DEBIAN_FRONTEND noninteractive ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get -y update && \ RUN apt-get -y update && \
apt-get -y install --no-install-recommends \ apt-get -y install --no-install-recommends \

View File

@@ -22,7 +22,7 @@ To install the required dependencies for `pi-gen` you should run:
```bash ```bash
apt-get install coreutils quilt parted qemu-user-static debootstrap zerofree zip \ 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 \ dosfstools libarchive-tools libcap2-bin grep rsync xz-utils file git curl bc \
gpg pigz xxd arch-test gpg pigz xxd arch-test bmap-tools
``` ```
The file `depends` contains a list of tools needed. The format of this The file `depends` contains a list of tools needed. The format of this
@@ -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 will not be included in the image, making it safe to use an `apt-cacher` or
similar package for development. 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`) * `BASE_DIR` (Default: location of `build.sh`)
**CAUTION**: Currently, changing this value will probably break build.sh **CAUTION**: Currently, changing this value will probably break build.sh
@@ -423,7 +430,7 @@ work from a Raspberry Pi with a 64-bit capable processor (i.e. Raspberry Pi Zero
## `binfmt_misc` ## `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 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) ARM binaries. This requires support from the [`binfmt_misc`](https://en.wikipedia.org/wiki/Binfmt_misc)
kernel module. kernel module.
@@ -443,7 +450,7 @@ To resolve this, ensure that the following files are available (install them if
``` ```
/lib/modules/$(uname -r)/kernel/fs/binfmt_misc.ko /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`. 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 # 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@')" 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 ${DOCKER} build --build-arg BASE_IMAGE=debian:bookworm -t pi-gen "${DIR}"
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}"
if [ "${CONTAINER_EXISTS}" != "" ]; then if [ "${CONTAINER_EXISTS}" != "" ]; then
DOCKER_CMDLINE_NAME="${CONTAINER_NAME}_cont" DOCKER_CMDLINE_NAME="${CONTAINER_NAME}_cont"
@@ -114,10 +105,10 @@ case $(uname -m) in
;; ;;
esac 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 [[ "${binfmt_misc_required}" == "1" ]]; then
if ! qemu_arm=$(which qemu-arm-static) ; then if ! qemu_arm=$(which qemu-aarch64-static) ; then
echo "qemu-arm-static not found (please install qemu-user-static)" echo "qemu-aarch64-static not found (please install qemu-user-static)"
exit 1 exit 1
fi fi
if [ ! -f /proc/sys/fs/binfmt_misc/register ]; then if [ ! -f /proc/sys/fs/binfmt_misc/register ]; then
@@ -128,13 +119,13 @@ if [[ "${binfmt_misc_required}" == "1" ]]; then
fi fi
echo "binfmt_misc mounted" echo "binfmt_misc mounted"
fi fi
if ! grep -q "^interpreter ${qemu_arm}" /proc/sys/fs/binfmt_misc/qemu-arm* ; then if ! grep -q "^interpreter ${qemu_arm}" /proc/sys/fs/binfmt_misc/qemu-aarch64* ; then
# Register qemu-arm for binfmt_misc # Register qemu-aarch64 for binfmt_misc
reg="echo ':qemu-arm-rpi:M::"\ reg="echo ':qemu-aarch64-rpi:M::"\
"\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:"\ "\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:"\ "\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" "${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 sudo bash -c "${reg}" 2>/dev/null || true
fi fi
fi fi
@@ -151,7 +142,7 @@ time ${DOCKER} run \
pi-gen \ pi-gen \
bash -e -o pipefail -c " bash -e -o pipefail -c "
dpkg-reconfigure qemu-user-static && dpkg-reconfigure qemu-user-static &&
# binfmt_misc is sometimes not mounted with debian bullseye image # binfmt_misc is sometimes not mounted with debian bookworm image
(mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc || true) && (mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc || true) &&
cd /pi-gen; ./build.sh ${BUILD_OPTS} && cd /pi-gen; ./build.sh ${BUILD_OPTS} &&
rsync -av work/*/build.log deploy/ rsync -av work/*/build.log deploy/

View File

@@ -175,7 +175,7 @@ export PI_GEN=${PI_GEN:-pi-gen}
export PI_GEN_REPO=${PI_GEN_REPO:-https://github.com/RPi-Distro/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 PI_GEN_RELEASE=${PI_GEN_RELEASE:-Raspberry Pi reference}
export ARCH=armhf export ARCH=arm64
export RELEASE=${RELEASE:-bookworm} # Don't forget to update stage0/prerun.sh export RELEASE=${RELEASE:-bookworm} # Don't forget to update stage0/prerun.sh
export IMG_NAME="${IMG_NAME:-raspios-$RELEASE-$ARCH}" export IMG_NAME="${IMG_NAME:-raspios-$RELEASE-$ARCH}"
@@ -222,6 +222,7 @@ export PUBKEY_SSH_FIRST_USER
export CLEAN export CLEAN
export APT_PROXY export APT_PROXY
export TEMP_REPO
export STAGE export STAGE
export STAGE_DIR export STAGE_DIR

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

@@ -1,9 +1,5 @@
#!/bin/bash -e #!/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 if [ -e "${ROOTFS_DIR}/etc/ld.so.preload" ]; then
mv "${ROOTFS_DIR}/etc/ld.so.preload" "${ROOTFS_DIR}/etc/ld.so.preload.disabled" mv "${ROOTFS_DIR}/etc/ld.so.preload" "${ROOTFS_DIR}/etc/ld.so.preload.disabled"
fi fi

View File

@@ -1,6 +1,7 @@
#!/bin/bash -e #!/bin/bash -e
rm -f "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache" 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 find "${ROOTFS_DIR}/var/lib/apt/lists/" -type f -delete
on_chroot << EOF on_chroot << EOF
apt-get update apt-get update

View File

@@ -3,6 +3,7 @@
IMG_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.img" IMG_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.img"
INFO_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.info" INFO_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.info"
SBOM_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.sbom" SBOM_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.sbom"
BMAP_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.bmap"
on_chroot << EOF on_chroot << EOF
update-initramfs -k all -c update-initramfs -k all -c
@@ -100,6 +101,12 @@ zerofree "${ROOT_DEV}"
unmount_image "${IMG_FILE}" unmount_image "${IMG_FILE}"
if hash bmaptool 2>/dev/null; then
bmaptool create \
-o "${BMAP_FILE}" \
"${IMG_FILE}"
fi
mkdir -p "${DEPLOY_DIR}" mkdir -p "${DEPLOY_DIR}"
rm -f "${DEPLOY_DIR}/${ARCHIVE_FILENAME}${IMG_SUFFIX}.*" rm -f "${DEPLOY_DIR}/${ARCHIVE_FILENAME}${IMG_SUFFIX}.*"
@@ -126,6 +133,9 @@ none | *)
esac esac
if [ -f "${SBOM_FILE}" ]; then 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 fi
cp "$INFO_FILE" "$DEPLOY_DIR/" 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) 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 # 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 # Add this much space to the calculated file size. This allows for
# some overhead (since actual space usage is usually rounded up to the # some overhead (since actual space usage is usually rounded up to the
# filesystem block size) and gives some free space on the resulting # filesystem block size) and gives some free space on the resulting

View File

@@ -1,18 +1,15 @@
{ {
"description": "NOOBS_DESCRIPTION", "description": "NOOBS_DESCRIPTION",
"feature_level": 35120124,
"kernel": "KERNEL", "kernel": "KERNEL",
"name": "NOOBS_NAME", "name": "NOOBS_NAME",
"password": "raspberry", "password": "raspberry",
"release_date": "UNRELEASED", "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": [ "supported_models": [
"Pi Model", "Pi Zero 2",
"Pi 2",
"Pi Zero",
"Pi 3", "Pi 3",
"Pi 4",
"Pi Compute Module 3", "Pi Compute Module 3",
"Pi 4" "Pi Compute Module 4"
], ],
"url": "http://www.raspbian.org/", "url": "http://www.raspbian.org/",
"username": "pi", "username": "pi",

View File

@@ -1,5 +1,43 @@
UNRELEASED: UNRELEASED:
* *
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: 2024-10-22:
* labwc compositor now used as the default on all models of Raspberry Pi * labwc compositor now used as the default on all models of Raspberry Pi
* wf-panel-pi now loads plugins dynamically at runtime * 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,16 @@ bootstrap(){
export http_proxy=${APT_PROXY} 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+=(--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+=(--exclude=info,ifupdown)
BOOTSTRAP_ARGS+=(--include=ca-certificates) BOOTSTRAP_ARGS+=(--include=ca-certificates)
BOOTSTRAP_ARGS+=("$@") BOOTSTRAP_ARGS+=("$@")
printf -v BOOTSTRAP_STR '%q ' "${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
if [ -d "$2/debootstrap" ] && ! rmdir "$2/debootstrap"; then if [ -d "$2/debootstrap" ] && ! rmdir "$2/debootstrap"; then
cp "$2/debootstrap/debootstrap.log" "${STAGE_WORK_DIR}" cp "$2/debootstrap/debootstrap.log" "${STAGE_WORK_DIR}"
@@ -100,7 +101,7 @@ on_chroot() {
mount -t tmpfs tmpfs "${ROOTFS_DIR}/tmp" mount -t tmpfs tmpfs "${ROOTFS_DIR}/tmp"
fi fi
setarch linux32 capsh $CAPSH_ARG "--chroot=${ROOTFS_DIR}/" -- -e "$@" capsh $CAPSH_ARG "--chroot=${ROOTFS_DIR}/" -- -e "$@"
} }
export -f on_chroot export -f on_chroot

View File

@@ -12,6 +12,13 @@ else
rm -f "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache" rm -f "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache"
fi fi
if [ -n "$TEMP_REPO" ]; then
install -m 644 /dev/null "${ROOTFS_DIR}/etc/apt/sources.list.d/00-temp.list"
echo "$TEMP_REPO" | sed "s/RELEASE/$RELEASE/g" > "${ROOTFS_DIR}/etc/apt/sources.list.d/00-temp.list"
else
rm -f "${ROOTFS_DIR}/etc/apt/sources.list.d/00-temp.list"
fi
cat files/raspberrypi.gpg.key | gpg --dearmor > "${STAGE_WORK_DIR}/raspberrypi-archive-stable.gpg" 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/" install -m 644 "${STAGE_WORK_DIR}/raspberrypi-archive-stable.gpg" "${ROOTFS_DIR}/etc/apt/trusted.gpg.d/"
on_chroot <<- \EOF on_chroot <<- \EOF

View File

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

View File

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

View File

@@ -6,5 +6,5 @@ if [ "$RELEASE" != "bookworm" ]; then
fi fi
if [ ! -d "${ROOTFS_DIR}" ]; then if [ ! -d "${ROOTFS_DIR}" ]; then
bootstrap ${RELEASE} "${ROOTFS_DIR}" http://raspbian.raspberrypi.com/raspbian/ bootstrap ${RELEASE} "${ROOTFS_DIR}" http://deb.debian.org/debian/
fi fi

View File

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

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

@@ -71,8 +71,8 @@ on_chroot << EOF
DEBIAN_FRONTEND=noninteractive dpkg-reconfigure keyboard-configuration DEBIAN_FRONTEND=noninteractive dpkg-reconfigure keyboard-configuration
EOF EOF
sed -i 's/^#?Storage=.*/Storage=volatile/' "${ROOTFS_DIR}/etc/systemd/journald.conf" sed -i 's/^#\?Storage=.*/Storage=volatile/' "${ROOTFS_DIR}/etc/systemd/journald.conf"
if [ -e "${ROOTFS_DIR}/etc/avahi/avahi-daemon.conf" ]; then 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 fi

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 raspberrypi-net-mods
network-manager network-manager
net-tools net-tools

View File

@@ -1,4 +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 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 evince gtk2-engines alsa-utils
desktop-base desktop-base
git git
@@ -10,6 +10,8 @@ firefox rpi-firefox-mods
gldriver-test gldriver-test
fonts-droid-fallback fonts-droid-fallback
fonts-liberation2 fonts-liberation2
fonts-noto
fonts-noto-color-emoji
obconf obconf
raindrop raindrop
libcamera-tools libcamera-tools

View File

@@ -1,6 +1,8 @@
xserver-xorg-video-fbdev xserver-xorg xinit xserver-xorg xinit
x11-xserver-utils
mousepad mousepad
eom eom
vim
lxde lxtask menu-xdg lxde lxtask menu-xdg
zenity xdg-utils zenity xdg-utils
gvfs-backends gvfs-fuse gvfs-backends gvfs-fuse

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

@@ -6,7 +6,7 @@ debian-reference-en dillo
raspberrypi-net-mods raspberrypi-ui-mods raspberrypi-net-mods raspberrypi-ui-mods
python3-pip python3-pip
python3-numpy python3-numpy
alacarte rc-gui sense-hat rc-gui sense-hat
tree tree
libgl1-mesa-dri libgles1 libgles2-mesa xcompmgr libgl1-mesa-dri libgles1 libgles2-mesa xcompmgr
geany geany

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,2 +1 @@
cups cups
system-config-printer

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 if [ "${USE_QEMU}" = "1" ]; then
export IMG_SUFFIX="${IMG_SUFFIX}-qemu" export IMG_SUFFIX="${IMG_SUFFIX}-qemu"
fi fi

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