Door Koen Vervloesem

Freelanceredacteur

Ubuntu Core op een Raspberry Pi

Minimale Linux-distributie voor iot-toepassingen

16-09-2022 • 06:00

28

Singlepage-opmaak

Snaps installeren

Op het eerste gezicht lijkt dit een klassiek Ubuntu Server-systeem te zijn, maar dat is schijn. Zowel de systeemconfiguratie als het pakketbeheer gebeuren met snapd, de snapdaemon. In tegenstelling tot de reguliere Ubuntu, waar de basis en veel software via het klassieke pakketbeheersysteem apt wordt geïnstalleerd, kun je in Ubuntu Core alleen software installeren via snaps. Het installeren en beheren van die snaps gebeurt wel op dezelfde manier als in de reguliere Ubuntu.

Als je de opdracht snap list op een vers geïnstalleerde Ubuntu Core 22 uitvoert, krijg je het volgende te zien:

Name       Version        Rev    Tracking       Publisher   Notes
core22     20220607       191    latest/stable  canonical✓  base
pi         22-2           132    22/stable      canonical✓  gadget
pi-kernel  5.15.0-1008.8  480    22/stable      canonical✓  kernel
snapd      2.56.2         16299  latest/stable  canonical✓  snapd

Snap-logoElke snap is een pakket dat geïsoleerd van de andere draait. Je ziet hier vier types snaps, in de kolom Notes. De base-snap bevat de runtimeomgeving met een minimale verzameling bibliotheken die gedeeld wordt door de meeste toepassingen. Hier is de base-snap core22, die dus het rootbestandssysteem voor Ubuntu Core 22 verzorgt.

De gadget-snap, hier pi, bevat de apparaatspecifieke configuratie, in ons geval voor de Raspberry Pi. Het regelt ook de bootloader. De kernel-snap bevat de Linux-kernel voor het apparaat, in dit geval is dat pi-kernel. De snapd-snap bevat de snapdaemon, die vier keer per dag, de frequentie en tijdstippen zijn aanpasbaar, alle snaps op updates controleert en ze installeert. Snaps zijn read-only en kunnen alleen veranderd worden door ze naar een nieuwe versie te upgraden.

Voordat je verder gaat, zet je de tijdzone correct. Vraag de huidige tijdzone en tijd op met timedatectl:

               Local time: Thu 2022-07-14 15:13:26 UTC
           Universal time: Thu 2022-07-14 15:13:26 UTC
                 RTC time: n/a
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Verander de tijdzone dan indien nodig met:

snap set system system.timezone="Europe/Amsterdam"

Snaps installeren

Ubuntu Core is een minimaal besturingssysteem. Naast de vier hierboven vermelde snaps is er standaard geen software geïnstalleerd. Er is zelfs geen editor aanwezig. Extra software installeer je als snaps uit de Snap Store. Je kunt op de website zoeken naar de gewenste software, of op je Ubuntu Core-systeem met de opdracht snap find en een zoekterm. Maar let op: de zoekresultaten tonen ook snaps van allerlei desktoptoepassingen, en die draaien niet op Ubuntu Core.

In ons voorgaande artikel over snaps creëerden we een snap voor Theengs Gateway, een gateway die Bluetooth Low Energy-sensors decodeert en hun data via MQTT uitstuurt. Dit pakket gaan we in dit artikel weer gebruiken om te laten zien hoe je snaps op Ubuntu Core installeert. Als we deze snap op Ubuntu Core willen draaien, moeten we eerst ook de snaps bluez, de bluetoothhost-stack van Linux, en pi-bluetooth, om de bluetooth-hardware op de Raspberry Pi in te schakelen, installeren:

snap install bluez pi-bluetooth

Installeer daarna ook Theengs Gateway:

snap install theengs-gateway

Geef je snap dan toegang tot bluetooth door de plug theengs-gateway:bluez-client met het slot bluez:service te verbinden:

snap connect theengs-gateway:bluez-client bluez:service

We stellen nu de host, de gebruikersnaam en het wachtwoord voor MQTT in:

snap set theengs-gateway mqtt.host=BROKER mqtt.user=USER mqtt.pass=PASSWORD

Na een herstart en inschakeling draait Theengs Gateway en start de service ook automatisch op bij het opstarten van Ubuntu Core:

snap stop theengs-gateway
snap start --enable theengs-gateway

Er bestaan talloze pakketten die je op deze manier op Ubuntu Core kunt installeren: Nextcloud, AdGuard Home, Mosquitto, ze hebben allemaal een snap die je even eenvoudig in Ubuntu Core als in de reguliere Ubuntu installeert. Als ze specifieke rechten nodig hebben, volg je in hun documentatie de instructies over welke specifieke plugs je met slots moet verbinden.

Theengs

Lees meer