Alternativ zur Anleitung vom Nutzer AndyKakau das Ergebnis meines “Auftrages” einen Monitor mit einem Wallboard zu versehen (basierend auf einem Raspberry Pi Zero 2W):
Raspberry Pi Imager herunterladen und starten
Gewünschtes Lite Image auswählen.
Nach meiner Erfahrung ist die 32bit Bullseye Version am wenigsten ressourcenhungrig.
SD-Karte (8GB sollten ausreichen) auswählen und “weiter”.
Dann unbedingt “Einstellungen bearbeiten”:
Benutzername und Passwort festlegen
WiFi einrichten (wichtig !!!)
SSH Service aktivieren (falls benötigt. Alternativ USB Tastatur am Pi)
OS Anpassungen mit “JA” anwenden.
Das Löschen aller Daten bestätigen und Image auf SD Karte schreiben.
Nach Beendigung die Datei installkiosk.sh auf die SD-Karte kopieren.
Eine Datei url.txt auf der SD Karte erstellen mit der URL des Wallboards.
SD Karte in den Raspberry Pi einlegen und booten.
Wenn Bootvorgang abgeschlossen ist, auf dem Pi einloggen (per SSH oder Tastatur).
Die Datei installkiosk.sh mittels
. /boot/installkiosk.sh
ausführen.
Es wird das System aktualisiert, eine minimale graphische Umgebung und Browser installiert.
Warten, warten, warten.
Wenn das Skript fertig ist, den Raspberry neu starten (sudo reboot).
Der Raspberry sollte jetzt hochfahren und den Browser im Vollbild mit dem Wallboard starten.
Unter Windows findet man auf der SD Karte folgende Dateien:
url.txt
Enthält die URL zum Wallboard
browser.txt
Enthält den Browser, der gestartet werden soll.
Erlaubt sind chromium, firefox und midori (nicht für 64 bit Bookworm).
wifi.txt
Enthält SSID und Passwort für das WLAN.
Hiermit kann man das WLAN wechseln, wenn man nur einen Windows PC mit Kartenleser zur Hand hat. Einfach SSID und Passwort eintragen und das update Flag auf 1 setzen.
1 „Gefällt mir“
Hier die installkiosk.sh:
#!/bin/bash
if [[ "$(cat /etc/debian_version)" =~ ^11\. ]]; then
debian="Bullseye"
elif [[ "$(cat /etc/debian_version)" =~ ^12\. ]]; then
debian="Bookworm"
sudo ln -s /boot/firmware/browser.txt /boot
sudo ln -s /boot/firmware/url.txt /boot
sudo ln -s /boot/firmware/wifi.txt /boot
else
echo "unsupported os version"
exit 1
fi
if [[ "$(uname -a)" =~ aarch64 ]]; then
architecture="aarch64"
elif [[ "$(uname -a)" =~ armv7l ]]; then
architecture="armv71"
fi
echo "Enable console auto login"
sudo raspi-config nonint do_boot_behaviour B2
echo "System update"
sudo apt update && sudo apt upgrade -y -o Dpkg::Options::="--force-confnew"
echo "Install X system"
sudo apt install --no-install-recommends -y xserver-xorg xinit x11-xserver-utils matchbox-window-manager unclutter
if [[ "$debian" == "Bookworm" && "$architecture" == "armv7l" ]]; then
sudo apt install gldriver-test
fi
echo "Install Chromium"
sudo apt install -y chromium-browser
sudo sed -i -e 's/^want_memcheck=1/want_memcheck=0/' /usr/bin/chromium-browser
chromium-browser 2>/dev/null
sudo sed -i -e 's/^{/{"translate":{"enabled":false},/' ~/.config/chromium/Default/Preferences
echo "Install Firefox"
sudo apt install -y firefox-esr
if [[ "$debian" == "Bookworm" && "$architecture" == "aarch64" ]]; then
echo "Midor brwoser not available for this image"
else
echo "Install Midori"
sudo apt install -y midori
fi
echo "disable system services"
sudo systemctl disable --now avahi-daemon.service # Disable mDNS (not needed)
sudo systemctl disable --now ModemManager.service # Disable modem manager
sudo systemctl disable --now triggerhappy.service # Disable hotkey daemon
sudo systemctl disable --now hciuart
sudo systemctl disable --now bluetooth
if [[ "$debian" == "Bullseye" ]]; then
sudo systemctl disable --now rsyslog
fi
sudo sed -i -e 's/#Storage=auto/Storage=none/' /etc/systemd/journald.conf
echo "adapt swap"
sudo sed -i -e 's/^CONF_SWAPSIZE=.*/CONF_SWAPSIZE=1024/' /etc/dphys-swapfile
echo -e "vm.swappiness=1" | sudo tee /etc/sysctl.d/60-swappiness.conf
echo "add wificonfig to ~.profile"
echo -e '\n[[ -r /boot/wifi.txt ]] && ~/wificonfig.sh' >>~/.profile
echo "add startx to ~.profile"
echo -e '\n[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && startx ~/kiosk.sh' >>~/.profile
echo "write ~/wificonfig.sh"
cat <<EOF >~/wificonfig.sh
#!/bin/bash
update=\$(grep "^update=" /boot/wifi.txt | sed -E -e 's/[^=]*=(.*)(\\r|\$)/\\1/')
[[ "\$update" != "1" ]] && exit
ssid=\$(grep "^ssid=" /boot/wifi.txt | sed -E -e 's/[^=]*=(.*)(\\r|\$)/\\1/')
psk=\$(grep "^psk=" /boot/wifi.txt | sed -E -e 's/[^=]*=(.*)(\\r|\$)/\\1/')
country=\$(grep "^country=" /boot/wifi.txt | sed -E -e 's/[^=]*=(.*)(\\r|\$)/\\1/')
sudo sed -i -e 's/update=1/update=0/' \$(readlink -f /boot/wifi.txt)
if [[ -e /etc/NetworkManager/system-connections/preconfigured.nmconnection ]]; then
sudo sed -i -E \\
-e "s/(^|\\s)ssid=.*/\\1ssid=\$ssid/" \\
-e "s/(^|\\s)psk=.*/\\1psk=\$psk/" \\
/etc/NetworkManager/system-connections/preconfigured.nmconnection
elif [[ -e /etc/wpa_supplicant/wpa_supplicant.conf ]]; then
sudo sed -i -E \\
-e "s/(^|\\s)ssid=.*/\\1ssid=\\"\$ssid\\"/" \\
-e "s/(^|\\s)psk=.*/\\1psk=\\"\$psk\\"/" \\
-e "s/(^|\\s)country=.*/\\1country=\\"\$country\\"/" \\
/etc/wpa_supplicant/wpa_supplicant.conf
else
echo "unknown wifi config"
exit
fi
echo "wifi changed. reboot"
sudo reboot
EOF
chmod +x ~/wificonfig.sh
echo "write ~/kiosk.sh"
cat <<EOF >~/kiosk.sh
#!/bin/bash
start_midori() {
local url=\$1
midori \\
-e Fullscreen \\
"\$url"
}
start_firefox() {
local url=\$1
firefox \\
--kiosk \\
--private-window \\
"\$url"
}
start_chromium() {
local url=\$1
# Die Schalter zum Deaktivieren der Translate-Funktion scheinen nicht mehr zu funktionieren
if ! grep -q '"translate"' ~/.config/chromium/Default/Preferences 2>/dev/null; then
timeout 90 chromium-browser --kiosk --no-first-run "\$url"
sed -i -e 's/^{/{"translate":{"enabled":false},/' ~/.config/chromium/Default/Preferences
fi
chromium-browser \\
--check-for-update-interval=31536000 \\
--disable-component-update \\
--disable-default-apps \\
--disable-extensions \\
--disable-features=TranslateUI \\
--disable-gpu \\
--disable-infobars \\
--disable-logging \\
--disable-translate \\
--display=:0 \\
--enable-gpu-rasterization \\
--kiosk \\
--noerrdialogs \\
--no-first-run \\
--window-position=0,0 \\
"\$url"
}
# Bildschirmschoner deaktivieren
xset -dpms
xset s off
xset s noblank
# Fenster-Manager starten
matchbox-window-manager -use_titlebar no -use_cursor no &
# Mauszeiger verstecken
unclutter &
url=\$(head -q -n 1 /boot/url.txt 2>/dev/null)
browser=\$(head -q -n 1 /boot/browser.txt 2>/dev/null)
if [[ "\$browser" == "midori" ]]; then
start_midori "\$url"
elif [[ "\$browser" == "firefox" ]]; then
start_firefox "\$url"
else
start_chromium "\$url"
fi
EOF
chmod +x ~/kiosk.sh
sudo bash -c 'echo "chromium" >/boot/browser.txt'
[[ -r /boot/url.txt ]] || sudo bash -c 'echo "https://www.alarmiator.de" >/boot/url.txt'
sudo bash -c 'echo -e "ssid=\npsk=\ncountry=DE\nupdate=0" >/boot/wifi.txt'
1 „Gefällt mir“
BoxSon
6. Oktober 2025 um 11:49
3
Wow, das schaut gut aus.
Ich habe letztens mal “DietPi” auf einem Rpi 2 Zero W ausprobiert. Das funktioniert auch ganz gut, man muss aber genauso manuell in die Chromium-Startoptionen eingreifen, um die Warnmeldung bzgl. geringem RAM auszuschalten.
Ich probiere Deine Lösung auf jeden Fall die Tage auch mal aus.
1 „Gefällt mir“
Ok… Hier eine Lösung für DietPi:
dietpi.txt:
AUTO_SETUP_GLOBAL_PASSWORD=Passw0rd
AUTO_SETUP_LOCALE=C.UTF-8
AUTO_SETUP_KEYBOARD_LAYOUT=de
AUTO_SETUP_TIMEZONE=Europe/Berlin
AUTO_SETUP_NET_ETHERNET_ENABLED=0
AUTO_SETUP_NET_WIFI_ENABLED=1
AUTO_SETUP_NET_WIFI_COUNTRY_CODE=DE
AUTO_SETUP_NET_USESTATIC=0
AUTO_SETUP_NET_STATIC_IP=192.168.0.100
AUTO_SETUP_NET_STATIC_MASK=255.255.255.0
AUTO_SETUP_NET_STATIC_GATEWAY=192.168.0.1
AUTO_SETUP_NET_STATIC_DNS=9.9.9.9 149.112.112.112
AUTO_SETUP_DHCP_TO_STATIC=0
AUTO_SETUP_NET_HOSTNAME=DietPi
AUTO_SETUP_NET_ETH_FORCE_SPEED=0
AUTO_SETUP_BOOT_WAIT_FOR_NETWORK=1
AUTO_SETUP_SWAPFILE_SIZE=512
AUTO_SETUP_SWAPFILE_LOCATION=/var/swap
AUTO_SETUP_HEADLESS=0
CONFIG_SERIAL_CONSOLE_ENABLE=0
AUTO_UNMASK_LOGIND=0
AUTO_SETUP_CUSTOM_SCRIPT_EXEC=0
AUTO_SETUP_BACKUP_RESTORE=0
AUTO_SETUP_SSH_SERVER_INDEX=-1
AUTO_SETUP_LOGGING_INDEX=0
AUTO_SETUP_RAMLOG_MAXSIZE=50
AUTO_SETUP_WEB_SERVER_INDEX=0
AUTO_SETUP_DESKTOP_INDEX=0
AUTO_SETUP_BROWSER_INDEX=0
AUTO_SETUP_AUTOSTART_TARGET_INDEX=7
AUTO_SETUP_AUTOSTART_LOGIN_USER=root
AUTO_SETUP_AUTOMATED=1
AUTO_SETUP_INSTALL_SOFTWARE_ID=6 113
SURVEY_OPTED_IN=0
CONFIG_CPU_GOVERNOR=schedutil
CONFIG_CPU_ONDEMAND_SAMPLE_RATE=25000
CONFIG_CPU_ONDEMAND_SAMPLE_DOWNFACTOR=40
CONFIG_CPU_USAGE_THROTTLE_UP=50
CONFIG_CPU_MAX_FREQ=Disabled
CONFIG_CPU_MIN_FREQ=Disabled
CONFIG_CPU_DISABLE_TURBO=0
CONFIG_GPU_DRIVER=none
CONFIG_PROXY_ADDRESS=MyProxyServer.com
CONFIG_PROXY_PORT=8080
CONFIG_PROXY_USERNAME=
CONFIG_PROXY_PASSWORD=
CONFIG_G_CHECK_URL_TIMEOUT=10
CONFIG_G_CHECK_URL_ATTEMPTS=2
CONFIG_CHECK_CONNECTION_IP=9.9.9.9
CONFIG_CHECK_CONNECTION_IPV6=2620:fe::fe
CONFIG_CHECK_DNS_DOMAIN=dietpi.com
CONFIG_CHECK_DIETPI_UPDATES=0
CONFIG_CHECK_APT_UPDATES=0
CONFIG_NTP_MODE=2
CONFIG_SOUNDCARD=none
CONFIG_LCDPANEL=none
CONFIG_ENABLE_IPV6=1
CONFIG_APT_RASPBIAN_MIRROR=http://raspbian.raspberrypi.com/raspbian
CONFIG_APT_DEBIAN_MIRROR=https://deb.debian.org/debian/
CONFIG_NTP_MIRROR=default
SOFTWARE_DISABLE_SSH_PASSWORD_LOGINS=0
SOFTWARE_WIREGUARD_MODE=Server
SOFTWARE_WIREGUARD_PORT=51820
SOFTWARE_VNCSERVER_WIDTH=1280
SOFTWARE_VNCSERVER_HEIGHT=720
SOFTWARE_VNCSERVER_DEPTH=16
SOFTWARE_VNCSERVER_DISPLAY_INDEX=1
SOFTWARE_VNCSERVER_SHARE_DESKTOP=0
SOFTWARE_OWNCLOUD_NEXTCLOUD_USERNAME=admin
SOFTWARE_OWNCLOUD_DATADIR=/mnt/dietpi_userdata/owncloud_data
SOFTWARE_NEXTCLOUD_DATADIR=/mnt/dietpi_userdata/nextcloud_data
SOFTWARE_SYNAPSE_USERNAME=dietpi
SOFTWARE_WIFI_HOTSPOT_SSID=DietPi-HotSpot
SOFTWARE_WIFI_HOTSPOT_KEY=dietpihotspot
SOFTWARE_WIFI_HOTSPOT_CHANNEL=3
SOFTWARE_WIFI_HOTSPOT_WIFI4=0
SOFTWARE_WIFI_HOTSPOT_WIFI5=0
SOFTWARE_WIFI_HOTSPOT_WIFI6=0
SOFTWARE_WIFI_HOTSPOT_5G=0
SOFTWARE_WIFI_HOTSPOT_5G_CHANNEL=36
SOFTWARE_XORG_DPI=96
SOFTWARE_CHROMIUM_RES_X=1920
SOFTWARE_CHROMIUM_RES_Y=1080
SOFTWARE_CHROMIUM_AUTOSTART_URL=https://dietpi.com/
SOFTWARE_HOMEASSISTANT_APT_DEPS=
SOFTWARE_HOMEASSISTANT_PIP_DEPS=
SOFTWARE_K3S_EXEC=
SOFTWARE_DIETPI_DASHBOARD_VERSION=Stable
SOFTWARE_DIETPI_DASHBOARD_BACKEND=0
SOFTWARE_URBACKUP_BACKUPPATH=/mnt/dietpi_userdata/urbackup
SOFTWARE_ROONSERVER_EARLYACCESS=0
DEV_GITBRANCH=master
DEV_GITOWNER=MichaIng
Automation_Custom_Script.txt:
#!/bin/bash
echo "set swappiness"
echo -e "vm.swappiness=1" | sudo tee /etc/sysctl.d/60-swappiness.conf
echo "add startx to /home/dietpi/.profile"
echo -e '\n[[ $SSH_CLIENT ]] || pgrep startx >/dev/null || startx ~/kiosk.sh -- -nocursor' >>/home/dietpi/.profile
echo "write /home/dietpi/kiosk.sh"
cat <<EOF >/home/dietpi/kiosk.sh
#!/bin/bash
# Bildschirmschoner deaktivieren
xset -dpms
xset s off
xset s noblank
# Resolution to use for kiosk mode, should ideally match current system resolution
#res_x=\$(sed -n '/^[[:blank:]]*SOFTWARE_CHROMIUM_RES_X=/{s/^[^=]*=//p;q}' /boot/dietpi.txt)
#res_y=\$(sed -n '/^[[:blank:]]*SOFTWARE_CHROMIUM_RES_Y=/{s/^[^=]*=//p;q}' /boot/dietpi.txt)
#url=\$(sed -n '/^[[:blank:]]*SOFTWARE_CHROMIUM_AUTOSTART_URL=/{s/^[^=]*=//p;q}' /boot/dietpi.txt)
size=\$(DISPLAY=:0 xrandr 2>/dev/null | grep '*' | awk '{print \$1}' | tr x ,)
url=\$(head -q -n 1 /boot/firmware/dietpi-url*.txt 2>/dev/null | head -n 1)
args=(
--check-for-update-interval=31536000
--disable-component-update
--disable-default-apps
--disable-extensions
--disable-features=TranslateUI
--disable-gpu
--disable-infobars
--disable-logging
--disable-pinch
--disable-translate
--display=:0
--enable-gpu-rasterization
--kiosk
--noerrdialogs
--no-memcheck
--no-first-run
--simulate-outdated-no-au='Tue, 31 Dec 2099 23:59:59 GMT'
--window-position=0,0
--window-size=\${size:-1920,1080}
\${url:-https://www.alarmiator.de}
)
# Die Schalter zum Deaktivieren der Translate-Funktion scheinen nicht mehr zu funktionieren
if ! grep -q '"translate"' ~/.config/chromium/Default/Preferences 2>/dev/null; then
timeout 90 chromium "\${args[@]}"
sed -i -e 's/^{/{"translate":{"enabled":false},/' ~/.config/chromium/Default/Preferences
sed -i -e 's/"exit_type":"[^"]\+"/"exit_type":"Normal"/' ~/.config/chromium/Default/Preferences
sed -i -e 's/"exited_cleanly":false/"exited_cleanly":true/' ~/.config/chromium/'Local State'
elif [[ "\$(cat /etc/debian_version)" =~ ^13\\. ]]; then
cp -pr ~/.config/chromium /dev/shm
timeout 30 chromium --disk-cache-dir=/dev/null --user-data-dir=/dev/shm/chromium "\${args[@]}"
rm -rf /dev/shm/chromium
fi
cp -pr ~/.config/chromium /dev/shm
chromium --disk-cache-dir=/dev/null --user-data-dir=/dev/shm/chromium "\${args[@]}"
EOF
chmod +x /home/dietpi/kiosk.sh
[ -r /boot/firmware/dietpi-url.txt ] || sudo bash -c 'echo "https://www.alarmiator.de" >/boot/dietpi-url.txt'
echo "configure autostart"
sed -i -e 's/AUTO_SETUP_AUTOSTART_LOGIN_USER=root/AUTO_SETUP_AUTOSTART_LOGIN_USER=dietpi/' /boot/dietpi.txt
/boot/dietpi/dietpi-autostart 7
#echo 2 > /boot/dietpi/.install_stage
echo "reboot"
reboot
Dann eine Datei dietpi-url.txt erstellen mit der URL zum Wallboard, zB:
https://www.alarmiator.de
Alle drei Dateien nach dem Schreiben des Image auf die SD Karte in die FAT Partition und noch dietpi-wifi.txt editieren.
Dann sollte nach dem Starten des Raspi die Installation und Konfiguration erfolgen und nach einiger Zeit am Bildschirm das Wallboard erscheinen.
Dadurch das DietPi mit dem Custom Skript eine vollautomatische Installation ermöglicht, ist das fast schöner als mit Raspbian.
1 „Gefällt mir“