Premiers pas de Alpine Linux
Voici une brève introduction à Alpine Linuxspécifiquement pour la plateforme Raspberry Pi
Pourquoi Alpine Linux ?
- c'est petit
- il peut être installé en copiant les fichiers sur la partition FAT de la carte SD.
- il peut fonctionner à partir de la RAM, le système de fichiers restera en lecture seule (la persistance des changements est bien sûr possible)
- C'est très bien pour les systèmes embarqués où l'alimentation peut être coupée de manière imprévisible !
- il s'agit d'un système dépouillé - pas d'encombrement, meilleure sécurité
- Il s'agit donc d'un bon choix pour le développement embarqué.
Alpine Linux est souvent utilisé pour les conteneurs Docker. Et il est également pris en charge sur la plateforme Raspberry Pi.
Pourquoi pas Alpine Linux ?
- Il n'est pas recommandé de commencer avec Alpine pour les débutants - ils doivent absolument utiliser NOOBS ou Raspbian.
- Alpine suppose un certain niveau de connaissance de Linux, et ajoute ses propres outils pour gérer l'installation.
- Les Alpes utilisent musl au lieu de glibc comme libc (bibliothèque C standard) - c'est une bonne chose pour les systèmes embarqués et à ressources limitées ;
- Les "grandes distributions" utilisent cependant la glibc - la compatibilité logicielle peut être un problème.
- Moins de paquets pré-compilés sont disponibles que pour Raspbian - ce qui signifie que vous devrez peut-être vous débrouiller seul pour construire les paquets dont vous avez besoin.
- Vous devrez vous occuper de nombreuses choses, par exemple définir le CRDA correct - cela peut prendre beaucoup de temps (nous avoir déjà écrit un article de blog à ce sujet)
Lecture hautement recommandée
- https://wiki.alpinelinux.org/wiki/Alpine_Linux:Overview - expliquant les différents modes (sys, diskless, data) et la philosophie générale d'Alpine. Lisez ceci d'abord !
- https://wiki.alpinelinux.org/wiki/Raspberry_Pi - installation d'Alpine sur Raspberry Pi
- https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management - le apk utilitaire
- https://wiki.alpinelinux.org/wiki/Alpine_local_backup - le lbu utilitaire
- https://wiki.alpinelinux.org/wiki/Tutorials_and_Howtos - liste de tutoriels et de guides pratiques pour Alpine
Installation
- Télécharger à partir de https://alpinelinux.org/downloads/ - regardez sous le Raspberry Pi tête.
Nous recommandons d'utiliser le armhf et non la version aarch64. Au moment où j'écris ces lignes, la version la plus récente d'Alpine est la 3.8.1.
J'ai testé Alpine sur le Pi 3 B+, et le Zero W, et je suis sûr qu'il fonctionnera sur les Pi 1, 2 et 3.
- Pour garantir l'intégrité des données vérifier le hachage SHA256. Sous Windows, cela peut être fait en utilisant VisualHash
- extraire le fichier tar.gz. Sous Windows, cela peut être fait en utilisant 7-zip
- extraire le fichier tar également (dans son propre répertoire)
L'extraction du fichier tar vous donnera le contenu qui doit être copié sur la partition FAT32 de la carte SD.
Aucune autre partition n'est nécessaire pour démarrer Alpine.
Rappelez-vous que le Raspberry Pi a besoin d'une partition FAT comme première partition pour démarrer correctement.
Conseil supplémentaire : si vous avez besoin de formater, le SD Formatter de la SD Card Association fera l'affaire sous Windows.
- copier le contenu du répertoire sur la partition FAT de la carte SD
La capture d'écran montre un Alpine Linux fraîchement installé.
des annuaires dignes d'intérêt :
- apks - contient les paquets Alpine
Mode sans disque dur
Le mode d'installation par défaut pour le Raspberry Pi est le suivant mode sans disque.
En mode sans disque, la carte SD n'est utilisée qu'initialement pour charger le système (et vos modifications apkovl, voir ci-dessous) dans un système de fichiers RAM.
Vous devez préserver les modifications entre les sessions en utilisant le programme Alpine. lbu (sauvegarde locale) utilitaire.
Connexion par défaut pour Alpine sur Raspberry Pi
Démarrez le Raspberry Pi avec la carte SD Alpine insérée.
- utilisateur : root
- mot de passe :
Le mot de passe n'est pas nécessaire, après avoir entré root et appuyé sur entrée, vous serez connecté.
Procédure d'installation
Une fois connecté, tapez
installation-alpine
Remarque : sur le clavier allemand, le tiret "-" se trouve sur la touche " ?".
- Alpine vous suggère de commencer par configurer une disposition de clavier.
- et ensuite demander la variante du clavier
J'ai utilisé "de" et "de-nodeadkeys".
- Alpine demande le nom d'hôte du système.
- Ensuite, vous pouvez mettre en place un réseau
- vous pouvez configurer la mise en réseau des appareils filaires et sans fil
- configurer l'IP, dhcp est supporté
- si vous ne voulez pas configurer d'autres périphériques réseau, vous pouvez taper fait et appuyez sur entrée ; alternativement vous pouvez configurer wlan0 (sur Pi 3B+)
- Alpine vous demandera si vous souhaitez effectuer une configuration manuelle supplémentaire du réseau. Appuyez sur la touche Entrée pour sélectionner la valeur par défaut (non)
Paramètres supplémentaires
- Après cela, Alpine vous demandera de définir un nouveau mot de passe root.
- fuseau horaire
- Par exemple, l'Europe
- par exemple, Berlin comme sous-zone horaire
- Europe/Berlin fera également l'affaire.
- URL du proxy HTTP/FTP (aucun si vous êtes dans un environnement réseau "normal")
Miroirs
- à cause du décalage d'horloge, vous pourriez rencontrer des problèmes pour mettre en place un miroir de paquet (aucun miroir ne peut être ajouté)
- pour résoudre ce problème, exécutez installation-alpine une deuxième fois, une fois que vous l'avez entièrement parcouru la première fois.
- vous obtiendrez quelques avertissements, car certains services auront déjà été lancés.
- l'option par défaut f testera le miroir le plus rapide
Serveur SSH
- openssh est la solution par défaut, mais vous pouvez aussi installer dropbear
Dropbear permet d'économiser un peu de RAM, mais il possède moins de fonctionnalités. Nous recommandons OpenSSH.
Alpine va maintenant générer des clés d'hôte SSH pour vous.
Client NTP
- busybox
- openntpd
- chrony (par défaut)
Stockage des configurations
Une étape importante de la procédure d'installation consiste à définir l'endroit où les changements de configuration seront enregistrés.
mmcblk0p1 est la valeur par défaut présélectionnée
Il s'agit de la première partition (partition FAT32) de la carte SD du Raspberry Pi.
Après cela, Alpine proposera un répertoire de cache local pour les paquets apk, également sur la carte SD : /media/mmcblk01p/cache
Remarque importante : Alpine n'enregistrera pas tout les changements en mode sans disque, même la configuration que vous venez de terminer. Vous devez utiliser l'utilitaire lbk pour conserver ces changements !
Mise à jour du système
mise à jour apk
apk ugrade
Assez similaire aux dérivés de Debian, vraiment.
Installation des paquets
apk add htop
Ajoute le paquet htop. (Vous permettant de surveiller l'utilisation des ressources d'une manière plus graphique).
N'oubliez pas qu'Alpine ne maintiendra pas l'installation du paquet si vous n'utilisez pas l'utilitaire lbk !
Changements persistants
L'utilitaire lbk (sauvegarde locale) est utilisé pour conserver les changements en mode sans disque. Exécutez-le une fois que vous êtes satisfait de votre configuration :
lbu commit -d
Cela créera un fichier appelé .apkovl.tar.gz dans votre partition FAT32. Dans ce fichier, lbu enregistrera les changements respectifs à la configuration de base.
Drapeaux utiles :
-d : supprimera les anciens fichiers apk superposés.
-n : ne pas commettre, montrer ce qui aurait été commis.
C'est également un endroit idéal pour patcher ces configurations de manière dynamique tout en créant des cartes SD en masse, et ainsi les injecter dans le système (par exemple, des paramètres modifiés / adresses IP / ...).
dans mon cas j'ai appelé le système "mir", c'est pourquoi l'apkovl s'appelle mir.apkovl.tar.gz
Notez que seul le seul dossier "etc" est contenu dans l'apkovl.
C'est parce que lbu, par défaut, ne fera persister que les changements dans le /etc répertoire! (sauf /etc/init.d)
Ajout d'autres répertoires à la liste des répertoires persistants de lbu :
Pour ajouter un répertoire ou un fichier en plus /etc pour surveiller les changements et commettre (lorsque vous exécutez lbu commit), utilisez lbu inclus:
lbu include /home/miaucat
et ensuite livrer le système de fichiers.
Vous n'aurez besoin d'inclure le répertoire qu'une seule fois, et de commiter. Les commits futurs préserveront également le répertoire inclus.
Montrant les changements actuels :
statut du lbu
montrera les fichiers modifiés depuis la dernière livraison.
utilisez l'option -a pour afficher tous les fichiers par rapport à la nouvelle installation.
Notez que lors du redémarrage, Alpine extraira le contenu de l'apkovl, ce qui prendra un peu plus de temps (et de RAM).
Des choses intéressantes à savoir
- Pour réduire la taille, Alpine utilise busybox. Busybox est un exécutable unique qui est lié par des liens symboliques à différents utilitaires (tels que taret ainsi de suite). Il s'agit d'une technique fréquemment utilisée dans les systèmes embarqués, par exemple la Fritz!Box.
- Alpine monte la partition FAT32 en lecture seule sous le nom de /media/mmcblk0p1. Elle sera brièvement remontée en écriture pour la persistance des changements.
- Alpine créera un répertoire de cache dans la partition FAT32 pour mettre en cache les apk's téléchargés depuis les miroirs en ligne.
- Par défaut, seuls les vi est installé comme éditeur de texte. vi est inclus dans l'exécutable de busybox (/usr/bin/vi est un lien symbolique vers /bin/busybox).
- lbu peut garder sauvegardes multipleset vous pouvez revenir à une ancienne sauvegarde. Cela n'affecte que l'apkovl qui est considéré comme actif.
- Alpine n'a pas udev, il a mdev.
- Comme Alpine utilise un système de fichiers basé sur la RAM, vous pouvez simplement retirer la carte SD après qu'Alpine ait démarré, et démarrer le Pi suivant avec elle. C'est très cool !
- Notez que le simple fait de le rebrancher ne vous permettra pas de vous engager - vous obtiendrez une erreur d'E/S.
Ressources
- https://en.wikipedia.org/wiki/Alpine_Linux
- Alpine Wiki
- https://wiki.alpinelinux.org/wiki/Raspberry_Pi - Tutoriel d'installation de Raspberry Pi
- 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 - compare comment exécuter différentes tâches d'administration sur différentes distros, et comment cela est fait sur Alpine
- https://pi3g.com/2018/08/06/wifi-channel-13-14-on-alpine-linux-aka-i-cant-connect-to-my-router-aka-crda-configuration/ - ajout des canaux WiFi 13 et 14 (Europe) à Alpine, installation de paquets de la périphérie / tests
- (non étudiée, pourrait être intéressante) : Construire des images personnalisées pour Raspberry Pi basées sur Alpine via Pieman