====== Alpine Linux ====== Appréciée dans les environnements virtualisés par sa légèreté (merci busybox), Alpine Linux ne consomme pas de ressources inutiles (2,89 Mo de RAM sur mon container LXC de test) et tient dans un mouchoir de poche (13,82 Mo sur le disque de mon container LXC de test). Cependant, cette distribution linux, proposées en versions stables (à la Debian, pas de rolling release à la arch) impose de ce fait un certain nombre de restrictions, prix à payer pour cette légèreté/compacité.\\ Le but de ces quelques pages de wiki est donc de présenter les outils fournis par Alpine Linux, afin d'éviter d'aller chercher d'autres outils plus gourmands ce qui réduirait l'intérêt d'Alpine Linux. ===== Busybox ===== Le secret d'Alpine réside dans l'utilisation de Busybox. L'idée derrière Busybox est de rassembler dans un unique exécutable la quasi totalité des utilitaires systèmes. En s'appuyant sur le fait que chaque exécutable contient un overhead de qques ko, rassembler environ 200 utilitaires dans un unique executable permet de s'affranchir de 200 overheads. Et c'est sans compter sur la quantification du stockage, basé sur des secteurs de 4 ko (ou plus) qui sont réservés en totalité même si le fichier fait moins de 4 ko.\\ Il faut également reconnaître que les versions de `ls`, `ash`... sont des versions allégées avec moins de fonctionnalités. ===== Package manager ====== [[apk]] est le package manager d'Alpine Linux. Il gère l'installation et la désinstallation des dépendances et propose des fonctionnalités de cache, permettant d'installer au démarrage les paquets dans la RAM pour plus de rapidité (utile dans l'univers de l'embarqué où la mémoire volatile est lente -ex: carte SD, EEPROM- voir en readonly). ===== le shell ===== [[ash]] est le shell par défaut d'Alpine Linux. ===== OpenRC le init system ===== [[https://docs.alpinelinux.org/user-handbook/0.1a/Working/openrc.html]] ===== Diskless, data, sys ===== Au premier lancement d'Alpine Linux (en tant qu'OS principal ou dans une VM), le système est chargé dans la RAM et expose un shell pleinement utilisable. Néanmoins toutes les modifications faites seront perdues au reboot car le système est purement dans la RAM. Ainsi, ''setup-alpine'' et ''setup-disk'' permet la configuration de l'usage du disque entre 3 modes : * ''diskless'' : le système reste dans la RAM, possibilité de faire des configs avec persistance (et rechargement des paramètres au reboot) avec ''setup-lbu'' * ''data'' : le système reste monté dans la RAM, mais ''/var'' pointe vers une partition du disque dur (''/var'' est utilisé pour les bdd, et autre data ''/var/www''...). Il est fortement conseillé de configurer ''setup-lbu'' également pour garder les paramètres en plus des données * ''sys'' : le systèmle sera installé sur le disque dur, parfait pour un desktop classique Plus d'info [[https://wiki.alpinelinux.org/wiki/Installation#Installation_Overview|ici]]. ===== Post-installation ===== Le [[https://wiki.alpinelinux.org/wiki/Tutorials_and_Howtos|wiki officiel d'Alpine linux]] propose des [[https://wiki.alpinelinux.org/wiki/Installation#Post-Installation|personnalisations post-installation]] afin d'avoir un système adapté à un usage réel. Des scripts ''setup-xxx'' sont fournis pour personnaliser rapidement une fresh-install. On notera : * ''setup-alpine'', générique et un peu touche à tout * ''setup-ssh'' * ''setup-timezone'' * ''setup-keymap'' * ''setup-apkcache'' * ''setup-hostname'' * ''setup-ntp'' * ''setup-disk'' * ... === Ajouter un utilisateur === On utilise ''adduser'', fourni par ''busybox'' adduser -h /home/louc -s /bin/ash louc # -h on précise le répertoire home (optionnel) # -s on précise le shell utilisé (optionnel)