Raspberry Pi kiosk systeem installeren en gebruiken

Redactie
0

Een kiosk systeem vind je meestal in een openbare ruimte als terminal met maar één doel: passief informatie weergeven (digital-signage). Zo moet dit systeem stil, betrouwbaar en zo onzichtbaar mogelijk zijn. In deze workshop vertellen wij je hoe je met een Raspberry Pi een kiosk systeem kan maken.

Raspberry Pi kiosk systeem installeren en gebruiken


Krijg gratis info over alles wat met Raspberry Pi te maken heeft, schrijf je in voor de nieuwsbrief

Ontvang elke week het laatste IT-nieuws, de handigste tips en speciale aanbiedingen.

De benodigdheden voor een Raspberry Pi kiosk systeem

Voor deze Raspberry Pi Project heb je een Raspberry Pi 3 of nieuwer nodig. Kennis van Linux is handig, maar geen vereiste. Ook heb je een MicroSD-kaart, monitor en toetsenbord nodig.

raspberry pi energiemeter

Door deze workshop krijg je een onderhoudsarm minimalistisch systeem dat ‘geruisloos’ opstart. De Raspberry Pi kiosk mode wordt geopend in een browser  die schermvullend is en geen onnodige bedieningselementen bevat.

Zodra je de Raspberry Pi kiosk geconfigureerd hebt, kun je een image van de sd-kaart maken en die altijd opnieuw gebruiken. Dit kan handig zijn als je het aantal kiosk-Pi’s wilt uitbreiden of als een sd-kaart begeeft.

Raspberry Pi kiosk mode download & installatie

Download eerst de geschikte image voor je Raspberry Pi via de Debian-website.

Voor productief gebruik zijn de stabiele versies van Debian 11 (Bullseye) geschikt en aan te raden. Als je meer up-to-date pakketten nodig hebt en bereid bent te werken met een systeem dat nog in ontwikkeling is, kun je ook Debian 12 (Bookworm) proberen. Die versie is momenteel echter als unstable aangemerkt door het Debian-project.

Bij Debian is er bij de eerste keer opstarten geen standaardgebruiker, geen sudo en ook geen wizard die je door de eerste installatie leidt. Als Debian-gebruiker moet je dat zelf doen. De beloning voor die inspanning is een solide en slank systeem, vrij van overbodige onderdelen.

Na het downloaden van de Debian images, moet je de image op een microSD-kaart zetten met een tool naar keuze. Een handige tool die wij zelf hebben gebruikt is Raspberry Pi Imager. Deze tool is beschikbaar voor Windows, Linux, macOS.

Als je ervoor kiest om ook de Raspberry Pi Imager te gebruiken, dan moet je de optie ‘Gebruik eigen bestand’ selecteren in de tool. Vervolgens plaats je een microSD-kaart in de Raspberry Pi en sluit je de Raspberry Pi aan op een monitor, ethernet, toetsenbord en usb-voeding.

Eerste keer booten van Debian voor Raspberry Pi kiosk mode

Tijdens het eerste bootproces log je in op de commandline als root met een leeg wachtwoord. De eerste stap na het inloggen is het instellen van een rootwachtwoord met het commando passwd. Denk eraan dat het systeem nog niet gelokaliseerd is en de Raspberry Pi daarom alleen de Engelse toetsenbordindeling kent.

Om het verdere configureren comfortabel vanaf een andere computer te kunnen uitvoeren, moet eerst de toegang via SSH (Secure Shell) worden ingesteld. Bewerk daarvoor de SSH-configuratie met de standaard geïnstalleerde editor nano:
nano /etc/ssh/sshd_config

Verwijder de commentaartekens en pas de volgende regels aan om ssh-toegang via wachtwoord­authenticatie toe te staan:
PasswordAuthentication yes
PermitRootLogin yes

Sla het bestand op met Ctrl+O en Enter en sluit de editor af met Ctrl+X. Herstart dan de ssh-service om de instellingen toe te passen:
systemctl restart sshd

Vanaf dat moment kun je verbinding maken vanaf een andere computer in het netwerk via ssh − bijvoorbeeld vanaf een Windows-pc met de ssh-client PuTTY − of ga verder met het toetsenbord aangesloten. Het commando ip a show eth0 onthult het ip-adres van de Pi.

De Nederlandse taal voor Raspberry Pi kiosk mode

De volgende stap is om het systeem te updaten:
apt update -y && apt upgrade -y

Tijdens het updaten kun je de vraag krijgen of je het bestaande sshd_config wilt vervangen door de nieuwe versie van dat configuratiebestand. Beantwoord dat ontkennend.

Gebruik de volgende commando’s om je Raspberry Pi Nederlands te leren en de US-toetsenbord­indeling in te stellen:
apt install locales keyboard-configuration console-setup task-dutch -y

In de menu’s voor het toetsenbord selecteer je na elkaar ‘other’, ‘English (US)’ en voor de keyboardlay-out: ‘English (US) – English (US, intl., with dead keys)’. Kies vervolgens UTF-8 en laat in het volgende scherm de standaardinstelling (‘Guess optimal…’) staan.
dpkg-reconfigure locales

Selecteer in de locales-menu’s eerst ‘nl_NL.UTF-8 UFT-8’ en daarna ‘nl_NL.UTF8’. Na nog een herstart met reboot is de lokali­satie klaar.

Optioneel: een tweede HDMI-poort activeren voor Raspberry Pi kiosk systeem

Een Raspberry Pi van de vierde generatie heeft twee micro-HDMI-poorten ingebouwd, waarvan er standaard slechts één actief is. Afhankelijk van het gebruiksdoel kan het nuttig zijn de tweede HDMI-­poort te activeren, bijvoorbeeld als je meerdere schermen wilt gebruiken en je geen HDMI-splitter of iets dergelijks hebt.

Het parallel gebruiken van beide HDMI-poorten heeft wel een beperking: een resolutie van 4K op beide schermen beperkt de maximale refresh­rate tot 30 hertz. Voor de meeste toepassingen moet dat echter voldoende zijn.

Voeg de volgende regels toe aan het bestand /boot/firmware/config.txt om de tweede HDMI-­poort te activeren. De waarden zouden moeten werken voor de meeste gangbare displays:
disable_splash=1
hdmi_force_hotplug=1
hdmi_drive=2
hdmi_group=2
hdmi_force_mode=1

Raspberry Pi kiosk mode stil laten opstarten

Meestal wil je de snel voorbij scrollende systeem­meldingen tijdens het opstartproces van Linux niet missen, al was het maar om mogelijke problemen te identificeren. Maar als de Raspberry Pi wordt gebruikt als een publiekelijk zichtbaar kiosk­systeem, zijn dat soort mededelingen ongewenst. Met een beetje finetuning kun je de kiosk-­Pi geruisloos laten opstarten.

Daarvoor moet je met nano de volgende bootparameters in het bestand /boot/firmware/cmdline.txt zetten:
console=tty3 quiet loglevel=0 logo.nologo vt.global_cursor_default=0 root=/dev/mmcblk1p2 rw fsck.repair=yes net.ifnames=0 rootwait

De uitvoer bij het opstarten van het systeem wordt dan omgeleid naar een onzichtbare terminal. De knipperende cursor en het gekleurde Pi-logo zijn gedeactiveerd. Een opmerking over de parameter root=/dev/mmcblk1p2: dat is gewoonlijk de rootpartitie op een Pi-Debian wanneer je die op een microSD-kaart zet.

Als je rootpartitie anders is, bijvoorbeeld root=LABEL=RASPIROOT, dan laat je de waarde gewoon ongewijzigd. Om na de stille boot weer een knipperende cursor te hebben, voeg je de regel setterm -cursor on toe aan het bestand /root/.bashrc.

Je Raspberry Pi zal dan veel ‘stiller’ opstarten. Foutmeldingen of nieuw ontdekte apparaten zullen soms toch tot zichtbare meldingen leiden. Pas daarom de configuratiebestanden voor systemd en udev aan om hun uitvoer te onder­drukken of om te leiden. Voer in /etc/sysctl.d/99-sysctl.conf de waarde 3 3 3 3 in bij de sleutel ­kernel.printk=. In /etc/udev/udev.conf vervang je udev_log=info door udev_log=err. Vervang tot slot in /etc/systemd/logind.conf de regel NAutoVTs=6 door NAutoVTs=1. Verwijder steeds de commentaar­tekens die ervoor staan.

Standaard gebruiker instellen die automatisch wordt ingelogd

Bij de volgende stap maak je een standaard­gebruiker aan die automatisch wordt ingelogd zonder dat om een wachtwoord wordt gevraagd. Dat account mag en moet geen privileges krijgen, want het doet niet meer dan het openen van een browser. Maak daartoe een nieuwe gebruiker aan met de naam kiosk en geef hem een wachtwoord:
useradd -m kiosk
passwd kiosk

Je informeert het systeem over het automatisch aanmelden van de gebruiker kiosk met agetty. Maak eerst de benodigde map aan met het commando:
mkdir -p /etc/systemd/system/[email protected]­

Maak vervolgens een bestand genaamd override.conf in die map aan met de volgende inhoud:
[Service]
ExecStart=
ExecStart=/sbin/agetty –skip-login –login-options “-f kiosk” %I 38400 linux

Om het welkomstbericht (Message-of-the-Day) te onderdrukken, maak je een leeg bestand genaamd .hushlogin aan in de home-directory van de gebruiker kiosk:
touch /home/kiosk/.hushlogin

Openbox op de Pi

De basisinstallatie is voltooid. Daarna moet je Firefox starten in de grafische modus en een bepaalde website weergeven in kioskmodus zonder menubalken. Daarvoor heb je een X-server en een windowmanager nodig maar zonder de ballast van een volwaardige desktop.

Openbox biedt zo’n minimale omgeving en vereist geen selectie- of instelmogelijkheden in de gebruikersinter­face. Het handige is dat de configuratie uit slechts twee XML-bestanden bestaat, waardoor je een ­reproduceerbare omgeving voor extra apparaten of toepassingen hebt.

Het installatieproces van Openbox

Installeer eerst de benodigde pakketten:
apt install –no-install-recommends xserver-xorg x11-xserver-utils xinit firefox-esr-l10n-nl openbox -y

Maak vervolgens een back-up van het originele configuratiebestand van Openbox:
mv /etc/xdg/openbox/menu.xml /etc/xdg/openbox/menu.xml.backup

Maak dan de blauwdruk voor het Openbox-­menu door met een teksteditor de code in de listing op de vorige pagina in het bestand /etc/xdg/openbox/menu.xml te zetten. Door het weglaten van verdere tools, zoals een grafische terminal­emulatie, blijft het hele systeem slank en blijft het XML-bestand voor het menu overzichtelijk.

Openbox confronteert de gebruiker met slechts een slechts paar menu’s en teksten. Desalniettemin moet de uitvoer in het Nederlands zijn. Daarvoor wijzig je in het bestand /etc/xdg/openbox/environment de regel #LANG=en_CA.UTF8 in.LANG=nl_NL.UTF8.

Om knoppen en virtuele desktops te ver­bergen voor de standaardgebruiker, plaats je een ander Openbox XML-bestand als kopie in zijn home-­directory:
mkdir -p /home/kiosk/.config/openbox
cp /etc/xdg/openbox/rc.xml /home/kiosk/.config/openbox/rc.xml

Daarna vervang je in het bestand rc.xml de ­regel:
<titleLayout>NLIMC</titleLayout> dan door <titleLayout>L</titleLayout> en ook <number>4</number> door <number>1</number>.

Start de Raspberry Pi dan opnieuw op om de configuratie tot dan toe te testen. Je wordt begroet door een lege schil waarin je automatisch bent ingelogd als gebruiker kiosk. Start de minimalistische grafische omgeving:
startx

X-Server en Openbox tonen een leeg zwart ­bureaublad. Klik met de rechtermuisknop om het eerder aangemaakte Openbox-menu te openen met als enige item Webbrowser. Open daarmee Firefox, klik alle welkomstboodschappen weg en stel de browser in zoals je dat wilt. Het is bijvoorbeeld wenselijk om het sessieherstel na een crash uit te schakelen.

Starten zonder hulpwieltjes

Als alles naar behoren werkt, voeg je tot slot de onderdelen samen tot één geheel. In de toekomst zou de kioskmodus niet langer afhankelijk moeten zijn van je tussenkomst, maar volledig automatisch moeten starten. Daarvoor zet je de volgende regel in /home/kiosk/.profile:
exec startx — -keeptty
-nocursor>~/.xorg.log 2>&1

Als je kiosk-Pi niet alleen passief iets moet weergeven, maar ook invoer met de muis moet accepteren of als je je kiosk-Pi bedient in combinatie met een touchscreen, dan laat je de parameter -nocursor achterwege.

Vervolgens moet Firefox nog automatisch starten en een opgegeven url oproepen. Daarvoor maak je eerst weer een back-up:
mv /etc/xdg/openbox/autostart
/etc/xdg/openbox/autostart.backup

Gebruik vervolgens nano om de volgende regels in te voeren in /etc/xdg/openbox/autostart:
xset -dpms
xset s off
xset s noblank
firefox https://www.ct.nl/ –kiosk &

Als laatste stap moet je https://www.ct.nl vervangen door de url die verwijst naar de website die je wilt weergeven. Dat kan ook een webapplicatie zijn, een dashboard of een ticketsysteem. De andere parameters voorkomen dat de Raspberry Pi onbedoeld in de energiebesparingsmodus gaat.

Conclusie Raspberry Pi kiosk systeem installeren en gebruiken

In de regel moeten kiosksystemen zonder toezicht kunnen draaien. Afhankelijk van de toepassing en de locatie kun je overwegen het systeem verder te beveiligen, bijvoorbeeld door de ssh-authenti­catie met een wachtwoord uit te schakelen en alleen nog een certificaat toe te staan.

(Deze informatie is afkomstig uit het artikel van Tomas Jakobs en Jan Mulder uit c’t magazine 10/2022, p. 136-139)

Meer over Raspberry Pi Projects in c't 05/2024

Meer over

Raspberry Pi

Deel dit artikel

Lees ook

Raspberry Pi als NAS-systeem gebruiken? Dit moet je weten!

Wist je dat je een Raspberry Pi als Network Attached Storage (NAS) kunt gebruiken? Zo voldoet de Raspberry Pi 4 aan de belangrijkste eisen om dit te k...

Readly aanbieding: twee maanden gratis tijdschriften en kranten lezen

Sta jij voor het tijdschriftenschap eindeloos te twijfelen tussen wel tien verschillende magazines? Dan is Readly iets voor jou, want dan hoef je niet...

0 Praat mee
avatar
  Abonneer  
Laat het mij weten wanneer er