Compare commits
170 Commits
2e5d13e1b9
...
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 | ||
|
b9e30f2e0e | ||
|
47958f5efe | ||
|
1e780d18c2 | ||
|
744c7151fb | ||
|
8946f77e4a | ||
|
18acfd7f87 | ||
|
891df1e21e | ||
|
919f1e86b9 | ||
|
e335a4e8b6 | ||
|
da8f0063ea | ||
|
ccc23c6738 | ||
|
150246acda | ||
|
19fd60cef7 | ||
|
6453828cce | ||
|
9aa52c467b | ||
|
b040e0a64e | ||
|
17c8e48534 | ||
|
7c7d74f210 | ||
|
ecda2579eb | ||
|
94f7acf599 | ||
|
4cfc6758ff | ||
|
fd5a1e93cd | ||
|
c94d23e165 | ||
|
cdc1467e13 | ||
|
def6e65ffb | ||
|
36048218e0 | ||
|
98f522e64d | ||
|
0668700902 | ||
|
291f869713 | ||
|
48efb5fc54 | ||
|
a63eb86d7b | ||
|
0755b07f06 | ||
|
97aa847ea8 | ||
|
72b2dfd634 | ||
|
2327c5e28d | ||
|
64e205739c | ||
|
2c29fc27c5 | ||
|
7dd5b7dd59 | ||
|
8056aa3bec | ||
|
56916d4d84 | ||
|
f19ee211dd | ||
|
8273e8553b | ||
|
dd93d6280f | ||
|
3358eb36e1 | ||
|
9a13a81115 | ||
|
ff2fd5007f | ||
|
6fb311e7fb | ||
|
b4f2aeabde | ||
|
57149546cf | ||
|
a34bf65c4c | ||
|
62eeab3a86 | ||
|
94bb86632d | ||
|
70cd6f2a1e | ||
|
0fda3224f6 | ||
|
caf3d8681b | ||
|
1460069163 | ||
|
78444eaf07 | ||
|
962bf483c8 | ||
|
5f2fe0f854 | ||
|
5ef8b0d45c | ||
|
325123ff22 | ||
|
c318daf364 | ||
|
77706bd2f6 | ||
|
e484aa8581 | ||
|
a86d732f58 | ||
|
7c750947a9 | ||
|
c16e6b7dee | ||
|
0defafedd4 | ||
|
84746b2bcd | ||
|
3e8046da4c | ||
|
a2afdf78cb | ||
|
60c9ba3199 | ||
|
25e2319eff | ||
|
04d0dcb46c | ||
|
b48040b3f0 | ||
|
366bc2c8f3 | ||
|
bd2cf0e0e4 | ||
|
da6dde2aea | ||
|
2bc1f64a57 | ||
|
3dff0ce787 | ||
|
005a8c73b0 | ||
|
b37b47e559 | ||
|
3f78c2b444 | ||
|
bd85d61c05 | ||
|
827affcc11 | ||
|
4e9aaac41e | ||
|
fb582e2e67 | ||
|
ca06d62f2e | ||
|
18aee5cfb8 | ||
|
27a8050c3c | ||
|
151f3ff80f | ||
|
e5bd8d5433 | ||
|
10a538ff92 | ||
|
7073d28f22 | ||
|
d1b8a2005b | ||
|
a0ba64e5c8 | ||
|
733513aa25 | ||
|
255288909b | ||
|
4721bfe590 | ||
|
2b3ba5b2a6 | ||
|
fbe448ccdc | ||
|
61c6294e23 | ||
|
dec2743355 | ||
|
43c42bf9e4 | ||
|
69cc4146c8 | ||
|
ef933ae156 | ||
|
0f7ab62ac9 | ||
|
f81afa8282 | ||
|
45b4cc19d0 | ||
|
14a28a729e | ||
|
720f4aea86 | ||
|
c12b1df4ed | ||
|
c61f8b72fa | ||
|
edbc8b604d | ||
|
5ea223355a | ||
|
cd8a82d4fd | ||
|
cf938b0549 | ||
|
268d4c4f44 | ||
|
2e3603d228 | ||
|
5971767590 | ||
|
535ea6c7f0 | ||
|
600f7c1fa4 | ||
|
4b59b5a70d | ||
|
95ea0ba696 | ||
|
071d395635 | ||
|
7cfcace573 | ||
|
04f9b9bb5f | ||
|
2b9e8e9b22 | ||
|
4929d829f2 | ||
|
cfe65b2e64 | ||
|
88e48a8aca | ||
|
31aa04e99c | ||
|
571fe1e26b | ||
|
041b97464c | ||
|
fbdcaaf4f8 | ||
|
ec4562c7f2 | ||
|
8808124cc3 | ||
|
bc3970f9e3 | ||
|
d3553f5ec4 | ||
|
0cab554f7d | ||
|
75123fd64e | ||
|
0f41e41c8c | ||
|
a58e722bee | ||
|
c640efa6e1 | ||
|
d4049eeffb | ||
|
906c587fcd | ||
|
99399d30fc |
68
.github/workflows/build.yml
vendored
Normal file
68
.github/workflows/build.yml
vendored
Normal 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
3
.gitignore
vendored
@@ -1,8 +1,5 @@
|
|||||||
deploy/*
|
deploy/*
|
||||||
work/*
|
work/*
|
||||||
config
|
|
||||||
postrun.sh
|
postrun.sh
|
||||||
SKIP
|
|
||||||
SKIP_IMAGES
|
|
||||||
.pc
|
.pc
|
||||||
*-pc
|
*-pc
|
||||||
|
@@ -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
|
||||||
@@ -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`.
|
||||||
|
@@ -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:bookworm
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
BASE_IMAGE=debian:bookworm
|
|
||||||
;;
|
|
||||||
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
|
||||||
|
3
build.sh
3
build.sh
@@ -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
5
compress-images.sh
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
for img in "deploy/"*.img; do
|
||||||
|
gzip -4 -v -k "$img"
|
||||||
|
done
|
22
config
Normal file
22
config
Normal 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)"
|
@@ -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
|
||||||
|
@@ -133,9 +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
|
fi
|
||||||
if [ -f "${BMAP_FILE}" ]; then
|
if [ -f "${BMAP_FILE}" ]; then
|
||||||
xz -c "${BMAP_FILE}" > "$DEPLOY_DIR/image_$(basename "${BMAP_FILE}").xz"
|
cp "$BMAP_FILE" "$DEPLOY_DIR/"
|
||||||
fi
|
fi
|
||||||
cp "$INFO_FILE" "$DEPLOY_DIR/"
|
cp "$INFO_FILE" "$DEPLOY_DIR/"
|
||||||
|
@@ -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",
|
||||||
|
@@ -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
6
runtime-patches.sh
Executable file
@@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Patches to run before building showpieceos
|
||||||
|
# Allows for non-destructive deletion of files
|
||||||
|
|
||||||
|
rm stage2/EXPORT_IMAGE
|
@@ -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
|
||||||
|
|
||||||
|
@@ -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,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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
raspi-copies-and-fills
|
|
@@ -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
|
|
||||||
|
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
6
stage3/01-showpiece-browser/01-run.sh
Executable file
6
stage3/01-showpiece-browser/01-run.sh
Executable 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"
|
6
stage3/01-showpiece-browser/files/kiosk.desktop
Normal file
6
stage3/01-showpiece-browser/files/kiosk.desktop
Normal 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
|
@@ -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
|
4
stage4/99-force-hdmi-2/00-run.sh
Executable file
4
stage4/99-force-hdmi-2/00-run.sh
Executable 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"
|
@@ -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
0
stage5/SKIP
Normal file
3
stage9/01-docker/00-packages
Normal file
3
stage9/01-docker/00-packages
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
apt-transport-https
|
||||||
|
gnupg2
|
||||||
|
software-properties-common
|
7
stage9/01-docker/01-run-chroot.sh
Executable file
7
stage9/01-docker/01-run-chroot.sh
Executable 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
|
3
stage9/01-docker/02-packages
Normal file
3
stage9/01-docker/02-packages
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
docker-ce
|
||||||
|
docker-compose-plugin
|
||||||
|
cgroupfs-mount
|
5
stage9/01-docker/03-run-chroot.sh
Executable file
5
stage9/01-docker/03-run-chroot.sh
Executable 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
11
stage9/02-showpiece/01-run.sh
Executable 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"
|
12
stage9/02-showpiece/02-run-chroot.sh
Executable file
12
stage9/02-showpiece/02-run-chroot.sh
Executable 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
|
14
stage9/02-showpiece/files/config.json5
Normal file
14
stage9/02-showpiece/files/config.json5
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
10
stage9/02-showpiece/files/docker-compose.yml
Normal file
10
stage9/02-showpiece/files/docker-compose.yml
Normal 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
|
6
stage9/02-showpiece/files/kiosk.desktop
Normal file
6
stage9/02-showpiece/files/kiosk.desktop
Normal 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
4
stage9/EXPORT_IMAGE
Normal 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
5
stage9/prerun.sh
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
if [ ! -d "${ROOTFS_DIR}" ]; then
|
||||||
|
copy_previous
|
||||||
|
fi
|
Reference in New Issue
Block a user