Door Koen Vervloesem

Freelanceredacteur

Ubuntu Core op een Raspberry Pi

Minimale Linux-distributie voor iot-toepassingen

16-09-2022 • 06:00

28

Multipage-opmaak

Veilig basisbesturingssysteem

Canonical, de maker van de populaire Linux-distributie Ubuntu, heeft zijn focus al een hele tijd verlegd van de desktop naar de markt voor servers en het internet of things. Met desktopbesturingssystemen valt namelijk niet veel meer te verdienen, maar Canonical denkt dat wel te kunnen doen met een besturingssysteem voor servers en iot. Daarom bracht Canonical eerder Ubuntu Core uit, een besturingssysteem voor embedded devices. Dat draai je op apparaten waar je jaren niet naar wilt omkijken, zoals een settopbox of een Nextcloud-server. Onlangs kwam Ubuntu Core 22 uit, gebaseerd op Ubuntu 22.04. In dit artikel leggen we uit hoe je Ubuntu Core en extra software op een Raspberry Pi installeert en hoe je je eigen aangepaste versie van het besturingssysteem maakt.

Met Ubuntu Core richt Canonical zich op de makers van settopboxen, edge gateways, drones, robots en andere apparaten die gewoon moeten werken zonder dat hun klanten ernaar hoeven om te kijken. Die makers krijgen met Ubuntu Core de beschikking over een minimaal basisbesturingssysteem met afgeschermde toepassingen, automatische transactionele updates die bij problemen terug te draaien zijn, secureboot, fulldiskencryptie (alleen op systemen met UEFI Secure Boot en TPM 2.0, dus niet op een Raspberry Pi) en een eigen appstore. Door op Ubuntu Core voort te bouwen, kunnen ze zich focussen op de ontwikkeling van hun software.

Snaps

Snap is een universeel pakketformaat dat door Canonical is ontwikkeld waarmee ontwikkelaars eenvoudig hun software kunnen aanbieden voor verschillende Linux-distributies. Tweakers schreef eerder een artikel over snaps en hoe je deze zelf kan aanmaken.

Gebruikers hoeven zich ook geen zorgen te maken om het up-to-date houden van het besturingssysteem en de software: dat gebeurt automatisch op de achtergrond. Als een update mislukt, wordt automatisch de vorige werkende versie teruggezet, waardoor je nooit met een niet-werkend systeem zit. Ubuntu Core ondersteunt alleen snaps als manier om software te installeren. Omdat die snaps van elkaar en het besturingssysteem afgescheiden zijn, hoef je niet bang te zijn dat je bij incompatibiliteitsproblemen met niet-werkende software achterblijft. En omdat snaps maar een beperkte toegang tot het systeem hebben, zijn de veiligheidsrisico's beperkt. Vergeleken met een reguliere Ubuntu-versie ben je met Ubuntu Core dus beperkter, maar in ruil daarvoor krijg je meer betrouwbaarheid en veiligheid. Voor servertoepassingen bij je thuis is dat dus ideaal.

Ubuntu Core is zo modulair opgebouwd dat zelfs de Linux-kernel als een snap wordt geïnstalleerd. Bron: Ubuntu Core datasheet

Gecertificeerde hardware

Canonical heeft een certificatieprogramma voor hardware, zowel voor servers, desktops en laptops als voor iot-apparaten. Voor Ubuntu Core 22 is de lijst met gecertificeerde apparaten voorlopig nog leeg. Voor Ubuntu Core 20 zijn 22 apparaten gecertificeerd, waaronder de Avnet SmartEdge Industrial IoT Gateway, industriële edgeterminals in de ThinkEdge-productlijn van Lenovo en edgecontrollers en gateways van Advantech.

Opvallend is dat in de lijst met gecertificeerde apparaten ook talloze modellen van de Raspberry Pi staan. Niet alleen de industriële versie Compute Module 3, Compute Module 3 Plus en Compute Module 4 Lite, maar ook de consumentenversies vanaf de Raspberry Pi 2 Model B tot en met de Raspberry Pi 400. Op de downloadpagina van Ubuntu Core 22 voor de Raspberry Pi staat ook de nieuwe Raspberry Pi Zero 2 W als ondersteund model vermeld. Volgens deze pagina zijn al deze modellen van de Raspberry Pi voor Ubuntu Core 22 gecertificeerd.

Voor industrieel gebruik zijn die consumentenversies van de Raspberry Pi niet bedoeld, maar door hun goede ondersteuning van Ubuntu Core, kun je hiermee vrij eenvoudig en zonder dure hardware te hoeven kopen, het besturingssysteem uitproberen. Zelfs een oude Raspberry Pi 2 is al voldoende voor een eerste blik.

Ubuntu Core ondersteunt een handvol modellen van de Raspberry Pi.

Image schrijven en netwerkconfiguratie

Voor dit artikel testten we Ubuntu Core 22 op een Raspberry Pi 3B+ uit. Download het juiste met xz gecomprimeerde image van Ubuntu Core 22. Voor de Raspberry Pi 2 heb je de 32bits-versie ubuntu-core-22-armhf+raspi.img.xz nodig, op de andere modellen gebruik je het best de 64bits-versie ubuntu-core-22-arm64+raspi.img.xz. Het installeren van Ubuntu Core op een Raspberry Pi is niet lastig, maar wijkt op bepaalde punten af van het installeren van de klassieke Ubuntu-versie, vandaar dat we het hele installatieproces hier uitleggen.

Je schrijft dit image naar een microSD-kaartje. Dat kan bijvoorbeeld met Raspberry Pi Imager, dat zowel op Windows als macOS en Linux draait. Klik hier op 'Selecteer OS', kies 'Gebruik eigen bestand' en selecteer dan het gedownloade image. Je hoeft het xz-bestand niet eerst uit te pakken: Raspberry Pi Imager doet dat automatisch. Steek daarna een microSD-kaart met een opslagcapaciteit van minstens 4GB in de kaartlezer van je pc, klik in Raspberry Pi Imager op 'Kies opslagapparaat' en kies dan je kaartlezer.

Klik tot slot op 'Schrijf'. Je krijgt nu nog de kans om na te kijken of je het juiste opslagapparaat hebt gekozen. Bevestig om het image te schrijven en alle op de microSD-kaart aanwezige data onherroepelijk te overschrijven.

Netwerkconfiguratie

Voor de eerste keer dat je Ubuntu Core op je Raspberry Pi opstart, dien je een toetsenbord en beeldscherm aan te sluiten. Indien je dat handiger vindt, kan het ook met een seriële kabel via USB. Het opstarten duurt enkele minuten en je Raspberry Pi wordt ook een keer herstart. Daarna krijg je de vraag om op enter te drukken en opnieuw enter om de netwerkconfiguratie te starten. Met de pijltjestoetsen selecteer je de gewenste wifi-interface, druk je op enter en kies je 'Edit Wifi'. Vul het ssid in of kies het uit de lijst met zichtbare netwerken.

Na het invullen van het wachtwoord kies je 'Save'. Als de verbinding succesvol is, krijgt je Raspberry Pi nu een IP-adres via DHCP. Heb je een ethernetkabel aangesloten, dan is er geen configuratie nodig. Je kunt zowel voor wifi als ethernet ook een manuele configuratie zonder DHCP instellen in het menu dat je opent door de netwerkinterface te selecteren en op enter te drukken. Op het einde van de netwerkconfiguratie kies je 'Done'.

Na de netwerkconfiguratie ondersteunt Ethernet en wifi.

Ubuntu One-account

Om verder te gaan, dien je eerst een Ubuntu One-account te hebben. Indien je die nog niet hebt, maak je een nieuwe account aan op de website van Ubuntu One. Voer op de website je e-mailadres in, selecteer 'I don’t have an Ubuntu One account' en vul je naam en een wachtwoord in.

Je Ubuntu Core-installatie wordt gekoppeld aan je Ubuntu One-account. Op je apparaat inloggen, kan alleen via een ssh-sleutel die ook in je Ubuntu One-account is geïmporteerd. Klik daarvoor in de webinterface van je account links op 'SSH keys', plak de inhoud van je publieke ssh-sleutel, die staat doorgaans in het bestand id_rsa.pub, id_ecdsa.pub of id_ed25519.pub in de directory '.ssh' in je persoonlijke map, in het tekstveld onderaan en klik dan op 'Import SSH key'. Heb je nog geen ssh-sleutel, maak die dan op je computer aan met de opdracht ssh-keygen.

Geef dan in het installatieprogramma van Ubuntu Core het e-mailadres op dat gekoppeld is met je Ubuntu One-account. Ubuntu Core haalt nu je publieke ssh-sleutels op en toont daarna met welke ssh-opdracht je op je apparaat kunt inloggen. Kies eerst 'Done', waarna Ubuntu Core herstart en de vingerafdrukken van de hostkeys laat zien, samen met de ssh-opdracht om in te loggen.

Voer je die opdracht uit, bijvoorbeeld met ssh koen-vervloesem@192.168.0.219 in een Linux- of macOS-terminal of de opdrachtprompt op Windows, dan krijg je de vraag om de hostkey te vertrouwen. Vergelijk die met degene die je op het scherm van je Ubuntu Core-machine ziet en bevestig indien ze overeenkomen. Daarna krijg je de opdrachtprompt te zien, waarin je Linux-opdrachten kunt uitvoeren.

Log in op je Ubuntu Core-machine met een ssh-sleutel.

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

Snaps voor je Raspberry Pi bouwen

Als je nu als maker van een apparaat Ubuntu Core wilt draaien en daarop je eigen software wilt verspreiden, moet je een snap van die software maken. In ons vorige artikel bouwden we een snap van Theengs Gateway, maar alleen voor amd64. Helaas lijkt Snapcraft geen eenvoudige manier te hebben voor lokale crosscompiling. Snapcraft biedt wel een autobuildservice aan, maar als je je snap-code nog niet in een GitHub-repository hebt staan, kun je die nog niet gebruiken. En bij de opdracht snapcraft remote-build die je snap op de Launchpad-buildfarm bouwt, duurt het soms uren voordat je pakket voor alle architecturen is gebouwd.

Het gemakkelijkste is dus om het buildproces rechtstreeks op je Raspberry Pi uit te voeren. Dat kan zelfs in Ubuntu Core: je installeert daarin een LXD-container, bouwt daarin je snap, haalt het snapbestand uit de container en installeert het op je Ubuntu Core-host.

We tonen hier hoe dat gaat. Installeer eerst in Ubuntu Core LXD, een systemcontainer en virtuelemachinemanager, en voeg jezelf aan de lxd-groep toe:

snap install lxd
sudo usermod -a -G lxd koen-vervloesem

Log daarna even uit en weer in. Creëer dan een container met Ubuntu 22.04-userland en open daarin een shell:

lxd init --auto
lxc launch ubuntu:22.04 jammy
lxc shell jammy
Raspberry Pi 3B+
Raspberry Pi 3B+

In deze container, waarin je als rootgebruiker bent ingelogd, installeer je nu Snapcraft en update je de pakketbronnen:

snap install snapcraft --classic
apt update

Kopieer nu je snap-code in je container, bijvoorbeeld met een git clone als ze online staat, bijvoorbeeld git clone https://github.com/theengs/gateway-snap.git, of met scp van je computer.

Daarna kun je je code bouwen:

cd gateway-snap
snapcraft --destructive-mode

In een tijdelijke omgeving zoals een container heb je de optie --destructive-mode nodig. Anders gebruikt Snapcraft LXD of Multipass om een nieuwe container of virtuele machine voor de build op te starten.

Als alles goed gaat, krijg je op het einde een arm64-snap. Zo niet, bekijk dan het logbestand van Snapcraft en los het probleem op. In het artikel over je eigen snaps creëren staan wat tips.

Verlaat nu de container, haal het snap-bestand eruit en installeer het op je Ubuntu Core-host:

exit
lxc file pull jammy/root/gateway-snap/theengs-gateway_0.3.0_arm64.snap .
snap install --dangerous theengs-gateway_0.3.0_arm64.snap

De optie --dangerous is nodig omdat het snap-bestand niet uit de Snap Store komt. Als na deze test blijkt dat je snap werkt, kun je het publiceren in de Snap Store.

Aangepast image maken

Als je als maker van hardware of software het je gebruikers zo gemakkelijk mogelijk wilt maken, dan kun je een aangepast image van Ubuntu Core maken met naast Ubuntu Core al de snap van je software ingebouwd. Je verspreidt dan dit image en je gebruikers hoeven dit alleen maar te installeren en daarna je software te configureren.

Om zo’n image te bouwen, heb je Ubuntu 20.04 LTS of later nodig. We baseren ons aangepaste Ubuntu Core-image op het standaardimage van Ubuntu Core 22 64-bits voor de Raspberry Pi. Hiervoor download je de modelassertion waarmee dit image gebouwd is:

$ wget -O theengs-gateway-core22-pi-arm64.json https://raw.githubusercontent.com/snapcore/models/master/ubuntu-core-20-pi-arm64.json

Vraag daarna je developer-ID op:

snapcraft whoami

Het ID ziet er als volgt uit:

id: FOc4NCc1eaHpCBTrMrK9CDwodTWIvBvw

Open nu het json-bestand in een editor. De waardes voor authority-id en brand-id vervang je door je developer-ID, bijvoorbeeld FOc4NCc1eaHpCBTrMrK9CDwodTWIvBvw. Bij 'model' kun je ook een nieuwe waarde invullen, zoals theengs-gateway-core22-pi-arm64.

Ubuntu Core

Snaps in het image toevoegen

Daarna zie je definities voor de vier snaps waaruit het standaardimage van Ubuntu Core voor de Raspberry Pi bestaat: pi, pi-kernel, core22 en snapd. Om Theengs Gateway aan dit image toe te voegen, dienen we voor deze snap en alle afhankelijkheden een definitie toe te voegen. Voeg allereerst de volgende definitie toe voor de snap theengs-gateway:

        {
            "name": "theengs-gateway",
            "type": "app",
            "default-channel": "latest/stable",
            "id": "WDvYyYNnf1p9CYuMa9uGYCXB6ZqH1EZp"
        }

Als type vul je 'app' in. Het ID krijg je te zien als snap-id in de uitvoer van snap info --verbose theengs-gateway.

Dan doe je hetzelfde voor bluez, maar als je deze snap voor het standaardkanaal latest/stable installeert, gebruikt die als basis core20, en dan moet je hiervan ook de snap installeren. Om dat te voorkomen, kies je als kanaal voor bluez 22/stable. De configuratie wordt dan:

        {
            "name": "bluez",
            "type": "app",
            "default-channel": "22/stable",
            "id": "JmzJi9kQvHUWddZ32PDJpBRXUpGRxvNS"
        },

Doe nu hetzelfde voor pi-bluetooth. Helaas is deze snap voorlopig alleen beschikbaar met basis core18. Die laatste snap moeten we dus ook installeren:

        {
            "name": "core18",
            "type": "base",
            "default-channel": "latest/stable",
            "id": "CSO04Jhav2yK0uz97cr0ipQRyqg0qQL6"
        },
        {
            "name": "pi-bluetooth",
            "type": "app",
            "default-channel": "latest/edge",
            "id": "MllPrJmz2tNjFQk65iIsHajyVeJDam9a"
        },

Image bouwen en conclusie

Daarna onderteken je de modelassertion met een gpg-sleutel. Maak die als volgt aan:

$ snapcraft create-key my-models

Kies een wachtwoordzin om je sleutel mee te versleutelen. En koppel de sleutel dan aan je Ubuntu One-account:

$ snapcraft register-key my-models

Dan moet je nu nog één regel in de modelassertion aanpassen: de timestamp. Dat moet een tijdstip zijn na het aanmaken van je sleutel. Vraag het huidige tijdstip op:

$ date -Iseconds --utc

En vul dit in het json-bestand in.

Onderteken het bestand nu:

$ snap sign -k my-models < theengs-gateway-core22-pi-arm64.json > theengs-gateway-core22-pi-arm64.model

Image bouwen

Met de ondertekende modelassertion in theengs-gateway-core22-pi-arm64.model, een yaml-bestand, kun je nu je aangepaste image bouwen. Installeer daarvoor eerst het programma ubuntu-image:

$ snap install ubuntu-image --classic

En bouw het image met:

$ ubuntu-image snap theengs-gateway-core22-pi-arm64.model

Na enkele minuten is het resultaat te vinden in het bestand pi.img, dat in ons geval 3,5GB groot is. De exacte revisies van elke snap die erin is opgenomen, vind je in het bestand seed.manifest.

Je kunt nu het best het image nog comprimeren met xz:

xz pi.img

Raspberry Pi FoundationHet resultaat is een image van 288MB, dat je eenvoudig met Raspberry Pi Imager naar een microSD-kaart kunt schrijven om je Raspberry Pi van op te starten. Na de netwerkconfiguratie en de configuratie van Theengs Gateway heb je een BLE-naar-MQTT-gateway waarnaar je niet meer hoeft om te kijken. De volledige code voor het aangepaste Ubuntu Core-image met Theengs Gateway is te vinden in de GitHub-repository theengs/gateway-appliance. Met dit stappenplan kun je even eenvoudig een aangepaste versie van Ubuntu Core met andere voorgeïnstalleerde software bouwen.

Conclusie

We hebben hier getoond hoe je een aangepast image van Ubuntu Core met een service kunt aanmaken, maar op dezelfde manier kun je ook een image met een webkiosk bouwen. Dat is gebaseerd op Ubuntu Frame, een fullscreenshell die op Wayland draait.

Ubuntu Core is een besturingssysteem dat je heel wat beheer uit handen neemt. Snaps worden automatisch vier keer per dag bijgewerkt naar de nieuwste versie. Bovendien is het vrij eenvoudig om je eigen aangepaste Ubuntu Core-image te maken. Ook om thuis services op een Raspberry Pi te draaien, is Ubuntu Core een heel geschikt besturingssysteem.

Lees meer

Reacties (28)

28
28
22
1
0
3
Wijzig sortering
Om verder te gaan, dien je eerst een Ubuntu One-account te hebben. Indien je die nog niet hebt, maak je een nieuwe account aan op de website van Ubuntu One. Voer op de website je e-mailadres in, selecteer 'I don’t have an Ubuntu One account' en vul je naam en een wachtwoord in.

Je Ubuntu Core-installatie wordt gekoppeld aan je Ubuntu One-account. Op je apparaat inloggen, kan alleen via een ssh-sleutel die ook in je Ubuntu One-account is geïmporteerd. Klik daarvoor in de webinterface van je account links op 'SSH keys', plak de inhoud van je publieke ssh-sleutel, die staat doorgaans in het bestand id_rsa.pub, id_ecdsa.pub of id_ed25519.pub in de directory '.ssh' in je persoonlijke map, in het tekstveld onderaan en klik dan op 'Import SSH key'. Heb je nog geen ssh-sleutel, maak die dan op je computer aan met de opdracht ssh-keygen.
dit zou voor mij al een reden zijn om het niet te gebruiken, zeker niet voor interne IOT, niet zozeer vanwege de keys, maar wel omdat een externe partij een mapping krijgt van je interne hardware.

[Reactie gewijzigd door divvid op 22 juli 2024 20:34]

Met de public keys kan je inderdaad niet zoveel, maar wel leg je hietbij de beveiliging van je systeem ook bij een externe partij. Ubuntu kan dus ook gewoon keys toevoegen voor een achterdeurtje in je systeem.

Voor mij wil i iets als toegang altijd in eigen hand houden en ik gebruik dan ook nooit zo'n 'log in with google/facebook' enz. En daarom heb ik ook geen Homey genomen (ook dat kan geen lokale accounts aan, alles moet via hun site).

[Reactie gewijzigd door GekkePrutser op 22 juli 2024 20:34]

precies dit dus, zou nooit langs de security officer komen
Tja, het is ook gewoon een kwestie van vertouwen natuurlijk. Als Microsoft (of elke andere vendor) morgen besluit een backdoor te pushen via een (Windows) Update dan kunnen ze ook naar binnen glippen.

Als je Conanical niet vertrouwd dan zeker niet doen. Zo wel why not?
Dat vind ik dus ook. Ik kan er eigenlijk niet bij dat er helemaal geen optie is om alleen een lokaal account te maken. Zelfs bij Windows kan dat gewoon, al is dat bij Windows 11 alleen bij de Pro versie geloof ik.

Wel jammer, want het concept is erg interessant voor server-achtige toepassingen, een stabiel OS met up-to-date packages en lange ondersteuning en updates. Misschien kan een handige jongen/meisje Ubuntu Core even forken en dat alles eruit slopen. ;) Maar ja, dat zal wel niet zo makkelijk gaan.
Vraagje: ik ben niet zo van de verplichte cloud-accounts. Is er ook een alternatief hiervoor? Dus een OS voor stabiliteit en flexibiliteit, met lange support en weinig poespas, maar wel met een package repo die een beetje bij de tijd is. Een kale Debian is vanwege dat laatste misschien minder geschikt? Linux Mint misschien?
Een tijdje geleden een experiment gedaan op een Pi3 hoever ik kan gaan met containers. Omdat ik geen ervaring heb met OSTree (Fedora) maar wel met Mint, heb ik ervoor gekozen DietPi te gebruiken in combinatie met Docker. Vooraf nog wel gekeken naar Ubuntu Core maar kon niet echt achterhalen waarom Snaps op een server beter zouden zijn dan containers. En DietPi is Debian-based en aangepast o.a. om de SD kaart te ontzien (wat weer teniet wordt gedaan door influxdb).
Op dit moment draaien er ruim een maand 8 containers zonder problemen (HA, Adguard, Portainer, Mosquitto, influxdb, Grafana, telegraf en node-RED). Vooralsnog prima voor een iot oplossing thuis.
Raspberry OS is het meest laagdrempelig. Het is voor de Pi gemaakt en werkt gewoon. Goede documentatie en aangezien het op Debian gebaseerd is, kan je ook makkelijk uitwijken naar die documentatie. Dit alles zonder verplichte accounts etc..

Zelf gebruik ik Alpine als host OS. Heel klein en heel licht. Om het makkelijk te maken, heb ik er een image voor gemaakt/aangepast zodat ik het kan flashen en meteen via SSH kan benaderen. Geen scherm en toetsenbord nodig.
Voel je vrij het eens te proberen: https://github.com/dannybouwers/alpine-raspberry-pi
Ubuntu Core is dan ook bedoeld voor grootschaliger deployment zodat je niet credentials hoeft aan te maken en te verslepen.

Het voordeel van snaps ligt ook bij de producer, niet de consumer. Handig als je je product wil distribueren over je IOT clients en beheren, maar daar moet snap wel een meerwaarde bieden, ik vraag me af of die er is nu zoveel in Python wordt gebouwd.

Dus in die zin snap ik wel wat ze hier proberen te bieden en de meerwaarde ervan, als je de boel met 1 click wil installeren heb je info nodig en het is niet alsof Ubuntu kan inloggen.

Mijn probleem met Ubuntu Core is de hardware support, ik heb niet het idee dat ze zelf echt actief hiermee bezig zijn en het aantal certified devices is erg beperkt qua ARM socs.

edit: @divvid

[Reactie gewijzigd door Xander2 op 22 juli 2024 20:34]

Voor grootschalige deployments zijn er wel betere manieren om credentials in te stellen. Ook de beperkte ondersteuning is zorgelijk. Hoeveel 'waarde' hangt Ubuntu hier nou echt aan.
Wat kan ermee dat niet met een ander OS kan? Ik vind de functionaliteit nogal gezocht. Grootschalige deployment maar dan anders dan SD-kaarten beschrijven en updaten op afstand...
Beperkte ondersteuning, verplichte Canonical account, geen apt maar enkel snap, ...
Ik weet niet goed waarom je als particulier Ubuntu Core zou kiezen als OS voor je IoT devices.
Sowieso ben ik al een beetje allergisch aan alles wat een verplicht [cloud]account heeft.
De voordelen moeten dan wel opwegen tegen de nadelen...
Ik denk dat de auteur keurig heeft aangegeven waarom je Core zou kunnen willen gebruiken. Ben ook geen fan van het verplichte account. Ik ben wel fan van het niet omkijken naar updates (en `unattended-upgrades` gaat maar zo ver).
Het feit dat je een online account nodig hebt voor dit OS vind ik wel een tegenvaller. Ik snap de voordelen van dit OS, maar mijn ervaring is ook wel dat Raspberry Pi OS gewoon het prettigst werkt op een Raspberry Pi. Als je dan eens in de zoveel tijd handmatig eens een keer een update doet ben je daar ook mee klaar.
@koenvervloesem ik ben geïnteresseerd in een Nix artikel met dezelfde functionaliteit (zonder de cloud rommel) :)

ContainerOS kan ook interessant zijn (voor degenen die OCI willen gebruiken).
Een alternatief zou Fedora IoT kunnen zijn. https://getfedora.org/en/iot/
Weer een leuke Canonical advertorial over Snaps....

Een gepaste titel was dan ook geweest "Ubuntu Core op een Raspberry Pi met Snaps".

Leuk gepruts voor het komende weekeind volgende week over een maand volgend jaar of wanneer die raspberry's dan ook beschikbaar zullen zijn...

[Reactie gewijzigd door CybernDystopia op 22 juli 2024 20:34]

Het is inderdaad wel toevallig dat er pas ook al een artikel was over snaps. Ik begin me dit ook wel een beetje af te vragen. Er is canonical veel aan gelegen om ze een succes te maken en ik zou het ook kwalijk vinden als ze invloed hebben uitgeoefend op de redactie. Maar ik ga er maar vanuit dat dat niet is gebeurd want Tweakers is normaal wel open in dat soort dingen (dan staat er advertorial of "Tweakers Partners" bij).

[Reactie gewijzigd door GekkePrutser op 22 juli 2024 20:34]

Ze hebben vanaf dat ze zich formeel geen linux meer noemen last van imperialistische trekjes. Ubuntu-phone is mislukt omdat ze de sleutel niet kregen van telefoonfabrikanten want die waren bang voor alternatieve forks die helemaal open gaan en van een telefoon een PC maken. Ze waren onverwacht geen steek verder gekomen dan andere Linuxen op smartphones. Oneerllik voordeel zat er helaas niet in. Nu proberen ze het weer, de eindgebruiker inlijven in een overbodig gecentraliseerd identificatiesysteem. Moeten we afhankelijk worden van een sandboxing package-manager met een centraal beheer?

[Reactie gewijzigd door blorf op 22 juli 2024 20:34]

Mocht je helemaal geen GNU/Linux willen gebruiken zijn er - afhankelijk van de hardware waarop het mag draaien - alternatieven. Microsoft heeft een IoT versie van Windows 10, of een ander alternatief: BSD-variant.
Sinds kort gebruik ik NetBSD op een RPI0 voor prijslijst-displays. Dat was eerst FreeBSD maar die kan de interne wifi niet gebruiken omdat ze geen SDIO driver hebben. Gevolg is dat er een hele dure wifi-dongle in moet, of een goedkope waar je je vingers aan brandt.

Windows IoT heb ik een keer geprobeerd omdat ik dacht dat het een Windows-desktop was maar je kijkt tegen een zwart scherm aan. Kon ik ook wel nagaan. :+
Dat artikel over eigen snap packages maken was afgelopen woensdag, lijkt dus gewoon onderdeel te zijn van een serie aan artikelen. Wie weet was het de bedoeling dat dit artikel er kwam, en werd het te lang om daar óók nog in uit te leggen hoe je dan snap packages maakt, en werd het daarom gesplitst. Wie weet komt er nog wel een vervolg.

Lijkt mij dus gewoon de interesse vanuit de auteur die hij graag met mooie artikelen wilt delen. Ik vind het leuk en van mij mag dit soort content zeker vaker komen. Misschien komt er later wel een serie over een ander OS.
Fijn om te horen dat het artikel beviel :) Deze twee artikelen zijn inderdaad bewust kort na elkaar ingepland. Aangezien software op Ubuntu Core alleen middels Snaps te installeren zijn, wilden we vóór dit artikel een artikel over Snaps publiceren, zodat je als lezer weet wat Snaps zijn en hoe je ze zelf kan maken. Van invloed van Canonical over deze artikelen is uiteraard geen sprake, net als alle andere artikelen die de redactie van Tweakers schrijft.
Leuk gepruts voor het komende weekeind volgende week over een maand volgend jaar of wanneer die raspberry's dan ook beschikbaar zullen zijn...
Links en rechts zijn ze mondjesmaat weer te krijgen. Maar goedkoop zijn ze helaas niet.
Verplicht Canonical account. Jammer, hier haak ik dus al af. Rest van de uitleg is niet aan mij besteed.
Niet alleen dat, ook het verplicht automatisch updaten. Er zijn genoeg use cases waarbij je dat gewoon niet wilt. Ik snap echt niet waarom Snap de mogelijk niet heeft om ook te kiezen voor handmatige updates.
Waar vind je vandaag de dag nog een nieuwe RPi, niemand kan ze leveren!?

Op dit item kan niet meer gereageerd worden.