# Alpine Linux

Alpine Linux est une distribution Linux ultra-légère, orientée sécurité et basée sur Musl (en) et BusyBox, principalement conçue pour un « utilisateur intensif qui apprécie la sécurité, la simplicité et l'efficacité des ressources ». Elle utilise les patches PaX et Grsecurity du noyau par défaut et compile tous les binaires de l'espace utilisateur et exécutables indépendants de la position (dits « portables ») avec protection de destruction de la pile (en).
Cette distribution se prête particulièrement, en raison de sa légèreté, à la création d'images de conteneurs Docker. La distribution Alpine Linux est particulièrement populaire pour cet usage$^,$$^,$.

## Historique

À l'origine, Alpine Linux a démarré comme fork du projet LEAF. Les membres de LEAF souhaitaient continuer à faire une distribution Linux qui tiendrait sur une simple disquette, alors qu'Alpine Linux souhaitait inclure quelques paquets plus lourds tels que Squid et Samba, ainsi que des fonctionnalités additionnelles de sécurité et un noyau plus à jour. Un des buts initiaux était de créer un cadre pour des systèmes plus lourds ; bien qu'utilisable à cette fin, ce n'est plus un objectif primordial.
En 2016, Docker a migré ses images vers Alpine Linux$^,$, principalement en raison de sa légèreté.

## Fonctionnalités

* Gestion de paquets : Alpine utilise son propre système de management de paquet, apk-tools, qui était à l'origine une collection de scripts shell mais a été réécrit ensuite en C. Alpine contient actuellement les paquets utilisés couramment tels que GNOME, XFCE, Firefox, et d'autres.
* Disque virtuel (exécution depuis la mémoire) : Alpine Linux peut être installé comme distribution à exécuter depuis la mémoire vive. L'outil LBU (Sauvegarde locale d'Alpine) permet en option de sauvegarder tous les fichiers de configuration vers un fichier contenant APK (habituellement abrégés en apkovl), un fichier tar.gz qui contient par défaut une copie de tous les fichiers modifiés dans /etc (avec la possibilité d'ajouter d'autres répertoires).
* Sécurité : PaX et Grsecurity (grsec) sont inclus dans le noyau par défaut d'Alpine Linux, qui aide à réduire l'impact des exploits de la même manière que l'exploit en root local vmsplice. Tous les paquets sont aussi compilés avec une protection de la pile d’exécution pour adoucir les effets d'un dépassement de tampon de l'espace utilisateur.
* Taille : le système de base dans Alpine Linux est conçu pour n'avoir qu'une taille de 4–5 MB (hormis le noyau). Ceci permet des conteneurs Linux très petits, d'une taille d'environ 8 MB, alors qu'une installation minimale sur disque nécessiterait environ 130 MB. Le noyau Linux est bien plus grand : le noyau 3.18.16 comprend 121 MB de modules du noyau chargeables (principalement des drivers) en plus des 3.3 MB pour l'image de base du noyau X86-64.
* Cadre de Configuration Alpine ou Alpine Configuration Framework (ACF) : optionnelle, ACF est une application pour configurer une machine Alpine Linux, avec des buts similaires à debconf (en) de Debian.
* Bibliothèque standard du C : Alpine Linux utilisait précédemment UClibc au lieu de la traditionnelle GNU C Library (glibc) plus communément utilisée. Bien que plus légère, elle a l'inconvénient significatif d'être incompatible au niveau du code avec glibc. Ainsi, tous les logiciels doivent être compilés pour être utilisés avec uClibc pour fonctionner correctement. Le 9 avril 2014, Alpine Linux est passé à Musl, qui est partiellement compatible avec glibc.
* Init (programme de lancement des tâches au démarrage) : Le système simple et léger OpenRC (en) est le système init actuellement utilisé par Alpine Linux. En revanche, les distributions linux Debian, Ubuntu, Red Hat Enterprise Linux, Arch Linux et CentOS utilisent Systemd.