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
Elke 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.