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
- https://wiki.alpinelinux.org/wiki/Alpine_Linux:Overview - uitleg over de verschillende modi (sys, diskless, data), en de algemene Alpine filosofie - lees dit eerst!
- https://wiki.alpinelinux.org/wiki/Raspberry_Pi - installatie van Alpine op Raspberry Pi
- https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management - de apk nutsbedrijf
- https://wiki.alpinelinux.org/wiki/Alpine_local_backup - de lbu nutsbedrijf
- https://wiki.alpinelinux.org/wiki/Tutorials_and_Howtos - lijst van handleidingen en howto's voor Alpine
Installatie
- Download van https://alpinelinux.org/downloads/ - kijk onder de Raspberry Pi rubriek.
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
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 / ...).
in mijn geval noemde ik het systeem "mir", daarom heet de apkovl mir.apkovl.tar.gz
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
- https://en.wikipedia.org/wiki/Alpine_Linux
- Alpine Wiki
- https://wiki.alpinelinux.org/wiki/Raspberry_Pi - Raspberry Pi installatie handleiding
- https://wiki.alpinelinux.org/wiki/Raspberry_Pi_3_-_Setting_Up_Bluetooth
- https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management
- https://wiki.alpinelinux.org/wiki/Configure_Networking
- https://wiki.alpinelinux.org/wiki/Installing_Oracle_Java
- https://wiki.alpinelinux.org/wiki/Tutorials_and_Howtos
- https://wiki.alpinelinux.org/wiki/Comparison_with_other_distros - vergelijkt hoe verschillende admin taken uit te voeren op verschillende distro's, en hoe het gedaan wordt op Alpine
- https://pi3g.com/2018/08/06/wifi-channel-13-14-on-alpine-linux-aka-i-cant-connect-to-my-router-aka-crda-configuration/ - toevoegen van WiFi Kanalen 13 en 14 (Europa) aan Alpine, installeren van pakketten van rand / testen
- (niet onderzocht, kan interessant zijn): Bouw aangepaste Raspberry Pi afbeeldingen gebaseerd op Alpine via Pieman