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)[2].
Alpine Linux | |
Famille | Linux (musl libc, busybox) |
---|---|
Langues | Multilingue |
État du projet | Actif |
DĂ©pĂ´t | gitlab.alpinelinux.org |
Plates-formes | x86, x86-64, Architecture ARM |
Entreprise / DĂ©veloppeur |
Équipe de développement Alpine Linux |
Licence | Licence MIT |
États des sources | Open source |
Dernière version stable | 3.18.2 ()[1] |
MĂ©thode de mise Ă jour | APK |
Environnement de bureau | BusyBox |
Gestionnaire de paquets | APK |
Site web | https://alpinelinux.org |
Cette distribution se prête particulièrement, en raison de sa légèreté, à la création d'images de conteneurs Docker[3]. La distribution Alpine Linux est particulièrement populaire pour cet usage[4] - [5].
Historique
À l'origine, Alpine Linux a démarré comme fork du projet LEAF[6]. Les membres de LEAF souhaitaient continuer à faire une distribution Linux qui tiendrait sur une simple disquette, alors que 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[7] - [8], 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[9], 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[8], 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[2] 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 , Alpine Linux est passé à Musl, qui est partiellement compatible avec glibc[10].
- Init (programme de lancement des tâches au démarrage) : Le système simple et léger OpenRC est le système init actuellement utilisé par Alpine Linux[11]. En revanche, les distributions linux Debian, Ubuntu, Red Hat Enterprise Linux, Arch Linux et CentOS utilisent Systemd.
Notes et références
- « Alpine 3.15.9, 3.16.6, 3.17.4 and 3.18.2 released », (consulté le )
- (en) « about | Alpine Linux », sur alpinelinux.org (consulté le )
- (en) « Smaller Java images with Alpine Linux - Atlassian Developer Blog », sur Atlassian Developer Blog, (consulté le ).
- Un grand nombre d'images officielles de Docker Hub proposent une image basée sur Alpine. L'image Docker Registry elle-même est basée sur Alpine Linux.
- Brian Christner, « Docker Official Images are Moving to Alpine Linux », sur brianchristner.io, (consulté le ).
- (en) « linux.leaf.devel - Re: [leaf-devel] 2.6.x kernel support? - msg#00039 - Programming Mailing Lists », sur osdir.com (consulté le )
- « Docker Official Images are Moving to Alpine Linux », BrianChristner.io,‎ (lire en ligne, consulté le )
- « Docker : La bascule d'Ubuntu vers Alpine Linux heurte des utilisateurs - Le Monde Informatique », LeMondeInformatique,‎ (lire en ligne, consulté le )
- (en) « Alpine Linux package management - Alpine Linux », sur wiki.alpinelinux.org (consulté le )
- « musl FAQ », sur www.musl-libc.org (consulté le )
- (en) « Alpine Linux Init System - Alpine Linux », sur wiki.alpinelinux.org (consulté le )
Articles connexes
- Docker
- (en) LEAF Project