Alpine Linux eerste stappen

Hier is een korte inleiding tot Alpine Linuxspeciaal voor het Raspberry Pi platform

Waarom Alpine Linux?

  • het is klein
  • het kan worden geïnstalleerd door bestanden te kopiëren naar de FAT-partitie van de SD
  • het kan draaien vanuit RAM, het bestandssysteem zal alleen-lezen blijven (wijzigingen bewaren is natuurlijk mogelijk)
    • dit is zeer goed voor embedded systemen waar de stroom onvoorspelbaar kan worden onderbroken!
  • het is een kaal systeem - geen rommel, betere beveiliging
  • daarom is het een goede keuze voor embedded ontwikkeling

Alpine Linux wordt vaak gebruikt voor Docker containers. En het wordt ook ondersteund op het Raspberry Pi platform.

Waarom niet Alpine Linux?

  • het is niet aan te raden om met Alpine te beginnen voor beginners - ze zouden zeker NOOBS of Raspbian moeten gebruiken
    • Alpine veronderstelt enige Linux kennis, en voegt zijn eigen tools toe om de installatie te beheren
  • Alpine gebruikt musl in plaats van glibc als libc (standaard C bibliotheek) - dit is goed voor embedded en resource beperkte systemen;
    • "grote distributies" gebruiken echter glibc - software compatibiliteit kan een probleem zijn.
  • Er zijn minder voorgecompileerde pakketten beschikbaar dan voor Raspbian - wat betekent dat u wellicht op uzelf aangewezen bent om de pakketten te bouwen die u nodig hebt.
  • Je zult voor veel dingen moeten zorgen, bijv. de juiste CRDA instellen - dit kan zeer tijdrovend zijn (wij eerder een blogbericht hebben geschreven over dit)

Zeer aanbevolen lectuur

Installatie

Wij raden aan om de armhf build, niet die van aarch64. Op het moment dat ik dit schrijf is de meest recente Alpine uitgave 3.8.1.

Ik heb Alpine getest op de Pi 3 B+, en de Zero W, en ben er zeker van dat hij ook op de Pi 1, 2 en 3 zal werken.

  • Om de integriteit van de gegevens te waarborgen controleer de SHA256 hash. Op Windows kan dit worden gedaan met VisualHash
  • pak het tar.gz bestand uit. Op windows kan dit gedaan worden met 7-zip
  • pak het tar-bestand ook uit (in zijn eigen map)

Door het tar-bestand uit te pakken krijgt u de inhoud die naar de FAT32-partitie van de SD-kaart moet worden gekopieerd.

Er zijn geen andere partities nodig om Alpine te starten.

Vergeet niet dat de Raspberry Pi een FAT-partitie als eerste partitie nodig heeft om goed te kunnen opstarten.

Bonus tip: als u moet formatteren, kunt u onder Windows de SD Formatter van de SD Card Association gebruiken.

  • kopieer de inhoud van de map naar de FAT-partitie van de SD-kaart

afbeelding

De schermafbeelding toont een pas geïnstalleerde Alpine Linux.

opmerkelijke gidsen:

  • apks - bevat Alpine pakketten

Schijfloze modus

De standaard installatie mode voor de Raspberry Pi is schijfloze modus.

In schijfloze modus wordt de SD kaart alleen initieel gebruikt om het systeem (en uw apkovl wijzigingen, zie hieronder) in een RAM bestandssysteem te laden.

U moet de wijzigingen tussen de sessies bewaren met Alpine's  lbu (lokale back-up) nut.

Standaard login voor Alpine op Raspberry Pi

Start de Raspberry Pi op met de Alpine SD-kaart erin.

  • gebruiker: root
  • wachtwoord:

Het wachtwoord is niet nodig, nadat u root hebt ingevoerd en op enter hebt gedrukt, bent u ingelogd.

Instellingsprocedure

Zodra u bent ingelogd, typt u

setup-alpine

hint: op de Duitse toetsenbordindeling staat het streepje "-" op de "?"-toets.

  • Alpine zal voorstellen om als eerste stap een toetsenbordindeling in te stellen
    • en vraag dan naar de toetsenbord variant

Ik gebruikte "de" en "de-nodeadkeys"

  • Alpine zal vragen naar de hostnaam van het systeem
  • Dan kunt u een netwerk opzetten
    • kunt u netwerken opzetten voor bekabelde en draadloze apparaten
  • stel het IP in, dhcp wordt ondersteund
  • Als u geen andere netwerkapparatuur wilt instellen, kunt u typen gedaan en druk op enter; als alternatief kunt u wlan0 instellen (op Pi 3B+)
  • Alpine zal vragen of u bijkomende handmatige netwerkconfiguratie wenst uit te voeren. Druk op enter om de standaardinstelling (nee) te selecteren.

Extra instellingen

  • Hierna zal Alpine je vragen om een nieuw root paswoord in te stellen
  • tijdzone
    • bv. Europa
    • b.v. Berlijn als subtijdzone
    • Europa/Berlijn zal ook werken.
  • HTTP/FTP proxy URL (geen als u zich in een "normale" netwerkomgeving bevindt)

Spiegels

  • omwille van clock skew kan je problemen krijgen met het opzetten van een package mirror (er kan geen mirror toegevoegd worden)
  • om dit probleem op te lossen, draai setup-alpine een tweede keer als je het de eerste keer helemaal hebt doorgenomen
    • zult u enkele waarschuwingen krijgen, omdat sommige diensten al gestart zullen zijn.
  • de standaardoptie f zal testen op de snelste spiegel

SSH-server

  • openssh is de standaard, maar je kunt ook dropbear installeren

Dropbear zal wat RAM besparen, maar het heeft minder mogelijkheden. Wij raden OpenSSH aan.

Alpine zal nu SSH host keys voor u genereren.

NTP-cliënt

  • busybox
  • openntpd
  • kroniek (standaard)

Opslaan van configuraties

Een belangrijke stap in de installatieprocedure is het instellen van de plaats waar de configuratiewijzigingen worden opgeslagen.

mmcblk0p1 is de voorgeselecteerde standaard

Dit is de eerste partitie (FAT32 partitie) van de SD-kaart van de Raspberry Pi.

Daarna zal Alpine een lokale cache directory voorstellen voor apk pakketten, ook op de SD kaart: /media/mmcblk01p/cache

Belangrijke opmerking: Alpine zal niet opslaan elke veranderingen in de schijfloze modus, zelfs de setup die je net hebt voltooid. U moet het hulpprogramma lbk gebruiken om deze wijzigingen te behouden!


Bijwerken van het systeem

apk-update

apk ugrade

Nogal vergelijkbaar met Debian derivaten, eigenlijk.


Installeren van pakketten

apk toevoegen htop

Voegt het htop pakket toe. (Hiermee kunt u resourcegebruik op een meer grafische manier monitoren).

Vergeet niet dat Alpine de installatie van het pakket niet zal volhouden als u het hulpprogramma lbk niet gebruikt!

Blijvende veranderingen

Het hulpprogramma lbk (lokale back-up) wordt gebruikt om wijzigingen in schijfloze modus te bewaren. Draai het nadat u tevreden bent met uw opstelling:

lbu commit -d

Dit zal een bestand met de naam .apkovl.tar.gz aanmaken op je FAT32 partitie. In dit bestand zal lbu de wijzigingen van de basisconfiguratie opslaan.

Nuttige vlaggen:

-d: zal oude apk overlay bestanden verwijderen.

-n: niet vastleggen, laten zien wat zou zijn vastgelegd.

Dit is ook een goede plaats om deze configuraties dynamisch te patchen terwijl je massaal SD-kaarten aanmaakt, en ze zo in het systeem te injecteren (bv. gewijzigde instellingen / IP-adressen / ...).

afbeelding

in mijn geval noemde ik het systeem "mir", daarom heet de apkovl mir.apkovl.tar.gz

afbeelding

Merk op dat alleen de enkele map "etc" in de apkovl staat.

Dat komt omdat lbu, standaard, zal alleen veranderingen in de /etc map! (behalve /etc/init.d)

Het toevoegen van andere directories aan lbu's lijst van bewaarde directories:

Om een directory of bestand toe te voegen naast /etc om te controleren op wijzigingen en vast te leggen (wanneer je lbu commit uitvoert), gebruik lbu omvatten:

lbu include /home/miaucat

en dan het bestandssysteem vastleggen.

Je hoeft de map maar één keer op te nemen, en te committen. Toekomstige commits zullen de ingesloten map ook behouden.


Toont de huidige veranderingen:

lbu-status

zal de bestanden tonen die gewijzigd zijn sinds de laatste commit.

gebruik de -a vlag om alle bestanden te tonen in vergelijking met de verse installatie.

Merk op dat bij het herstarten, Alpine de inhoud van de apkovl zal uitpakken, wat een beetje extra tijd (en RAM) zal vergen.

Interessante dingen om te weten

  • Om de grootte naar beneden te brengen, gebruikt Alpine busybox. Busybox is een enkel uitvoerbaar programma dat is gesymlinkt naar verschillende programma's (zoals teerenzovoort.) Dit is een veelgebruikte techniek in embedded systemen, b.v. de Fritz!Box.
  • Alpine mounteert de FAT32-partitie alleen-lezen als /media/mmcblk0p1. Het zal kort hermount schrijfbaar zijn voor het behouden van wijzigingen.
  • Alpine zal een cache map aanmaken in de FAT32 partitie om de apk's gedownload van de online mirrors te cachen.
  • Standaard alleen vi is geïnstalleerd als tekst-editor. vi is opgenomen in de busybox executable (/usr/bin/vi is een symlink naar /bin/busybox).
  • lbu kan houden meerdere back-upsen je kunt terugkeren naar een oudere backup. Dit heeft alleen invloed op welke apkovl als actief wordt beschouwd.
  • Alpine heeft geen udev, het heeft mdev.
  • Omdat Alpine een RAM-gebaseerd bestandssysteem gebruikt, kunt u de SD-kaart gewoon verwijderen nadat Alpine is opgestart, en de volgende Pi ermee opstarten. Erg cool!
    • Let op: als je de stekker er gewoon weer insteekt, kun je niet vastleggen - je krijgt een I/O foutmelding.

Middelen