From 053e275d9818613cdab37750b823ff2da7e539a8 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Wed, 31 Aug 2022 14:30:28 +0200 Subject: [PATCH 01/42] upgrade to pi4j 2.2.0 --- base/resources/java-deploy/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/resources/java-deploy/pom.xml b/base/resources/java-deploy/pom.xml index 3021f46..e127e82 100644 --- a/base/resources/java-deploy/pom.xml +++ b/base/resources/java-deploy/pom.xml @@ -11,7 +11,7 @@ - 2.1.1 + 2.2.0 1.7.32 From bb5c65956089c590425c88688dbb2e63d40cc589 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Wed, 31 Aug 2022 15:08:46 +0200 Subject: [PATCH 02/42] upgrade to RaspiOS --- crowpi.pkr.hcl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crowpi.pkr.hcl b/crowpi.pkr.hcl index 0dc08bd..b629f15 100644 --- a/crowpi.pkr.hcl +++ b/crowpi.pkr.hcl @@ -1,9 +1,9 @@ source "arm" "raspios" { # Raspberry Pi OS with Desktop file_urls = [ - "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip" + "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-04-07/2022-04-04-raspios-bullseye-arm64.img.xz" ] - file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip.sha256" + file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-04-07/2022-04-04-raspios-bullseye-arm64.img.xz.sha256" file_checksum_type = "sha256" file_target_extension = "zip" From 4de873af70f13a917e6bfd4628cd5159a38b6f71 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Wed, 31 Aug 2022 15:12:45 +0200 Subject: [PATCH 03/42] upgrade to RaspiOS --- crowpi.pkr.hcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crowpi.pkr.hcl b/crowpi.pkr.hcl index b629f15..37d81ec 100644 --- a/crowpi.pkr.hcl +++ b/crowpi.pkr.hcl @@ -5,7 +5,7 @@ source "arm" "raspios" { ] file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-04-07/2022-04-04-raspios-bullseye-arm64.img.xz.sha256" file_checksum_type = "sha256" - file_target_extension = "zip" + file_target_extension = "xz" # Image Options image_build_method = "resize" From e0fd055e7fd53303d311d7e07defc9418aaf28ab Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Wed, 31 Aug 2022 15:56:31 +0200 Subject: [PATCH 04/42] rollback RaspiOS --- crowpi.pkr.hcl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crowpi.pkr.hcl b/crowpi.pkr.hcl index 37d81ec..0dc08bd 100644 --- a/crowpi.pkr.hcl +++ b/crowpi.pkr.hcl @@ -1,11 +1,11 @@ source "arm" "raspios" { # Raspberry Pi OS with Desktop file_urls = [ - "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-04-07/2022-04-04-raspios-bullseye-arm64.img.xz" + "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip" ] - file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-04-07/2022-04-04-raspios-bullseye-arm64.img.xz.sha256" + file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip.sha256" file_checksum_type = "sha256" - file_target_extension = "xz" + file_target_extension = "zip" # Image Options image_build_method = "resize" From 631f51de74b62d11b8ee7b8469fb481fa93b452a Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Wed, 31 Aug 2022 16:24:42 +0200 Subject: [PATCH 05/42] next try to update RaspiOS --- crowpi.pkr.hcl | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/crowpi.pkr.hcl b/crowpi.pkr.hcl index 0dc08bd..e821737 100644 --- a/crowpi.pkr.hcl +++ b/crowpi.pkr.hcl @@ -1,11 +1,12 @@ source "arm" "raspios" { # Raspberry Pi OS with Desktop file_urls = [ - "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip" + "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-04-07/2022-04-04-raspios-bullseye-arm64.img.xz" ] - file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip.sha256" + file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-04-07/2022-04-04-raspios-bullseye-arm64.img.xz.sha256" file_checksum_type = "sha256" - file_target_extension = "zip" + file_target_extension = "xz" + file_unarchive_cmd = ["xz", "--decompress", "$ARCHIVE_PATH"] # Image Options image_build_method = "resize" From 30ab0cd0ded56777462193e4e09d917abc4c9031 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Thu, 1 Sep 2022 12:10:11 +0200 Subject: [PATCH 06/42] given up to update RaspiOS there seems to be a problem with Wallpaper --- crowpi.pkr.hcl | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/crowpi.pkr.hcl b/crowpi.pkr.hcl index e821737..570e0e9 100644 --- a/crowpi.pkr.hcl +++ b/crowpi.pkr.hcl @@ -1,12 +1,20 @@ source "arm" "raspios" { # Raspberry Pi OS with Desktop - file_urls = [ - "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-04-07/2022-04-04-raspios-bullseye-arm64.img.xz" - ] - file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-04-07/2022-04-04-raspios-bullseye-arm64.img.xz.sha256" - file_checksum_type = "sha256" - file_target_extension = "xz" - file_unarchive_cmd = ["xz", "--decompress", "$ARCHIVE_PATH"] + file_urls = [ + "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip" + ] + file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip.sha256" + file_checksum_type = "sha256" + file_target_extension = "zip" + + + # file_urls = [ + # "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-04-07/2022-04-04-raspios-bullseye-arm64.img.xz" + # ] + # file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-04-07/2022-04-04-raspios-bullseye-arm64.img.xz.sha256" + # file_checksum_type = "sha256" + # file_target_extension = "xz" + # file_unarchive_cmd = ["xz", "--decompress", "$ARCHIVE_PATH"] # Image Options image_build_method = "resize" From a5cbb7364104f625f83b41a0d9861697a0832330 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Fri, 9 Jun 2023 15:00:37 +0200 Subject: [PATCH 07/42] some upgrades use sdkman for java-installation --- base/base.sh | 8 ++++++-- crowpi.pkr.hcl | 26 +++++++++++++------------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/base/base.sh b/base/base.sh index cdf09ba..9a954e0 100644 --- a/base/base.sh +++ b/base/base.sh @@ -2,7 +2,8 @@ set -euxo pipefail # Script configuration -declare -gr GLUON_JAVAFX_VERSION="18.0.2" +declare -gr JDK="17.0.7-tem" +declare -gr GLUON_JAVAFX_VERSION="20.0.1" declare -gr GLUON_JAVAFX_URL="https://download2.gluonhq.com/openjfx/${GLUON_JAVAFX_VERSION}/openjfx-${GLUON_JAVAFX_VERSION}_monocle-linux-aarch64_bin-sdk.zip" declare -gr GLUON_JAVAFX_PATH="/opt/javafx-sdk" declare -gr GLUON_JAVAFX_VERSION_PATH="/opt/javafx-sdk-${GLUON_JAVAFX_VERSION}" @@ -39,10 +40,13 @@ apt-get -y install \ libdrm-dev \ lirc \ maven \ - openjdk-17-jdk \ zip rm -rf /var/lib/apt/lists/* +curl -s "https://get.sdkman.io" | bash +sdk install java "${JDK}" + + # Download and extract Gluon JavaFX wget -O /tmp/gluon-javafx.zip "${GLUON_JAVAFX_URL}" rm -rf "${GLUON_JAVAFX_VERSION_PATH}" diff --git a/crowpi.pkr.hcl b/crowpi.pkr.hcl index 570e0e9..abbd848 100644 --- a/crowpi.pkr.hcl +++ b/crowpi.pkr.hcl @@ -1,20 +1,20 @@ source "arm" "raspios" { # Raspberry Pi OS with Desktop - file_urls = [ - "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip" - ] - file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip.sha256" - file_checksum_type = "sha256" - file_target_extension = "zip" +# file_urls = [ +# "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip" +# ] +# file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip.sha256" +# file_checksum_type = "sha256" +# file_target_extension = "zip" - # file_urls = [ - # "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-04-07/2022-04-04-raspios-bullseye-arm64.img.xz" - # ] - # file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-04-07/2022-04-04-raspios-bullseye-arm64.img.xz.sha256" - # file_checksum_type = "sha256" - # file_target_extension = "xz" - # file_unarchive_cmd = ["xz", "--decompress", "$ARCHIVE_PATH"] + file_urls = [ + "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2023-05-03/2023-05-03-raspios-bullseye-arm64.img.xz" + ] + file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2023-05-03/2023-05-03-raspios-bullseye-arm64.img.xz.sha256" + file_checksum_type = "sha256" + file_target_extension = "xz" + file_unarchive_cmd = ["xz", "--decompress", "$ARCHIVE_PATH"] # Image Options image_build_method = "resize" From 64d1de8667bd12ff9458edff5e727fc92190a796 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Fri, 9 Jun 2023 15:05:16 +0200 Subject: [PATCH 08/42] upgrade pi4j 2.3.0 --- base/resources/java-deploy/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/resources/java-deploy/pom.xml b/base/resources/java-deploy/pom.xml index e127e82..758da36 100644 --- a/base/resources/java-deploy/pom.xml +++ b/base/resources/java-deploy/pom.xml @@ -11,7 +11,7 @@ - 2.2.0 + 2.3.0 1.7.32 From 6a0da8b1bd8272be74ec8b8aabccb6aa6d81bdfa Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Fri, 9 Jun 2023 15:18:51 +0200 Subject: [PATCH 09/42] sdkman install --- base/base.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/base/base.sh b/base/base.sh index 9a954e0..5b2382b 100644 --- a/base/base.sh +++ b/base/base.sh @@ -44,6 +44,7 @@ apt-get -y install \ rm -rf /var/lib/apt/lists/* curl -s "https://get.sdkman.io" | bash +source "$HOME/.sdkman/bin/sdkman-init.sh" sdk install java "${JDK}" From bff8dceba6d9263f8811510b37dff66b919042cd Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Fri, 9 Jun 2023 15:35:24 +0200 Subject: [PATCH 10/42] sdkman install --- base/base.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/base.sh b/base/base.sh index 5b2382b..a9a0e93 100644 --- a/base/base.sh +++ b/base/base.sh @@ -44,7 +44,7 @@ apt-get -y install \ rm -rf /var/lib/apt/lists/* curl -s "https://get.sdkman.io" | bash -source "$HOME/.sdkman/bin/sdkman-init.sh" +source "/root/.sdkman/bin/sdkman-init.sh" sdk install java "${JDK}" From f899427f2c4879122a1e635c1f3fc6ece9b1f1be Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Fri, 9 Jun 2023 15:58:28 +0200 Subject: [PATCH 11/42] sdkman install --- base/base.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/base/base.sh b/base/base.sh index a9a0e93..23f0c4b 100644 --- a/base/base.sh +++ b/base/base.sh @@ -43,8 +43,8 @@ apt-get -y install \ zip rm -rf /var/lib/apt/lists/* -curl -s "https://get.sdkman.io" | bash -source "/root/.sdkman/bin/sdkman-init.sh" +export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash +source "/usr/local/sdkman/bin/sdkman-init.sh" sdk install java "${JDK}" From c640927942fc183176c19b5cfb86764660c709c3 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Fri, 9 Jun 2023 17:13:08 +0200 Subject: [PATCH 12/42] sdkman install --- base/base.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/base/base.sh b/base/base.sh index 23f0c4b..c32f9d0 100644 --- a/base/base.sh +++ b/base/base.sh @@ -43,9 +43,7 @@ apt-get -y install \ zip rm -rf /var/lib/apt/lists/* -export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash -source "/usr/local/sdkman/bin/sdkman-init.sh" -sdk install java "${JDK}" +export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash && source "/usr/local/sdkman/bin/sdkman-init.sh" && sdk install java "${JDK}" # Download and extract Gluon JavaFX From 3c6c32bb69597b3b13e023704ae175e598b56f17 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Fri, 9 Jun 2023 17:30:56 +0200 Subject: [PATCH 13/42] sdkman install --- base/base.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/base/base.sh b/base/base.sh index c32f9d0..e7c8179 100644 --- a/base/base.sh +++ b/base/base.sh @@ -43,7 +43,8 @@ apt-get -y install \ zip rm -rf /var/lib/apt/lists/* -export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash && source "/usr/local/sdkman/bin/sdkman-init.sh" && sdk install java "${JDK}" +export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash +source "/usr/local/sdkman/bin/sdkman-init.sh" | bash && sdk install java "${JDK}" # Download and extract Gluon JavaFX From 4cc2dea7ff605807f09bc07d957b15e0b2c19bbd Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Fri, 9 Jun 2023 17:43:36 +0200 Subject: [PATCH 14/42] given up to use sdkman --- base/base.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/base/base.sh b/base/base.sh index e7c8179..b623c81 100644 --- a/base/base.sh +++ b/base/base.sh @@ -40,11 +40,13 @@ apt-get -y install \ libdrm-dev \ lirc \ maven \ - zip + zip \ + openjdk-17-jdk rm -rf /var/lib/apt/lists/* -export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash -source "/usr/local/sdkman/bin/sdkman-init.sh" | bash && sdk install java "${JDK}" +# export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash +# source "/usr/local/sdkman/bin/sdkman-init.sh" +# sdk install java "${JDK}" # Download and extract Gluon JavaFX From 6346e5a73a1dffe265704c4ba7710a3a4eafe7f8 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Fri, 9 Jun 2023 18:38:14 +0200 Subject: [PATCH 15/42] pi4j wallpaper disabled --- base/base.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/base/base.sh b/base/base.sh index b623c81..41ce04b 100644 --- a/base/base.sh +++ b/base/base.sh @@ -91,8 +91,8 @@ sed -i 's/wallpaper_mode=.*/wallpaper_mode=stretch/g' /etc/xdg/pcmanfm/LXDE-pi/d sudo -u pi install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-autostart.desktop /home/pi/.config/autostart/pi4j-os-wallpaper.desktop sudo -u pi install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-systemd.service /home/pi/.config/systemd/user/pi4j-os-wallpaper.service sudo -u pi install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-systemd.path /home/pi/.config/systemd/user/pi4j-os-wallpaper.path -install -Dm 0755 /tmp/res-base/wallpaper/wallpaper-hook.sh /lib/dhcpcd/dhcpcd-hooks/99-pi4j-os -install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-static.jpg /opt/pi4j-os/wallpaper-static.jpg +#install -Dm 0755 /tmp/res-base/wallpaper/wallpaper-hook.sh /lib/dhcpcd/dhcpcd-hooks/99-pi4j-os +#install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-static.jpg /opt/pi4j-os/wallpaper-static.jpg # Deploy java-kiosk helper script for JavaFX apps sudo install -Dm 0755 /tmp/res-base/java/java-kiosk.py /usr/local/bin/java-kiosk From e767d080c6a937b7c63409096a9d59edd5b31ac4 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Sat, 10 Jun 2023 11:48:55 +0200 Subject: [PATCH 16/42] pi4j wallpaper disabled --- base/base.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/base/base.sh b/base/base.sh index 41ce04b..89e579f 100644 --- a/base/base.sh +++ b/base/base.sh @@ -84,13 +84,13 @@ cp /usr/share/raspi-config/10-blanking.conf /etc/X11/xorg.conf.d/ rm /usr/share/rpd-wallpaper/*.jpg # Override system-wide default wallpaper -sed -i 's/wallpaper=.*/wallpaper=\/opt\/pi4j-os\/wallpaper-static.jpg/g' /etc/xdg/pcmanfm/LXDE-pi/desktop-items-*.conf -sed -i 's/wallpaper_mode=.*/wallpaper_mode=stretch/g' /etc/xdg/pcmanfm/LXDE-pi/desktop-items-*.conf +# sed -i 's/wallpaper=.*/wallpaper=\/opt\/pi4j-os\/wallpaper-static.jpg/g' /etc/xdg/pcmanfm/LXDE-pi/desktop-items-*.conf +# sed -i 's/wallpaper_mode=.*/wallpaper_mode=stretch/g' /etc/xdg/pcmanfm/LXDE-pi/desktop-items-*.conf # Deploy dynamic wallpaper script and resources -sudo -u pi install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-autostart.desktop /home/pi/.config/autostart/pi4j-os-wallpaper.desktop -sudo -u pi install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-systemd.service /home/pi/.config/systemd/user/pi4j-os-wallpaper.service -sudo -u pi install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-systemd.path /home/pi/.config/systemd/user/pi4j-os-wallpaper.path +# sudo -u pi install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-autostart.desktop /home/pi/.config/autostart/pi4j-os-wallpaper.desktop +# sudo -u pi install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-systemd.service /home/pi/.config/systemd/user/pi4j-os-wallpaper.service +# sudo -u pi install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-systemd.path /home/pi/.config/systemd/user/pi4j-os-wallpaper.path #install -Dm 0755 /tmp/res-base/wallpaper/wallpaper-hook.sh /lib/dhcpcd/dhcpcd-hooks/99-pi4j-os #install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-static.jpg /opt/pi4j-os/wallpaper-static.jpg From b3771ad53cc2ae5ffcb03f23700194e4dc487848 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Sat, 10 Jun 2023 12:38:39 +0200 Subject: [PATCH 17/42] pi4j wallpaper disabled --- base/base.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/base/base.sh b/base/base.sh index 89e579f..664aaab 100644 --- a/base/base.sh +++ b/base/base.sh @@ -74,14 +74,14 @@ install -Dm 0644 /tmp/res-base/system/pi4j-update-mime-db.service /etc/systemd/s systemctl enable pi4j-update-mime-db.service # Disable getting started wizard -rm /etc/xdg/autostart/piwiz.desktop +#rm /etc/xdg/autostart/piwiz.desktop # Disable screen blanking by default mkdir -p /etc/X11/xorg.conf.d/ cp /usr/share/raspi-config/10-blanking.conf /etc/X11/xorg.conf.d/ # Remove default backgrounds -rm /usr/share/rpd-wallpaper/*.jpg +#rm /usr/share/rpd-wallpaper/*.jpg # Override system-wide default wallpaper # sed -i 's/wallpaper=.*/wallpaper=\/opt\/pi4j-os\/wallpaper-static.jpg/g' /etc/xdg/pcmanfm/LXDE-pi/desktop-items-*.conf From 5c3610c134ad2d9774c92d02d67f601e5a38be25 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Sat, 10 Jun 2023 13:38:06 +0200 Subject: [PATCH 18/42] add a default user --- base/base.sh | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/base/base.sh b/base/base.sh index 664aaab..2108e79 100644 --- a/base/base.sh +++ b/base/base.sh @@ -1,4 +1,11 @@ #!/bin/bash +declare username=pi +declare password=crowpi +adduser --gecos "" --disabled-password $username +chpasswd <<<"$username:$password" +sudo -i -u "$username" + + set -euxo pipefail # Script configuration @@ -74,25 +81,25 @@ install -Dm 0644 /tmp/res-base/system/pi4j-update-mime-db.service /etc/systemd/s systemctl enable pi4j-update-mime-db.service # Disable getting started wizard -#rm /etc/xdg/autostart/piwiz.desktop +rm /etc/xdg/autostart/piwiz.desktop # Disable screen blanking by default mkdir -p /etc/X11/xorg.conf.d/ cp /usr/share/raspi-config/10-blanking.conf /etc/X11/xorg.conf.d/ # Remove default backgrounds -#rm /usr/share/rpd-wallpaper/*.jpg +rm /usr/share/rpd-wallpaper/*.jpg # Override system-wide default wallpaper -# sed -i 's/wallpaper=.*/wallpaper=\/opt\/pi4j-os\/wallpaper-static.jpg/g' /etc/xdg/pcmanfm/LXDE-pi/desktop-items-*.conf -# sed -i 's/wallpaper_mode=.*/wallpaper_mode=stretch/g' /etc/xdg/pcmanfm/LXDE-pi/desktop-items-*.conf +sed -i 's/wallpaper=.*/wallpaper=\/opt\/pi4j-os\/wallpaper-static.jpg/g' /etc/xdg/pcmanfm/LXDE-pi/desktop-items-*.conf +sed -i 's/wallpaper_mode=.*/wallpaper_mode=stretch/g' /etc/xdg/pcmanfm/LXDE-pi/desktop-items-*.conf # Deploy dynamic wallpaper script and resources -# sudo -u pi install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-autostart.desktop /home/pi/.config/autostart/pi4j-os-wallpaper.desktop -# sudo -u pi install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-systemd.service /home/pi/.config/systemd/user/pi4j-os-wallpaper.service -# sudo -u pi install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-systemd.path /home/pi/.config/systemd/user/pi4j-os-wallpaper.path -#install -Dm 0755 /tmp/res-base/wallpaper/wallpaper-hook.sh /lib/dhcpcd/dhcpcd-hooks/99-pi4j-os -#install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-static.jpg /opt/pi4j-os/wallpaper-static.jpg +sudo -u pi install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-autostart.desktop /home/pi/.config/autostart/pi4j-os-wallpaper.desktop +sudo -u pi install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-systemd.service /home/pi/.config/systemd/user/pi4j-os-wallpaper.service +sudo -u pi install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-systemd.path /home/pi/.config/systemd/user/pi4j-os-wallpaper.path +install -Dm 0755 /tmp/res-base/wallpaper/wallpaper-hook.sh /lib/dhcpcd/dhcpcd-hooks/99-pi4j-os +install -Dm 0644 /tmp/res-base/wallpaper/wallpaper-static.jpg /opt/pi4j-os/wallpaper-static.jpg # Deploy java-kiosk helper script for JavaFX apps sudo install -Dm 0755 /tmp/res-base/java/java-kiosk.py /usr/local/bin/java-kiosk From 3bf7edb3a1f326d83f955b3ec542132e1e62d750 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Sat, 10 Jun 2023 14:18:26 +0200 Subject: [PATCH 19/42] add a default user --- base/base.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/base/base.sh b/base/base.sh index 2108e79..e085887 100644 --- a/base/base.sh +++ b/base/base.sh @@ -51,9 +51,9 @@ apt-get -y install \ openjdk-17-jdk rm -rf /var/lib/apt/lists/* -# export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash -# source "/usr/local/sdkman/bin/sdkman-init.sh" -# sdk install java "${JDK}" +export curl -s "https://get.sdkman.io" | bash +source "$HOME/sdkman/bin/sdkman-init.sh" +sdk install java "${JDK}" # Download and extract Gluon JavaFX From 5750fb71cfa0d3ca0f0dc5a79f956dc58699c48d Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Sat, 10 Jun 2023 14:49:21 +0200 Subject: [PATCH 20/42] add a default user --- base/base.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/base.sh b/base/base.sh index e085887..6618c52 100644 --- a/base/base.sh +++ b/base/base.sh @@ -51,7 +51,7 @@ apt-get -y install \ openjdk-17-jdk rm -rf /var/lib/apt/lists/* -export curl -s "https://get.sdkman.io" | bash +curl -s "https://get.sdkman.io" | bash source "$HOME/sdkman/bin/sdkman-init.sh" sdk install java "${JDK}" From e1cbe55676f2d369601f05dba95066ecb5393f9a Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Sat, 10 Jun 2023 15:16:50 +0200 Subject: [PATCH 21/42] add a default user --- base/base.sh | 5 ++++- base/resources/java-deploy/pom.xml | 2 -- base/resources/java/java-kiosk.py | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/base/base.sh b/base/base.sh index 6618c52..e2dc0cd 100644 --- a/base/base.sh +++ b/base/base.sh @@ -51,8 +51,11 @@ apt-get -y install \ openjdk-17-jdk rm -rf /var/lib/apt/lists/* +whoami +sudo -i -u "$username" +whoami curl -s "https://get.sdkman.io" | bash -source "$HOME/sdkman/bin/sdkman-init.sh" +source "$HOME/.sdkman/bin/sdkman-init.sh" sdk install java "${JDK}" diff --git a/base/resources/java-deploy/pom.xml b/base/resources/java-deploy/pom.xml index 758da36..889f23a 100644 --- a/base/resources/java-deploy/pom.xml +++ b/base/resources/java-deploy/pom.xml @@ -12,9 +12,7 @@ 2.3.0 - 1.7.32 - 3.2.0 diff --git a/base/resources/java/java-kiosk.py b/base/resources/java/java-kiosk.py index 3bb466c..a890cee 100644 --- a/base/resources/java/java-kiosk.py +++ b/base/resources/java/java-kiosk.py @@ -55,7 +55,7 @@ def run(self): finally: # Switch back to runlevel 5 to start X11 self._logger.debug('Switching back to runlevel 5 to start X11...') - self._popen([SYSTEM_INIT_BIN, '5']).wait() + self._run_process([SYSTEM_INIT_BIN, '5']).wait() # All done! self._logger.debug('java-kiosk has completed and will now exit') From f66752502dc8cb69aab9f8a182db286fb2b9fd2d Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Sat, 10 Jun 2023 15:40:16 +0200 Subject: [PATCH 22/42] add a default user --- base/base.sh | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/base/base.sh b/base/base.sh index e2dc0cd..0020153 100644 --- a/base/base.sh +++ b/base/base.sh @@ -3,8 +3,6 @@ declare username=pi declare password=crowpi adduser --gecos "" --disabled-password $username chpasswd <<<"$username:$password" -sudo -i -u "$username" - set -euxo pipefail @@ -51,12 +49,9 @@ apt-get -y install \ openjdk-17-jdk rm -rf /var/lib/apt/lists/* -whoami -sudo -i -u "$username" -whoami -curl -s "https://get.sdkman.io" | bash -source "$HOME/.sdkman/bin/sdkman-init.sh" -sdk install java "${JDK}" +su -c "curl -s "https://get.sdkman.io" | bash" -p $username +su -c "source /home/${username}/.sdkman/bin/sdkman-init.sh" -p $username +su -c "sdk install java ${username}" # Download and extract Gluon JavaFX From d1e389751551230813a2fb2a35578410e19b5441 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Sat, 10 Jun 2023 16:07:57 +0200 Subject: [PATCH 23/42] add a default user --- base/base.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/base/base.sh b/base/base.sh index 0020153..c834614 100644 --- a/base/base.sh +++ b/base/base.sh @@ -4,6 +4,9 @@ declare password=crowpi adduser --gecos "" --disabled-password $username chpasswd <<<"$username:$password" +sudo -i -u "${username}" +whoami + set -euxo pipefail # Script configuration @@ -49,9 +52,9 @@ apt-get -y install \ openjdk-17-jdk rm -rf /var/lib/apt/lists/* -su -c "curl -s "https://get.sdkman.io" | bash" -p $username -su -c "source /home/${username}/.sdkman/bin/sdkman-init.sh" -p $username -su -c "sdk install java ${username}" +curl -s "https://get.sdkman.io" | bash +source "/home/${username}/.sdkman/bin/sdkman-init.sh" +sdk install java "${JDK}" # Download and extract Gluon JavaFX From 9238674504c5280565d527a50edfab2db463fc0f Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Sat, 10 Jun 2023 16:23:12 +0200 Subject: [PATCH 24/42] add a default user --- base/base.sh | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/base/base.sh b/base/base.sh index c834614..0837f60 100644 --- a/base/base.sh +++ b/base/base.sh @@ -4,9 +4,6 @@ declare password=crowpi adduser --gecos "" --disabled-password $username chpasswd <<<"$username:$password" -sudo -i -u "${username}" -whoami - set -euxo pipefail # Script configuration @@ -53,7 +50,7 @@ apt-get -y install \ rm -rf /var/lib/apt/lists/* curl -s "https://get.sdkman.io" | bash -source "/home/${username}/.sdkman/bin/sdkman-init.sh" +source "${HOME}/.sdkman/bin/sdkman-init.sh" sdk install java "${JDK}" From 5b3027f82253764fde71937010204b5c8e731687 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Sat, 10 Jun 2023 16:40:15 +0200 Subject: [PATCH 25/42] switch back to older RaspiOS --- base/base.sh | 8 ++++---- crowpi.pkr.hcl | 26 +++++++++++++------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/base/base.sh b/base/base.sh index 0837f60..63a42f8 100644 --- a/base/base.sh +++ b/base/base.sh @@ -1,8 +1,8 @@ #!/bin/bash -declare username=pi -declare password=crowpi -adduser --gecos "" --disabled-password $username -chpasswd <<<"$username:$password" +#declare username=pi +#declare password=crowpi +#adduser --gecos "" --disabled-password $username +#chpasswd <<<"$username:$password" set -euxo pipefail diff --git a/crowpi.pkr.hcl b/crowpi.pkr.hcl index abbd848..7414fb6 100644 --- a/crowpi.pkr.hcl +++ b/crowpi.pkr.hcl @@ -1,20 +1,20 @@ source "arm" "raspios" { # Raspberry Pi OS with Desktop -# file_urls = [ -# "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip" -# ] -# file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip.sha256" -# file_checksum_type = "sha256" -# file_target_extension = "zip" + file_urls = [ + "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip" + ] + file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip.sha256" + file_checksum_type = "sha256" + file_target_extension = "zip" - file_urls = [ - "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2023-05-03/2023-05-03-raspios-bullseye-arm64.img.xz" - ] - file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2023-05-03/2023-05-03-raspios-bullseye-arm64.img.xz.sha256" - file_checksum_type = "sha256" - file_target_extension = "xz" - file_unarchive_cmd = ["xz", "--decompress", "$ARCHIVE_PATH"] + # file_urls = [ + # "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2023-05-03/2023-05-03-raspios-bullseye-arm64.img.xz" + # ] + # file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2023-05-03/2023-05-03-raspios-bullseye-arm64.img.xz.sha256" + # file_checksum_type = "sha256" + # file_target_extension = "xz" + # file_unarchive_cmd = ["xz", "--decompress", "$ARCHIVE_PATH"] # Image Options image_build_method = "resize" From ed8e5e610fbae3dde19012da57c3873ec21a63cd Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Sat, 10 Jun 2023 17:07:25 +0200 Subject: [PATCH 26/42] wip --- base/base.sh | 14 +++++++------- crowpi.pkr.hcl | 26 +++++++++++++------------- picade.pkr.hcl | 15 ++++++++++++--- 3 files changed, 32 insertions(+), 23 deletions(-) diff --git a/base/base.sh b/base/base.sh index 63a42f8..23ce340 100644 --- a/base/base.sh +++ b/base/base.sh @@ -1,8 +1,8 @@ #!/bin/bash -#declare username=pi -#declare password=crowpi -#adduser --gecos "" --disabled-password $username -#chpasswd <<<"$username:$password" +declare username=pi +declare password=crowpi +adduser --gecos "" --disabled-password $username +chpasswd <<<"$username:$password" set -euxo pipefail @@ -49,9 +49,9 @@ apt-get -y install \ openjdk-17-jdk rm -rf /var/lib/apt/lists/* -curl -s "https://get.sdkman.io" | bash -source "${HOME}/.sdkman/bin/sdkman-init.sh" -sdk install java "${JDK}" +#curl -s "https://get.sdkman.io" | bash +#source "${HOME}/.sdkman/bin/sdkman-init.sh" +#sdk install java "${JDK}" # Download and extract Gluon JavaFX diff --git a/crowpi.pkr.hcl b/crowpi.pkr.hcl index 7414fb6..84c12b3 100644 --- a/crowpi.pkr.hcl +++ b/crowpi.pkr.hcl @@ -1,20 +1,20 @@ source "arm" "raspios" { # Raspberry Pi OS with Desktop - file_urls = [ - "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip" - ] - file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip.sha256" - file_checksum_type = "sha256" - file_target_extension = "zip" + # file_urls = [ + # "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip" + # ] + # file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip.sha256" + # file_checksum_type = "sha256" + # file_target_extension = "zip" - # file_urls = [ - # "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2023-05-03/2023-05-03-raspios-bullseye-arm64.img.xz" - # ] - # file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2023-05-03/2023-05-03-raspios-bullseye-arm64.img.xz.sha256" - # file_checksum_type = "sha256" - # file_target_extension = "xz" - # file_unarchive_cmd = ["xz", "--decompress", "$ARCHIVE_PATH"] + file_urls = [ + "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2023-05-03/2023-05-03-raspios-bullseye-arm64.img.xz" + ] + file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2023-05-03/2023-05-03-raspios-bullseye-arm64.img.xz.sha256" + file_checksum_type = "sha256" + file_target_extension = "xz" + file_unarchive_cmd = ["xz", "--decompress", "$ARCHIVE_PATH"] # Image Options image_build_method = "resize" diff --git a/picade.pkr.hcl b/picade.pkr.hcl index 46c53a6..7633505 100644 --- a/picade.pkr.hcl +++ b/picade.pkr.hcl @@ -1,11 +1,20 @@ source "arm" "raspios" { # Raspberry Pi OS with Desktop + # file_urls = [ + # "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip" + # ] + # file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip.sha256" + # file_checksum_type = "sha256" + # file_target_extension = "zip" + + file_urls = [ - "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip" + "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2023-05-03/2023-05-03-raspios-bullseye-arm64.img.xz" ] - file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip.sha256" + file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2023-05-03/2023-05-03-raspios-bullseye-arm64.img.xz.sha256" file_checksum_type = "sha256" - file_target_extension = "zip" + file_target_extension = "xz" + file_unarchive_cmd = ["xz", "--decompress", "$ARCHIVE_PATH"] # Image Options image_build_method = "resize" From a64748e33e5f52d23dc7fa33c722aa26727e08cb Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Sat, 10 Jun 2023 18:07:00 +0200 Subject: [PATCH 27/42] java-kiosk small fix --- base/resources/java/java-kiosk.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/resources/java/java-kiosk.py b/base/resources/java/java-kiosk.py index a890cee..5adf71f 100644 --- a/base/resources/java/java-kiosk.py +++ b/base/resources/java/java-kiosk.py @@ -55,7 +55,7 @@ def run(self): finally: # Switch back to runlevel 5 to start X11 self._logger.debug('Switching back to runlevel 5 to start X11...') - self._run_process([SYSTEM_INIT_BIN, '5']).wait() + self._popen([SYSTEM_INIT_BIN, '5']) # All done! self._logger.debug('java-kiosk has completed and will now exit') From 66c33446fe09b63a5efb732ab4219e320e8c2fcf Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Sun, 11 Jun 2023 13:06:07 +0200 Subject: [PATCH 28/42] added a new image type: Pi4J-Basic-OS renamed the other images --- .github/workflows/pi4j-os.yml | 1 + README.adoc | 2 +- basic.pkr.hcl | 81 ++++++++++++++++++++++++++++++ basic/basic.sh | 16 ++++++ basic/resources/system/asound.conf | 9 ++++ basic/resources/system/config.txt | 16 ++++++ crowpi.pkr.hcl | 8 +-- picade.pkr.hcl | 17 ++----- 8 files changed, 132 insertions(+), 18 deletions(-) create mode 100644 basic.pkr.hcl create mode 100644 basic/basic.sh create mode 100644 basic/resources/system/asound.conf create mode 100644 basic/resources/system/config.txt diff --git a/.github/workflows/pi4j-os.yml b/.github/workflows/pi4j-os.yml index 7f9d80d..89252f4 100644 --- a/.github/workflows/pi4j-os.yml +++ b/.github/workflows/pi4j-os.yml @@ -11,6 +11,7 @@ jobs: fail-fast: false matrix: flavor: + - basic - crowpi - picade steps: diff --git a/README.adoc b/README.adoc index 761f6f7..006155c 100644 --- a/README.adoc +++ b/README.adoc @@ -8,7 +8,7 @@ This project provides pre-built versions of custom OS images with all you need t * preconfigured locale (en_US), keyboard (US) and timezone (Europe/Zurich) * preconfigured wireless country (Switzerland) by default * remote management via `SSH` and `VNC` enabled by default -* preinstalled https://openjdk.java.net[OpenJDK 17] with latest https://gluonhq.com/products/javafx/[Gluon JavaFX 18] +* preinstalled https://openjdk.java.net[OpenJDK 17] with latest https://gluonhq.com/products/javafx/[Gluon JavaFX 20] * starter script to launch JavaFX-apps in DRM (aka kiosk-mode) * preconfigured `/boot/config.txt` supporting all components out of the box * dynamic wallpaper that shows Ethernet/WLAN address and hostname diff --git a/basic.pkr.hcl b/basic.pkr.hcl new file mode 100644 index 0000000..5e55406 --- /dev/null +++ b/basic.pkr.hcl @@ -0,0 +1,81 @@ +source "arm" "raspios" { + file_urls = [ + "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2023-05-03/2023-05-03-raspios-bullseye-arm64.img.xz" + ] + file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2023-05-03/2023-05-03-raspios-bullseye-arm64.img.xz.sha256" + file_checksum_type = "sha256" + file_target_extension = "xz" + file_unarchive_cmd = ["xz", "--decompress", "$ARCHIVE_PATH"] + + # Image Options + image_build_method = "resize" + image_path = "Pi4J-Basic-OS.img" + image_type = "dos" + image_size = "6G" + + # Boot Partition + image_partitions { + name = "boot" + type = "c" + start_sector = 8192 + filesystem = "vfat" + size = "256M" + mountpoint = "/boot" + } + + # System Partition + image_partitions { + name = "root" + type = "83" + start_sector = 532480 + filesystem = "ext4" + size = "0" + mountpoint = "/" + } + + # QEMU Toolchain + qemu_binary_source_path = "/usr/bin/qemu-aarch64-static" + qemu_binary_destination_path = "/usr/bin/qemu-aarch64-static" +} + +build { + sources = [ + "sources.arm.raspios" + ] + + provisioner "file" { + source = "./base/resources" + destination = "/tmp/res-base" + } + + provisioner "file" { + source = "./basic/resources" + destination = "/tmp/res-basic" + } + + provisioner "shell" { + script = "./base/base.sh" + } + + provisioner "shell" { + script = "./basic/basic.sh" + } + + post-processor "compress" { + output = "Pi4J-Basic-OS.img.zip" + compression_level = 6 + } + + post-processor "artifice" { + files = [ + "Pi4J-Basic-OS.img.zip" + ] + } + + post-processor "checksum" { + checksum_types = [ + "sha256" + ] + output = "Pi4J-Basic-OS.img.sha256" + } +} diff --git a/basic/basic.sh b/basic/basic.sh new file mode 100644 index 0000000..f7c51e0 --- /dev/null +++ b/basic/basic.sh @@ -0,0 +1,16 @@ +#!/bin/bash +set -euxo pipefail +IFS=$'\n\t' + +# Basic configuration +raspi-config nonint do_hostname crowpi + +# Change default account passwords +echo 'root:pi4J' | chpasswd +echo 'pi:pi4J' | chpasswd + +# Deploy system configuration via /boot/config.txt +install -Dm 0644 /tmp/res-basic/system/config.txt /boot/config.txt + +# Deploy audio configuration +sudo install -Dm 0644 /tmp/res-basic/system/asound.conf /root/.asoundrc \ No newline at end of file diff --git a/basic/resources/system/asound.conf b/basic/resources/system/asound.conf new file mode 100644 index 0000000..66ddb44 --- /dev/null +++ b/basic/resources/system/asound.conf @@ -0,0 +1,9 @@ +pcm.!default { +type hw +card 1 +} + +ctl.!default { +type hw +card 1 +} \ No newline at end of file diff --git a/basic/resources/system/config.txt b/basic/resources/system/config.txt new file mode 100644 index 0000000..c4c0eb9 --- /dev/null +++ b/basic/resources/system/config.txt @@ -0,0 +1,16 @@ +[all] +# Enable X with 128MB GPU memory and custom resolution +start_x=1 +gpu_mem=128 +hdmi_cvt 1024 600 60 6 0 0 0 + +# Enable I2C and SPI +dtparam=i2c_arm=on +dtparam=spi=on + +# Enable audio +dtparam=audio=on + +# Enable DRM VC4 V3D with up to 2 frame buffers +dtoverlay=vc4-fkms-v3d +max_framebuffers=2 diff --git a/crowpi.pkr.hcl b/crowpi.pkr.hcl index 84c12b3..d437794 100644 --- a/crowpi.pkr.hcl +++ b/crowpi.pkr.hcl @@ -18,7 +18,7 @@ source "arm" "raspios" { # Image Options image_build_method = "resize" - image_path = "crowpi.img" + image_path = "Pi4J-CrowPi-OS.img" image_type = "dos" image_size = "6G" @@ -71,13 +71,13 @@ build { } post-processor "compress" { - output = "crowpi.img.zip" + output = "Pi4J-CrowPi-OS.img.zip" compression_level = 6 } post-processor "artifice" { files = [ - "crowpi.img.zip" + "Pi4J-CrowPi-OS.img.zip" ] } @@ -85,6 +85,6 @@ build { checksum_types = [ "sha256" ] - output = "crowpi.img.sha256" + output = "Pi4J-CrowPi-OS.img.sha256" } } diff --git a/picade.pkr.hcl b/picade.pkr.hcl index 7633505..b1d3978 100644 --- a/picade.pkr.hcl +++ b/picade.pkr.hcl @@ -1,13 +1,4 @@ source "arm" "raspios" { - # Raspberry Pi OS with Desktop - # file_urls = [ - # "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip" - # ] - # file_checksum_url = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip.sha256" - # file_checksum_type = "sha256" - # file_target_extension = "zip" - - file_urls = [ "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2023-05-03/2023-05-03-raspios-bullseye-arm64.img.xz" ] @@ -18,7 +9,7 @@ source "arm" "raspios" { # Image Options image_build_method = "resize" - image_path = "picade.img" + image_path = "Pi4J-Picade-OS.img" image_type = "dos" image_size = "6G" @@ -71,13 +62,13 @@ build { } post-processor "compress" { - output = "picade.img.zip" + output = "Pi4J-Picade-OS.img.zip" compression_level = 6 } post-processor "artifice" { files = [ - "picade.img.zip" + "Pi4J-Picade-OS.img.zip" ] } @@ -85,6 +76,6 @@ build { checksum_types = [ "sha256" ] - output = "picade.img.sha256" + output = "Pi4J-Picade-OS.img.sha256" } } From 6f08ab4efbcde769b774c165905e79f9597eb1df Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Sun, 11 Jun 2023 13:43:12 +0200 Subject: [PATCH 29/42] update workflow and README --- .github/workflows/pi4j-os.yml | 8 ++-- README.adoc | 76 ++++++++++++++++------------------- basic/basic.sh | 4 +- 3 files changed, 41 insertions(+), 47 deletions(-) diff --git a/.github/workflows/pi4j-os.yml b/.github/workflows/pi4j-os.yml index 89252f4..dc3f0e8 100644 --- a/.github/workflows/pi4j-os.yml +++ b/.github/workflows/pi4j-os.yml @@ -46,8 +46,8 @@ jobs: if: steps.build.outcome == 'success' uses: actions/upload-artifact@v2 with: - name: ${{ matrix.flavor }}-image - path: ${{ matrix.flavor }}.img.zip + name: Pi4J-${{ matrix.flavor }}-OS-image + path: Pi4J-${{ matrix.flavor }}-OS.img.zip - name: Publish OS image to external repository if: >- @@ -59,8 +59,8 @@ jobs: RELEASE_VERSION: ${{ steps.env.outputs.RELEASE_VERSION }} run: | sshpass -e sftp -oBatchMode=no -oStrictHostKeyChecking=no -b - "${SFTP_USERNAME}@${SFTP_SERVER}" << EOS - put "${{ matrix.flavor }}.img.zip" "${{ matrix.flavor }}-${RELEASE_VERSION}.img.zip" - put "${{ matrix.flavor }}.img.sha256" "${{ matrix.flavor }}-${RELEASE_VERSION}.img.sha256" + put "Pi4J-${{ matrix.flavor }}-OS.img.zip" "Pi4J-${{ matrix.flavor }}-OS-${RELEASE_VERSION}.img.zip" + put "Pi4J-${{ matrix.flavor }}-OS.img.sha256" "Pi4J-${{ matrix.flavor }}-OS-${RELEASE_VERSION}.img.sha256" EOS update-download-readme: diff --git a/README.adoc b/README.adoc index 006155c..7743e48 100644 --- a/README.adoc +++ b/README.adoc @@ -3,12 +3,12 @@ image:https://img.shields.io/github/contributors/Pi4J/pi4j-os[Contributors,link=https://github.com/Pi4J/pi4j-os/graphs/contributors] image:https://img.shields.io/github/license/Pi4J/pi4j-os[License,link=https://github.com/Pi4J/pi4j-os/i/blob/main/LICENSE] -This project provides pre-built versions of custom OS images with all you need to develop 100% pure Java applications for specific Raspberry Pi setups. It is based on the latest official https://www.raspberrypi.org/software/[Raspberry Pi OS] and automatically built using Packer. By using these images, you will get: +This project provides pre-built versions of OS images with all you need to develop 100% pure Java applications for specific Raspberry Pi setups. They are based on the latest official https://www.raspberrypi.org/software/[Raspberry Pi OS] and are automatically built using Packer. By using these images, you will get: * preconfigured locale (en_US), keyboard (US) and timezone (Europe/Zurich) * preconfigured wireless country (Switzerland) by default * remote management via `SSH` and `VNC` enabled by default -* preinstalled https://openjdk.java.net[OpenJDK 17] with latest https://gluonhq.com/products/javafx/[Gluon JavaFX 20] +* preinstalled https://openjdk.java.net[OpenJDK 17] with latest https://gluonhq.com/products/javafx/[JavaFX 20] * starter script to launch JavaFX-apps in DRM (aka kiosk-mode) * preconfigured `/boot/config.txt` supporting all components out of the box * dynamic wallpaper that shows Ethernet/WLAN address and hostname @@ -25,35 +25,35 @@ The zip-compressed archives can be downloaded from https://pi4j-download.com[pi4 == Provided OS versions -=== CrowPi OS +=== Pi4J-Basis-OS +* support for building 100% pure Java applications using https://pi4j.com[Pi4J], https://openjfx.io[JavaFX] +* link:https://pi4j-download.com/latest.php?flavor=basic[download Latest Pi4J-Basic-OS Image] +* user account `pi`, password `pi4j` +* can be used for all kind of Pi4J- , JavaFX-, or FXGL-projects +* use https://github.com/Pi4J/pi4j-template-javafx[RaspiFX template project] to start your JavaFX/Pi4J or plain Pi4J project + +=== Pi4J-CrowPi-OS +* all of Pi4J-Basic-OS * support for https://www.elecrow.com/crowpi-compact-raspberry-pi-educational-kit.html[CrowPi] -* link:https://pi4j-download.com/latest.php?flavor=crowpi[Download Latest CrowPi Image] +* link:https://pi4j-download.com/latest.php?flavor=crowpi[download latest CrowPi Image] * user account `pi`, password `crowpi` -* can be used as a basis for all kind of Pi4J- , JavaFX-, or FXGL-projects * comes with `lirc` preinstalled to run the IR receiver component * use https://github.com/Pi4J/pi4j-example-crowpi[CrowPi template project] to start your CrowPi experiments -* use https://github.com/Pi4J/pi4j-template-javafx[RaspiFX template project] to start your JavaFX/Pi4J or plain Pi4J project -=== Picade OS +=== Pi4J-Picade-OS -* all of CrowPi OS +* all of Pi4J-Basic-OS * support for https://shop.pimoroni.com/products/picade-console[Picade Console] * link:https://pi4j-download.com/latest.php?flavor=picade[Download Picade Image] * user account `pi`, password `picade` * use link:[FXGL template project] to start your Picade project (available soon) -=== Game HAT OS (available soon) - -* all of CrowPi OS -* support for https://www.waveshare.com/wiki/Game_HAT[Game HAT] -* use link:[FXGL template project] to start your Game HAT project - == Community -Our OS images for Java are used here +Our OS images are used here * https://www.fhnw.ch/en/degree-programmes/engineering/computer-sciences[FHNW School of Engineering | Computer Science Bachelor] * _drop us a note if you want to be listed here_ @@ -86,37 +86,37 @@ image::assets/logo-gluon.png[Gluon, 300] * _your company is missed here_ -== Test the Pi4J-OS-Image +== Test the Pi4J OS-Images -The image contains two simple applications in directory `java-examples` and a sample file to test the audio channel. Start them via `ssh`. +The images contain two simple applications in directory `java-examples` and a sample file to test the audio channel. Start them via `ssh`. === Audio Test ----- +[source, shell] cd /home/pi nvlc Music/StarTrekTheme.mp3 ----- + === Pure JavaFX Application Compile the JavaFX application ----- +[source, shell] cd /home/pi/java-examples/pure-javafx javac --module-path /opt/javafx-sdk/lib --add-modules=javafx.controls,javafx.media hellofx/HelloFX.java ----- + To start `HelloFX` in DRM ----- - sudo java-kiosk hellofx.HelloFX ----- +[source, shell] +sudo java-kiosk hellofx.HelloFX + `java-kiosk` is a command provided by our image. It assures to call `java` with the correct (and huge) set of parameters. To start `HelloFX` in X11-Mode ----- +[source, shell] DISPLAY=:0 XAUTHORITY=/home/pi/.Xauthority sudo -E java --module-path /opt/javafx-sdk/lib --add-modules javafx.controls,javafx.media -Dglass.platform=gtk hellofx.HelloFX ----- + === Pure Pi4J Application @@ -129,23 +129,16 @@ Attach a button to `pin 25`. image::assets/pi4j-minimal.png[Button on Pin 25] Compile and start the Java application ----- +[source, shell] cd /home/pi/java-examples/pure-pi4j javac -cp "/home/pi/deploy/*:." hellopi4j/MinimalPi4J.java sudo java -cp "/home/pi/deploy/*:." hellopi4j.MinimalPi4J ----- - -== Test the Picade-Image -Apply all the tests for CrowPi-Image. +== Additional Test for Pi4J-Picade-OS Image The audio test should use the internal loudspeaker. -Attach a monitor for the JavaFX tests. - -=== Pure Picade Application - Check the mapping of the Picade buttons to JavaFX KeyCodes: |=== @@ -176,20 +169,21 @@ Check the mapping of the Picade buttons to JavaFX KeyCodes: Compile the JavaFX application ----- +[source, shell] cd /home/pi/java-examples/pure-picade javac --module-path /opt/javafx-sdk/lib --add-modules=javafx.controls,javafx.media hellopicade/HelloPicade.java ----- + To start `HelloPicade` in DRM ----- + +[source, shell] sudo java-kiosk hellopicade.HelloPicade ----- + To start `HelloPicade` in X11-Mode ----- +[source, shell] DISPLAY=:0 XAUTHORITY=/home/pi/.Xauthority sudo -E java --module-path /opt/javafx-sdk/lib --add-modules javafx.controls,javafx.media -Dglass.platform=gtk hellopicade.HelloPicade ----- + == LICENSE diff --git a/basic/basic.sh b/basic/basic.sh index f7c51e0..3020b3f 100644 --- a/basic/basic.sh +++ b/basic/basic.sh @@ -6,8 +6,8 @@ IFS=$'\n\t' raspi-config nonint do_hostname crowpi # Change default account passwords -echo 'root:pi4J' | chpasswd -echo 'pi:pi4J' | chpasswd +echo 'root:pi4j' | chpasswd +echo 'pi:pi4j' | chpasswd # Deploy system configuration via /boot/config.txt install -Dm 0644 /tmp/res-basic/system/config.txt /boot/config.txt From afa2bcdcb72b080548dfde8f957dd541bb533038 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Sun, 11 Jun 2023 14:05:13 +0200 Subject: [PATCH 30/42] adjust image names --- .github/workflows/pi4j-os.yml | 6 +++--- basic/basic.sh | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pi4j-os.yml b/.github/workflows/pi4j-os.yml index dc3f0e8..a866720 100644 --- a/.github/workflows/pi4j-os.yml +++ b/.github/workflows/pi4j-os.yml @@ -11,9 +11,9 @@ jobs: fail-fast: false matrix: flavor: - - basic - - crowpi - - picade + - Basic + - CrowPi + - Picade steps: - name: Checkout repository uses: actions/checkout@v2 diff --git a/basic/basic.sh b/basic/basic.sh index 3020b3f..a2d643d 100644 --- a/basic/basic.sh +++ b/basic/basic.sh @@ -3,7 +3,7 @@ set -euxo pipefail IFS=$'\n\t' # Basic configuration -raspi-config nonint do_hostname crowpi +raspi-config nonint do_hostname pi4j # Change default account passwords echo 'root:pi4j' | chpasswd From 20275af0fd26956dcbc217e14d30321015653981 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Sun, 11 Jun 2023 14:08:44 +0200 Subject: [PATCH 31/42] adjust image names --- basic.pkr.hcl => Basic.pkr.hcl | 0 crowpi.pkr.hcl => CrowPi.pkr.hcl | 0 picade.pkr.hcl => Picade.pkr.hcl | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename basic.pkr.hcl => Basic.pkr.hcl (100%) rename crowpi.pkr.hcl => CrowPi.pkr.hcl (100%) rename picade.pkr.hcl => Picade.pkr.hcl (100%) diff --git a/basic.pkr.hcl b/Basic.pkr.hcl similarity index 100% rename from basic.pkr.hcl rename to Basic.pkr.hcl diff --git a/crowpi.pkr.hcl b/CrowPi.pkr.hcl similarity index 100% rename from crowpi.pkr.hcl rename to CrowPi.pkr.hcl diff --git a/picade.pkr.hcl b/Picade.pkr.hcl similarity index 100% rename from picade.pkr.hcl rename to Picade.pkr.hcl From b97928dacf39b7051ccaf00b2f7db183ec837aa1 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Sun, 11 Jun 2023 14:40:26 +0200 Subject: [PATCH 32/42] upgraded deprecated github actions --- .github/workflows/pi4j-os.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pi4j-os.yml b/.github/workflows/pi4j-os.yml index a866720..38e12b7 100644 --- a/.github/workflows/pi4j-os.yml +++ b/.github/workflows/pi4j-os.yml @@ -16,7 +16,7 @@ jobs: - Picade steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Prepare build environment id: env @@ -44,7 +44,7 @@ jobs: - name: Upload OS image as build artifact if: steps.build.outcome == 'success' - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: Pi4J-${{ matrix.flavor }}-OS-image path: Pi4J-${{ matrix.flavor }}-OS.img.zip From 652226a5eb194fd9b3717e7c5e0f1911f9b22230 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Sun, 11 Jun 2023 15:23:03 +0200 Subject: [PATCH 33/42] wip --- .github/workflows/pi4j-os.yml | 2 +- README.adoc | 5 ++--- base/base.sh | 6 +++--- basic/basic.sh | 1 - crowpi/crowpi.sh | 3 +-- picade/picade.sh | 3 +-- 6 files changed, 8 insertions(+), 12 deletions(-) diff --git a/.github/workflows/pi4j-os.yml b/.github/workflows/pi4j-os.yml index 38e12b7..6dd3d9c 100644 --- a/.github/workflows/pi4j-os.yml +++ b/.github/workflows/pi4j-os.yml @@ -21,7 +21,7 @@ jobs: - name: Prepare build environment id: env run: | - echo ::set-output name=RELEASE_VERSION::$(echo "${GITHUB_REF#refs/*/}" | sed 's/\//-/g' | tr -cd '[0-9a-zA-Z.]-') + echo "RELEASE_VERSION=$(echo "${GITHUB_REF#refs/*/}" | sed 's/\//-/g' | tr -cd '[0-9a-zA-Z.]-')" >> $GITHUB_OUTPUT - name: Build OS image with Packer id: build diff --git a/README.adoc b/README.adoc index 7743e48..acd4983 100644 --- a/README.adoc +++ b/README.adoc @@ -12,12 +12,14 @@ This project provides pre-built versions of OS images with all you need to devel * starter script to launch JavaFX-apps in DRM (aka kiosk-mode) * preconfigured `/boot/config.txt` supporting all components out of the box * dynamic wallpaper that shows Ethernet/WLAN address and hostname +* user account `pi`, password `pi4j` * default WLAN connection ** setup a hotspot, for example on your smartphone, and you are ready to go. *** ssid: `Pi4J-Spot` *** password: `MayTheSourceBeWithYou!` ** your laptop has to be in the same WLAN as the RaspPi + The zip-compressed archives can be downloaded from https://pi4j-download.com[pi4j-download.com]. * Extract it and flash it with the imaging tool of your choice to get started. @@ -28,7 +30,6 @@ The zip-compressed archives can be downloaded from https://pi4j-download.com[pi4 === Pi4J-Basis-OS * support for building 100% pure Java applications using https://pi4j.com[Pi4J], https://openjfx.io[JavaFX] * link:https://pi4j-download.com/latest.php?flavor=basic[download Latest Pi4J-Basic-OS Image] -* user account `pi`, password `pi4j` * can be used for all kind of Pi4J- , JavaFX-, or FXGL-projects * use https://github.com/Pi4J/pi4j-template-javafx[RaspiFX template project] to start your JavaFX/Pi4J or plain Pi4J project @@ -37,7 +38,6 @@ The zip-compressed archives can be downloaded from https://pi4j-download.com[pi4 * all of Pi4J-Basic-OS * support for https://www.elecrow.com/crowpi-compact-raspberry-pi-educational-kit.html[CrowPi] * link:https://pi4j-download.com/latest.php?flavor=crowpi[download latest CrowPi Image] -* user account `pi`, password `crowpi` * comes with `lirc` preinstalled to run the IR receiver component * use https://github.com/Pi4J/pi4j-example-crowpi[CrowPi template project] to start your CrowPi experiments @@ -47,7 +47,6 @@ The zip-compressed archives can be downloaded from https://pi4j-download.com[pi4 * all of Pi4J-Basic-OS * support for https://shop.pimoroni.com/products/picade-console[Picade Console] * link:https://pi4j-download.com/latest.php?flavor=picade[Download Picade Image] -* user account `pi`, password `picade` * use link:[FXGL template project] to start your Picade project (available soon) diff --git a/base/base.sh b/base/base.sh index 23ce340..c436b7a 100644 --- a/base/base.sh +++ b/base/base.sh @@ -1,8 +1,8 @@ #!/bin/bash declare username=pi -declare password=crowpi -adduser --gecos "" --disabled-password $username -chpasswd <<<"$username:$password" +declare password=pi4j +adduser --gecos "" --disabled-password $username +chpasswd <<<"${username}:${password}" set -euxo pipefail diff --git a/basic/basic.sh b/basic/basic.sh index a2d643d..d533da0 100644 --- a/basic/basic.sh +++ b/basic/basic.sh @@ -7,7 +7,6 @@ raspi-config nonint do_hostname pi4j # Change default account passwords echo 'root:pi4j' | chpasswd -echo 'pi:pi4j' | chpasswd # Deploy system configuration via /boot/config.txt install -Dm 0644 /tmp/res-basic/system/config.txt /boot/config.txt diff --git a/crowpi/crowpi.sh b/crowpi/crowpi.sh index fe4bad2..1dd3f55 100644 --- a/crowpi/crowpi.sh +++ b/crowpi/crowpi.sh @@ -6,8 +6,7 @@ IFS=$'\n\t' raspi-config nonint do_hostname crowpi # Change default account passwords -echo 'root:crowpi' | chpasswd -echo 'pi:crowpi' | chpasswd +echo 'root:pi4j' | chpasswd # Deploy system configuration via /boot/config.txt install -Dm 0644 /tmp/res-crowpi/system/config.txt /boot/config.txt diff --git a/picade/picade.sh b/picade/picade.sh index 878d4d1..cd85905 100644 --- a/picade/picade.sh +++ b/picade/picade.sh @@ -10,8 +10,7 @@ declare -gr PICADE_GIT_REVISION="df02844c0cd773af5b908f47eac5fb1f7f361531" raspi-config nonint do_hostname picade # Change default account passwords -echo 'root:picade' | chpasswd -echo 'pi:picade' | chpasswd +echo 'root:pi4j' | chpasswd # Deploy system configuration via /boot/config.txt install -Dm 0644 /tmp/res-picade/system/config.txt /boot/config.txt From a3e7d5006bd4b84b053cb019eff1b316de3195b3 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Sun, 11 Jun 2023 15:41:10 +0200 Subject: [PATCH 34/42] wip --- README.adoc | 4 ++-- base/base.sh | 11 ++++++----- basic/basic.sh | 1 + crowpi/crowpi.sh | 1 + picade/picade.sh | 1 + 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/README.adoc b/README.adoc index acd4983..1e595b5 100644 --- a/README.adoc +++ b/README.adoc @@ -22,8 +22,8 @@ This project provides pre-built versions of OS images with all you need to devel The zip-compressed archives can be downloaded from https://pi4j-download.com[pi4j-download.com]. -* Extract it and flash it with the imaging tool of your choice to get started. -** We recommend to use https://www.raspberrypi.org/blog/raspberry-pi-imager-imaging-utility/[Raspberry Pi Imager]. +* Extract it and flash it using https://www.raspberrypi.org/blog/raspberry-pi-imager-imaging-utility/[Raspberry Pi Imager] +** Use its 'Advanced Options' to create a new user `pi`, password `pi4j` == Provided OS versions diff --git a/base/base.sh b/base/base.sh index c436b7a..5a1611a 100644 --- a/base/base.sh +++ b/base/base.sh @@ -1,8 +1,9 @@ #!/bin/bash -declare username=pi -declare password=pi4j -adduser --gecos "" --disabled-password $username -chpasswd <<<"${username}:${password}" + +# declare username=pi +# declare password=pi4j +# adduser --gecos "" --disabled-password $username +# chpasswd <<<"${username}:${password}" set -euxo pipefail @@ -79,7 +80,7 @@ install -Dm 0644 /tmp/res-base/system/pi4j-update-mime-db.service /etc/systemd/s systemctl enable pi4j-update-mime-db.service # Disable getting started wizard -rm /etc/xdg/autostart/piwiz.desktop +#rm /etc/xdg/autostart/piwiz.desktop # Disable screen blanking by default mkdir -p /etc/X11/xorg.conf.d/ diff --git a/basic/basic.sh b/basic/basic.sh index d533da0..a2d643d 100644 --- a/basic/basic.sh +++ b/basic/basic.sh @@ -7,6 +7,7 @@ raspi-config nonint do_hostname pi4j # Change default account passwords echo 'root:pi4j' | chpasswd +echo 'pi:pi4j' | chpasswd # Deploy system configuration via /boot/config.txt install -Dm 0644 /tmp/res-basic/system/config.txt /boot/config.txt diff --git a/crowpi/crowpi.sh b/crowpi/crowpi.sh index 1dd3f55..66594e3 100644 --- a/crowpi/crowpi.sh +++ b/crowpi/crowpi.sh @@ -7,6 +7,7 @@ raspi-config nonint do_hostname crowpi # Change default account passwords echo 'root:pi4j' | chpasswd +echo 'pi:pi4j' | chpasswd # Deploy system configuration via /boot/config.txt install -Dm 0644 /tmp/res-crowpi/system/config.txt /boot/config.txt diff --git a/picade/picade.sh b/picade/picade.sh index cd85905..b446add 100644 --- a/picade/picade.sh +++ b/picade/picade.sh @@ -11,6 +11,7 @@ raspi-config nonint do_hostname picade # Change default account passwords echo 'root:pi4j' | chpasswd +echo 'pi:pi4j' | chpasswd # Deploy system configuration via /boot/config.txt install -Dm 0644 /tmp/res-picade/system/config.txt /boot/config.txt From a5250cf24330fc4acc9ebc90e15b4b0e63765d43 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Mon, 12 Jun 2023 10:53:37 +0200 Subject: [PATCH 35/42] README updated --- README.adoc | 51 ++++++++++++++++++++++++++------------------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/README.adoc b/README.adoc index 1e595b5..c61875c 100644 --- a/README.adoc +++ b/README.adoc @@ -29,8 +29,9 @@ The zip-compressed archives can be downloaded from https://pi4j-download.com[pi4 === Pi4J-Basis-OS * support for building 100% pure Java applications using https://pi4j.com[Pi4J], https://openjfx.io[JavaFX] -* link:https://pi4j-download.com/latest.php?flavor=basic[download Latest Pi4J-Basic-OS Image] +* link:https://pi4j-download.com/latest.php?flavor=basic[download latest Pi4J-Basic-OS Image] * can be used for all kind of Pi4J- , JavaFX-, or FXGL-projects +* use https://pi4j.com/examples/components/[Pi4J Component Catalogue] and https://github.com/Pi4J/pi4j-example-components[Components on GitHub] to experiment with popular hardware components attached to your RaspPi. * use https://github.com/Pi4J/pi4j-template-javafx[RaspiFX template project] to start your JavaFX/Pi4J or plain Pi4J project === Pi4J-CrowPi-OS @@ -46,7 +47,7 @@ The zip-compressed archives can be downloaded from https://pi4j-download.com[pi4 * all of Pi4J-Basic-OS * support for https://shop.pimoroni.com/products/picade-console[Picade Console] -* link:https://pi4j-download.com/latest.php?flavor=picade[Download Picade Image] +* link:https://pi4j-download.com/latest.php?flavor=picade[download Picade Image] * use link:[FXGL template project] to start your Picade project (available soon) @@ -104,17 +105,16 @@ Compile the JavaFX application cd /home/pi/java-examples/pure-javafx javac --module-path /opt/javafx-sdk/lib --add-modules=javafx.controls,javafx.media hellofx/HelloFX.java +To start `HelloFX` in X11-Mode +[source, shell] +DISPLAY=:0 XAUTHORITY=/home/pi/.Xauthority sudo -E java --module-path /opt/javafx-sdk/lib --add-modules javafx.controls,javafx.media -Dglass.platform=gtk hellofx.HelloFX -To start `HelloFX` in DRM +To start `HelloFX` in DRM (Direct Rendering Mode) [source, shell] sudo java-kiosk hellofx.HelloFX - `java-kiosk` is a command provided by our image. It assures to call `java` with the correct (and huge) set of parameters. -To start `HelloFX` in X11-Mode -[source, shell] -DISPLAY=:0 XAUTHORITY=/home/pi/.Xauthority sudo -E java --module-path /opt/javafx-sdk/lib --add-modules javafx.controls,javafx.media -Dglass.platform=gtk hellofx.HelloFX === Pure Pi4J Application @@ -138,6 +138,25 @@ sudo java -cp "/home/pi/deploy/*:." hellopi4j.MinimalPi4J The audio test should use the internal loudspeaker. + +Compile the JavaFX application + +[source, shell] +cd /home/pi/java-examples/pure-picade +javac --module-path /opt/javafx-sdk/lib --add-modules=javafx.controls,javafx.media hellopicade/HelloPicade.java + + +To start `HelloPicade` in X11-Mode +[source, shell] +DISPLAY=:0 XAUTHORITY=/home/pi/.Xauthority sudo -E java --module-path /opt/javafx-sdk/lib --add-modules javafx.controls,javafx.media -Dglass.platform=gtk hellopicade.HelloPicade + + +To start `HelloPicade` in DRM + +[source, shell] +sudo java-kiosk hellopicade.HelloPicade + + Check the mapping of the Picade buttons to JavaFX KeyCodes: |=== @@ -166,24 +185,6 @@ Check the mapping of the Picade buttons to JavaFX KeyCodes: |=== -Compile the JavaFX application - -[source, shell] -cd /home/pi/java-examples/pure-picade -javac --module-path /opt/javafx-sdk/lib --add-modules=javafx.controls,javafx.media hellopicade/HelloPicade.java - - -To start `HelloPicade` in DRM - -[source, shell] -sudo java-kiosk hellopicade.HelloPicade - - -To start `HelloPicade` in X11-Mode -[source, shell] -DISPLAY=:0 XAUTHORITY=/home/pi/.Xauthority sudo -E java --module-path /opt/javafx-sdk/lib --add-modules javafx.controls,javafx.media -Dglass.platform=gtk hellopicade.HelloPicade - - == LICENSE This repository is licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the From e678646916198aa24e723feaafa75514398a8ad5 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Tue, 27 Jun 2023 15:24:56 +0200 Subject: [PATCH 36/42] fix for PicadeOS --- Picade.pkr.hcl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Picade.pkr.hcl b/Picade.pkr.hcl index b1d3978..4855364 100644 --- a/Picade.pkr.hcl +++ b/Picade.pkr.hcl @@ -34,8 +34,8 @@ source "arm" "raspios" { } # QEMU Toolchain - qemu_binary_source_path = "/usr/bin/qemu-arm-static" - qemu_binary_destination_path = "/usr/bin/qemu-arm-static" + qemu_binary_source_path = "/usr/bin/qemu-aarch64-static" + qemu_binary_destination_path = "/usr/bin/qemu-aarch64-static" } build { From 551e2f5d6b536bf0bf7721873836e76877e34ac3 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Wed, 28 Jun 2023 10:16:31 +0200 Subject: [PATCH 37/42] clarifications in README --- README.adoc | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/README.adoc b/README.adoc index c61875c..c64513d 100644 --- a/README.adoc +++ b/README.adoc @@ -11,8 +11,9 @@ This project provides pre-built versions of OS images with all you need to devel * preinstalled https://openjdk.java.net[OpenJDK 17] with latest https://gluonhq.com/products/javafx/[JavaFX 20] * starter script to launch JavaFX-apps in DRM (aka kiosk-mode) * preconfigured `/boot/config.txt` supporting all components out of the box -* dynamic wallpaper that shows Ethernet/WLAN address and hostname +* dynamic wallpaper showing Ethernet/WLAN address and hostname * user account `pi`, password `pi4j` +** you have to set the corresponding preferences in Raspberry Pi Imager * default WLAN connection ** setup a hotspot, for example on your smartphone, and you are ready to go. *** ssid: `Pi4J-Spot` @@ -20,7 +21,9 @@ This project provides pre-built versions of OS images with all you need to devel ** your laptop has to be in the same WLAN as the RaspPi -The zip-compressed archives can be downloaded from https://pi4j-download.com[pi4j-download.com]. +The zip-compressed archives of released versions can be downloaded from https://pi4j-download.com[pi4j-download.com]. + +* for the snapshot releases have a look at the https://github.com/Pi4J/pi4j-os/actions[Actions tab.] * Extract it and flash it using https://www.raspberrypi.org/blog/raspberry-pi-imager-imaging-utility/[Raspberry Pi Imager] ** Use its 'Advanced Options' to create a new user `pi`, password `pi4j` @@ -29,16 +32,16 @@ The zip-compressed archives can be downloaded from https://pi4j-download.com[pi4 === Pi4J-Basis-OS * support for building 100% pure Java applications using https://pi4j.com[Pi4J], https://openjfx.io[JavaFX] -* link:https://pi4j-download.com/latest.php?flavor=basic[download latest Pi4J-Basic-OS Image] -* can be used for all kind of Pi4J- , JavaFX-, or FXGL-projects -* use https://pi4j.com/examples/components/[Pi4J Component Catalogue] and https://github.com/Pi4J/pi4j-example-components[Components on GitHub] to experiment with popular hardware components attached to your RaspPi. -* use https://github.com/Pi4J/pi4j-template-javafx[RaspiFX template project] to start your JavaFX/Pi4J or plain Pi4J project +* download latest release of link:https://pi4j-download.com/latest.php?flavor=basic[ Pi4J-Basic-OS Image] +* can be used for all kind of Pi4J- , or JavaFX-projects +* use https://pi4j.com/examples/components/[Pi4J Component Catalogue] and corresponding https://github.com/Pi4J/pi4j-example-components[GitHub project] to experiment with popular hardware components attached to your RaspPi. +* use https://github.com/Pi4J/pi4j-template-javafx[RaspiFX template project] to start your own JavaFX/Pi4J or plain Pi4J project === Pi4J-CrowPi-OS * all of Pi4J-Basic-OS * support for https://www.elecrow.com/crowpi-compact-raspberry-pi-educational-kit.html[CrowPi] -* link:https://pi4j-download.com/latest.php?flavor=crowpi[download latest CrowPi Image] +* download latest release of link:https://pi4j-download.com/latest.php?flavor=crowpi[CrowPi Image] * comes with `lirc` preinstalled to run the IR receiver component * use https://github.com/Pi4J/pi4j-example-crowpi[CrowPi template project] to start your CrowPi experiments @@ -46,8 +49,8 @@ The zip-compressed archives can be downloaded from https://pi4j-download.com[pi4 === Pi4J-Picade-OS * all of Pi4J-Basic-OS -* support for https://shop.pimoroni.com/products/picade-console[Picade Console] -* link:https://pi4j-download.com/latest.php?flavor=picade[download Picade Image] +* support for https://shop.pimoroni.com/products/picade-console[Picade Console] and https://shop.pimoroni.com/products/picade-x-hat-usb-c?variant=29156918558803[Picade X HAT USB-C] +* download release of link:https://pi4j-download.com/latest.php?flavor=picade[Picade Image] * use link:[FXGL template project] to start your Picade project (available soon) @@ -66,7 +69,7 @@ Our OS images are used here == Sponsors -You can support the project or show interest by simply starring the repo or becoming a sponsor to let it live long and prosper. +You can support the project or show your interest by simply starring the repo or becoming a sponsor to let it live long and prosper. === Individual sponsors @@ -77,11 +80,11 @@ You can support the project or show interest by simply starring the repo or beco * https://karakun.com[Karakun] -image::assets/logo-karakun.jpg[Karakun, 300] +image::assets/logo-karakun.jpg[Karakun, 200] * https://gluonhq.com[Gluon] -image::assets/logo-gluon.png[Gluon, 300] +image::assets/logo-gluon.png[Gluon, 200] * _your company is missed here_ From 4c1c6fa9c0d39cfda39c39fb559332fe91db2a12 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Thu, 13 Jul 2023 15:04:05 +0200 Subject: [PATCH 38/42] enabled UART install gps support --- base/base.sh | 4 +++- basic/resources/system/config.txt | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/base/base.sh b/base/base.sh index 5a1611a..8860421 100644 --- a/base/base.sh +++ b/base/base.sh @@ -47,7 +47,9 @@ apt-get -y install \ lirc \ maven \ zip \ - openjdk-17-jdk + openjdk-17-jdk \ + gpsd \ + gpsd-clients rm -rf /var/lib/apt/lists/* #curl -s "https://get.sdkman.io" | bash diff --git a/basic/resources/system/config.txt b/basic/resources/system/config.txt index c4c0eb9..9dc09c3 100644 --- a/basic/resources/system/config.txt +++ b/basic/resources/system/config.txt @@ -4,6 +4,14 @@ start_x=1 gpu_mem=128 hdmi_cvt 1024 600 60 6 0 0 0 +# for better SPI stability +arm_freq_min=900 +arm_freq=900 +arm_boost=0 + +# Enable UART +enable_uart=1 + # Enable I2C and SPI dtparam=i2c_arm=on dtparam=spi=on From e7cbae50c05c9f93fc774c77d0dc602e3abbd508 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Tue, 18 Jul 2023 18:19:15 +0200 Subject: [PATCH 39/42] spi1 configuration --- basic/resources/system/config.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/basic/resources/system/config.txt b/basic/resources/system/config.txt index 9dc09c3..c0b34c1 100644 --- a/basic/resources/system/config.txt +++ b/basic/resources/system/config.txt @@ -22,3 +22,5 @@ dtparam=audio=on # Enable DRM VC4 V3D with up to 2 frame buffers dtoverlay=vc4-fkms-v3d max_framebuffers=2 + +dtoverlay=spi1-3cs From 0b6d35a7bc0582c6e7b6ea2272490600fb381a11 Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Wed, 19 Jul 2023 12:09:33 +0200 Subject: [PATCH 40/42] camera enabled --- basic/resources/system/config.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/basic/resources/system/config.txt b/basic/resources/system/config.txt index c0b34c1..abacca6 100644 --- a/basic/resources/system/config.txt +++ b/basic/resources/system/config.txt @@ -1,4 +1,6 @@ [all] +camera_auto_detect=1 + # Enable X with 128MB GPU memory and custom resolution start_x=1 gpu_mem=128 @@ -15,12 +17,12 @@ enable_uart=1 # Enable I2C and SPI dtparam=i2c_arm=on dtparam=spi=on +dtoverlay=spi1-3cs # Enable audio dtparam=audio=on # Enable DRM VC4 V3D with up to 2 frame buffers -dtoverlay=vc4-fkms-v3d +dtoverlay=vc4-kms-v3d max_framebuffers=2 -dtoverlay=spi1-3cs From f500405797afff148bd1f377de6143b6f4f7b96b Mon Sep 17 00:00:00 2001 From: DieterHolz Date: Mon, 24 Jul 2023 12:03:06 +0200 Subject: [PATCH 41/42] upgrade JavaFX to 20.0.2 --- base/base.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/base/base.sh b/base/base.sh index 8860421..dc172be 100644 --- a/base/base.sh +++ b/base/base.sh @@ -8,8 +8,8 @@ set -euxo pipefail # Script configuration -declare -gr JDK="17.0.7-tem" -declare -gr GLUON_JAVAFX_VERSION="20.0.1" +declare -gr JDK="17.0.8-tem" +declare -gr GLUON_JAVAFX_VERSION="20.0.2" declare -gr GLUON_JAVAFX_URL="https://download2.gluonhq.com/openjfx/${GLUON_JAVAFX_VERSION}/openjfx-${GLUON_JAVAFX_VERSION}_monocle-linux-aarch64_bin-sdk.zip" declare -gr GLUON_JAVAFX_PATH="/opt/javafx-sdk" declare -gr GLUON_JAVAFX_VERSION_PATH="/opt/javafx-sdk-${GLUON_JAVAFX_VERSION}" From 09c59935358d5c1e4b4876e77f04ee114249feb4 Mon Sep 17 00:00:00 2001 From: Frank Delporte Date: Wed, 26 Jul 2023 12:10:55 +0200 Subject: [PATCH 42/42] Fix typo --- README.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.adoc b/README.adoc index c64513d..8767c70 100644 --- a/README.adoc +++ b/README.adoc @@ -30,7 +30,7 @@ The zip-compressed archives of released versions can be downloaded from https:// == Provided OS versions -=== Pi4J-Basis-OS +=== Pi4J-Basic-OS * support for building 100% pure Java applications using https://pi4j.com[Pi4J], https://openjfx.io[JavaFX] * download latest release of link:https://pi4j-download.com/latest.php?flavor=basic[ Pi4J-Basic-OS Image] * can be used for all kind of Pi4J- , or JavaFX-projects