# Alpine Linux

Alpine Linux è una distribuzione Linux che basa le sue fondamenta su musl come libreria C, BusyBox per i comandi base e OpenRC come sistema di init. È indicata per gli utenti attenti alla sicurezza e all'efficienza delle risorse. Utilizza un kernel Linux al quale sono applicate specifiche patch di sicurezza. I binari sono compilati nello spazio utente come file eseguibili indipendenti dalla posizione abbracciando il paradigma dello stack-smashing. Grazie alle sue dimensioni ridotte viene spesso impiegata in sistemi che forniscono rapidi tempi di avvio, su macchine virtuali e su sistemi embedded quali router, server e NAS.

## Descrizione e funzionamento

Originariamente, Alpine Linux nasce quale fork del progetto LEAF. Mentre i membri di LEAF continuarono a sviluppare una distribuzione Linux che potesse essere inserita su un singolo disco floppy, gli sviluppatori Linux Alpine avrebbe voluto includere alcuni pacchetti aggiuntivi come Squid e Samba, oltre a ulteriori funzionalità di sicurezza e un nuovo kernel. Uno degli obiettivi originali era quello di creare un quadro per i sistemi più grandi; Sebbene utilizzabile per questo scopo, questo non è più un obiettivo primario.
Alpine utilizza un proprio sistema di gestione dei pacchetti denominato apk-tools. Originariamente si trattava di una raccolta di script shell per essere poi riscritto in C. Alpine contiene attualmente i pacchetti più comuni come GNOME, Xfce, Firefox e altri.
Alpine Linux può essere installato come distribuzione run-of-RAM. Lo strumento LBU (Alpine Local Backup) facoltativamente consente di eseguire il backup di tutti i file di configurazione su un file di sovrapposizione APK (di solito abbreviato a apkovl), un file tar.gz che memorizza per impostazione predefinita una copia di tutti i file modificati in / etc (Con l'opzione di aggiungere altre directory).
Un kernel hardenizzato è incluso nel kernel Alpine Linux predefinito, che aiuta a ridurre l'impatto di exploit simile al exploit locale root vmsplice. Tutti i pacchetti sono anche compilati con protezione dello stack-smashing per contribuire a mitigare gli effetti di buffer overflow lato utente. Dimensione: il sistema di base in Linux Alpine è progettato per essere di soli 4-5 MB in dimensioni (escluso il kernel). Ciò consente di includere Linux molto piccoli, di circa 8 MB in dimensioni, mentre un'installazione minima su disco potrebbe essere di circa 130 MB. Il kernel Linux è molto più grande; Il kernel 3.18.16 include 121 MB di moduli di kernel caricabili (in primo luogo i driver) oltre ai 3,3 MB per l'immagine del kernel di base x86-64.
Alpine Configuration Framework (ACF): sebbene facoltativo, ACF è un'applicazione per la configurazione di una macchina Alpine Linux, con obiettivi simili a Debconf di Debian.
Per le C standard library, Alpine Linux precedentemente utilizzava uClibc invece della tradizionale libreria GNU C (glibc) più comunemente utilizzati. Anche se è più leggera, ha il significativo inconveniente di essere binario incompatibile con glibc. Quindi, tutto il software deve essere compilato per essere utilizzato con uClibc per funzionare correttamente. A partire dal 9 aprile 2014, Alpine Linux è passato a musl, che è parzialmente binario compatibile con glibc.
Sistema Init: l'OpenRC semplice e leggero è il sistema init attualmente utilizzato da Alpine Linux. A differenza di Debian, Ubuntu, RHEL, Arch Linux e distribuzioni CentOS di Linux, Alpine non utilizza systemd.

## Derivate

postmarketOS, una distribuzione Linux per dispositivi mobili, è basata su Alpine Linux.

## Integrazione con ambienti di sviluppo e amministrazione

Grazie alla sua robustezza e compattezza, Alpine Linux, è stato integrato con ambienti e i set di strumenti più diffusi per sviluppatori e amministratori di sistema tra cui:
* Microsoft Store offre una versione di Alpine WSL pronta all'uso per WSL2
* Docker offre l'immagine ufficiale Alpine Docker
* Microsoft PowerShell fornisce una build specifica per Alpine Linux