Files
Kiwy-Signage/scripts/pi_boot_config_patch_once.sh

77 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
MARKER_FILE="/etc/kiwy-signage/pi_boot_config_patched.marker"
is_pi() {
if [[ -f /proc/device-tree/model ]] && grep -qi "raspberry pi" /proc/device-tree/model; then
return 0
fi
if grep -qi "raspberry" /proc/cpuinfo 2>/dev/null; then
return 0
fi
return 1
}
find_boot_config() {
if [[ -f /boot/firmware/config.txt ]]; then
echo "/boot/firmware/config.txt"
elif [[ -f /boot/config.txt ]]; then
echo "/boot/config.txt"
else
echo ""
fi
}
upsert_key() {
local key="$1"
local value="$2"
local file="$3"
if grep -Eq "^[#[:space:]]*${key}=" "$file"; then
sed -i -E "s|^[#[:space:]]*${key}=.*|${key}=${value}|" "$file"
else
echo "${key}=${value}" >> "$file"
fi
}
if [[ "${EUID}" -ne 0 ]]; then
echo "[pi-boot-patch] Please run as root."
exit 1
fi
if ! is_pi; then
echo "[pi-boot-patch] Not a Raspberry Pi. Skipping."
exit 0
fi
if [[ -f "$MARKER_FILE" ]]; then
echo "[pi-boot-patch] Patch already applied. Skipping."
exit 0
fi
BOOT_CONFIG="$(find_boot_config)"
if [[ -z "$BOOT_CONFIG" ]]; then
echo "[pi-boot-patch] Boot config not found. Skipping."
exit 0
fi
echo "[pi-boot-patch] Applying patch to ${BOOT_CONFIG}"
# Graphics and memory settings for smoother Chromium playback on Pi.
upsert_key "dtoverlay" "vc4-kms-v3d" "$BOOT_CONFIG"
upsert_key "gpu_mem" "256" "$BOOT_CONFIG"
upsert_key "disable_overscan" "1" "$BOOT_CONFIG"
# Keep HDMI and display active for kiosk use.
upsert_key "hdmi_blanking" "0" "$BOOT_CONFIG"
upsert_key "hdmi_ignore_cec_init" "1" "$BOOT_CONFIG"
upsert_key "hdmi_force_hotplug" "1" "$BOOT_CONFIG"
mkdir -p "$(dirname "$MARKER_FILE")"
date -u +"%Y-%m-%dT%H:%M:%SZ" > "$MARKER_FILE"
echo "[pi-boot-patch] Patch complete. Marker written to ${MARKER_FILE}"