Compare commits
25 Commits
v2025.4.29
...
showpiece
Author | SHA1 | Date | |
---|---|---|---|
3cba93baa6 | |||
4a1ae922b4 | |||
48414ac32f | |||
8cea745c7f | |||
34f00ea0ca | |||
30b2d9413e | |||
236bea7ae3 | |||
|
05a772481a | ||
|
26ea1c19ff | ||
|
bf7981f6a4 | ||
|
9f8fc6ff6e | ||
|
e9c2afbdac | ||
|
6e8dcbfd22 | ||
|
5dabc7dc94 | ||
|
f548f25325 | ||
|
49e1078c1b | ||
|
b9f63ee11b | ||
|
551c58880b | ||
|
79afc6e5e7 | ||
|
bcf2bc1d98 | ||
|
ca3d54e7e7 | ||
|
260c17db0e | ||
|
04880a5a0f | ||
|
2e5d13e1b9 | ||
|
f621f9e279 |
10
.github/workflows/build.yml
vendored
10
.github/workflows/build.yml
vendored
@ -13,7 +13,7 @@ jobs:
|
|||||||
build_images:
|
build_images:
|
||||||
name: Build images
|
name: Build images
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
timeout-minutes: 20
|
timeout-minutes: 120
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: true
|
fail-fast: true
|
||||||
env:
|
env:
|
||||||
@ -46,13 +46,17 @@ jobs:
|
|||||||
sudo mv deploy/*-arm64-standalone.img deploy/showpieceos-arm64-standalone.img &&
|
sudo mv deploy/*-arm64-standalone.img deploy/showpieceos-arm64-standalone.img &&
|
||||||
sudo mv deploy/*-arm64-client.img deploy/showpieceos-arm64-client.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
|
- name: Publish client
|
||||||
if: startsWith(github.ref, 'refs/tags/v')
|
if: startsWith(github.ref, 'refs/tags/v')
|
||||||
uses: https://github.com/softprops/action-gh-release@v2
|
uses: https://github.com/softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
tag_name: ${{ github.ref_name }}
|
tag_name: ${{ github.ref_name }}
|
||||||
name: ${{ github.ref_name }}
|
name: ${{ github.ref_name }}
|
||||||
files: deploy/*-client.img
|
files: deploy/*-client.img.gz
|
||||||
|
|
||||||
- name: Publish standalone
|
- name: Publish standalone
|
||||||
if: startsWith(github.ref, 'refs/tags/v')
|
if: startsWith(github.ref, 'refs/tags/v')
|
||||||
@ -60,5 +64,5 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
tag_name: ${{ github.ref_name }}
|
tag_name: ${{ github.ref_name }}
|
||||||
name: ${{ github.ref_name }}
|
name: ${{ github.ref_name }}
|
||||||
files: deploy/*-standalone.img
|
files: deploy/*-standalone.img.gz
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
1
build.sh
1
build.sh
@ -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
5
compress-images.sh
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
for img in "deploy/"*.img; do
|
||||||
|
gzip -4 -v -k "$img"
|
||||||
|
done
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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/"
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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"
|
|
@ -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/"
|
|
1
stage4/03-bookshelf/files/.gitignore
vendored
1
stage4/03-bookshelf/files/.gitignore
vendored
@ -1 +0,0 @@
|
|||||||
*.pdf
|
|
@ -1,2 +1 @@
|
|||||||
cups
|
cups
|
||||||
system-config-printer
|
|
||||||
|
6
stage4/98-default-wallpaper/00-run.sh
Executable file
6
stage4/98-default-wallpaper/00-run.sh
Executable 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
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
echo "Setting custom cmdline"
|
echo "Setting custom cmdline"
|
||||||
sed -i 's/$/ video=HDMI-A-1:1920x1080M@60/' "${ROOTFS_DIR}/boot/firmware/cmdline.txt"
|
sed -i 's/$/ video=HDMI-A-2:1920x1080M@60/' "${ROOTFS_DIR}/boot/firmware/cmdline.txt"
|
Loading…
x
Reference in New Issue
Block a user