Gentoo
# Gentoo

In informatica Gentoo (o Gentoo Linux, pronuncia "gen-tu", la "g" di "Gentoo" è una "g" dolce, come in "gentile") è una distribuzione GNU/Linux focalizzata sulla velocità di esecuzione e sulla possibilità di personalizzazione (prende il nome dal pinguino Pygoscelis papua, noto per essere il pinguino più veloce sott'acqua). Caratteristica principale della distribuzione è il fatto di essere cosiddetta source-based: l'installazione dei programmi avviene mediante la compilazione dei codici sorgenti sul proprio computer piuttosto che per mezzo di pacchetti già compilati. Lo stretto rapporto con il codice sorgente rende Gentoo particolarmente adatto ad essere ottimizzato per l'hardware in uso e configurato secondo le esigenze dell'utente, andando però ad aumentare considerevolmente il tempo di aggiornamento dello stesso, soprattutto in macchine con poca RAM o una CPU poco potente.

## Storia

Il fondatore, Daniel Robbins, ricorda la nascita della distribuzione Gentoo in una serie di tre articoli intitolati Making the distribution (Costruire una distribuzione). Dopo aver sperimentato problemi di varia natura con il proprio sistema (inizialmente chiamato Enoch Linux), Robbins sperimentò il sistema operativo FreeBSD per diversi mesi, traendone vari spunti che integrò nel proprio sistema di autocompilazione dei pacchetti: fu così che nacque Portage.

Gentoo Linux 1.0 venne pubblicata il 31 marzo 2002. Nel 2004, Robbins diede vita alla Gentoo Foundation come organizzazione non-profit e vi trasferì ogni proprietà intellettuale, lasciando la carica di Chief Architect (capo architetto) il 26 aprile dello stesso anno. Iniziò a lavorare per Microsoft in una posizione che definì "far capire a Microsoft i progetti open source e basati sulla comunità" fino al 16 gennaio 2006.

A capo della fondazione vi è un comitato elettivo composto da cinque membri. L'annuncio venne dato a seguito dell'elezione il 2 marzo 2008. Vi è poi un Consiglio di sette membri che si occupa di questioni più prettamente tecniche e che viene eletto ogni anno dagli sviluppatori più attivi. Alla fine del 2007, la licenza alla Fondazione venne revocata dallo stato del Nuovo Messico nel quale essa è legalmente registrata, a seguito di un disguido burocratico poco chiaro. Ciò provocò un certo imbarazzo nella comunità Gentoo, tanto che Robbins propose un suo ritorno per riprendere le redini della situazione.

Tuttavia, il 19 maggio 2008, lo stato del Nuovo Messico dichiarò la Gentoo Foundation, Inc. di nuovo in regola ed operativa secondo la legge. Il 4 ottobre 2009 Gentoo ha celebrato il suo decimo anno di vita.

## Descrizione

### Caratteristiche

La scelta di offrire un sistema da compilare è stata compiuta per permettere la massima flessibilità e ottimizzazione delle prestazioni. Utilizzando le impostazioni di Portage, l'utente è in grado di personalizzare ogni pacchetto del sistema, producendo eseguibili il più possibile tarati per le proprie esigenze e il proprio hardware. Per questo motivo, Gentoo è spesso definita "metadistribuzione" (oppure anche source distro), differenziandosi così dalle altre distribuzioni Linux che tradizionalmente offrono pacchetti binari precompilati, già pronti per essere installati nel sistema. Per facilitare l'utente nelle operazioni di compilazione, Gentoo fornisce degli script chiamati ebuild. L'insieme degli ebuild è parte di Portage, il sistema di gestione dei pacchetti ufficiale della distribuzione. Inoltre, la distribuzione offre supporto per i pacchetti binari, che hanno estensione .grp. Tuttavia solo i pacchetti che richiedono molte risorse (come Libre Office, Rust, Firefox e Telegram ad esempio) vengono forniti anche in formato binario. Vi è anche la possibilità di installare una versione precompilata del kernel, chiamata gentoo-kernel-bin: esso fornisce un config il più possibile generico, in modo che la maggior parte dell'hardware risulti già compreso.

Il suo processo d'installazione risente dall'essere una distribuzione orientata alla compilazione dei programmi. Ogni volta che si verifica la necessità di installare un nuovo software o di aggiornarlo, la procedura richiederà molto più tempo rispetto alle installazioni tipiche con gli eseguibili già pronti, questo in proporzione alla complessità ed estensione del sorgente da compilare ed alle ottimizzazioni che si utilizzano per esso (CFLAGS). Il kernel Linux, una intera suite da ufficio come LibreOffice (che, come detto prima, è pero anche disponibile come versione precompilata: libreoffice-bin), progetti come Wine, sono esempi di software che richiederanno più tempo macchina. Naturalmente questo inciderà in particolare in fase di installazione, quando ci saranno diversi software che dovranno subire la compilazione, e macchine particolarmente datate potrebbero anche richiedere giorni per completare il lavoro. È anche possibile utilizzare distcc per far sì che la compilazione venga elaborata da più computer e rendere quindi il processo di compilazione più breve.

La procedura di compilazione sacrifica dunque la possibilità di una installazione veloce in cambio della possibilità di ottimizzare in base alle esigenze dell'utente e della macchina che si sta utilizzando. Un'insidia secondaria, a tal proposito, è che le opzioni di compilazione, se scelte male, possono portare alla produzione di programmi poco stabili o addirittura più lenti. In Gentoo sono presenti due rami, il ramo stable ed il ramo testing: è possibile usarli separatamente o insieme (scegliendo quale ramo deve essere usato su un determinato pacchetto). Il ramo testing come si evince dal nome stesso, è un ramo dove si è primi a testare un determinato pacchetto, questo fa sì che si abbia sempre l'ultima versione disponibile del pacchetto che, non essendo stato testato potrebbe essere instabile. Il ramo stable invece è il ramo consigliato in quanto i pacchetti prima di essere introdotti in questo ramo vengono testati. Il passaggio dal ramo stable a quello testing si effettua semplicemente aggiungendo il carattere "~" nella voce ACCEPTED_KEYWORDS nel file /etc/portage/make.conf (ad esempio ACCEPTED_KEYWORDS="~amd64"), mentre se si volesse passare da testing a stabile si deve tenere in conto che questa operazione potrebbe essere abbastanza difficoltosa.

In Portage esiste la nozione di profilo, cioè una serie di preimpostazioni che possono aiutare molto nel processo di creazione del proprio sistema Linux personalizzato, è possibile cambiare profilo tramite il tool eselect. Tradizionalmente, sono presenti:

* un profilo generico (es. default/linux/amd64/17.1)
* un profilo adatto all'uso quotidiano (es. default/linux/amd64/17.1/desktop)
* un profilo dedicato agli sviluppatori software (es. default/linux/amd64/17.1/developer)
* un profilo vocato alla stabilità e alla sicurezza (es. hardened/linux/amd64)
* un profilo con systemd (es: default/linux/amd64/17.1/systemd)
* altri profili dedicati ai vari Desktop environment e all'uso di specifiche librerie e impostazioni per esse ed altri profili dedicati a implementazioni (come SELinux).

Nell'ottica di dare all'utente più possibilità di scelta possibile (Gentoo is about choice è uno degli slogan) gli sviluppatori hanno cominciato a offrire pacchetti precompilati di software maggiormente richiesto e oneroso da compilare, come Firefox, Libreoffice, Thunderbird etc. Da settembre 2020 è possibile trovare nei repository ufficiali anche versioni precompilate del kernel linux.

In passato Gentoo forniva un insieme di pacchetti precompilati che venivano utilizzati per velocizzare l'installazione, questi costituivano la cosiddetta Gentoo Reference Platform (GRP).

### OpenRC

Gentoo a differenza di molte altre distribuzioni GNU/Linux, utilizza come sistema predefinito di init a dipendenze OpenRC (mantenuto dagli sviluppatori stessi di Gentoo in collaborazione con Alpine Linux) che funziona grazie al programma init fornito nel sistema (su Gentoo di default è installato sysvinit) esso quindi non vuole andare a sostituire quelle che sono le funzioni degli init file. Su Gentoo sono inoltre supportati systemd, epoch e runit: nel caso di systemd è possibile trovare dei profili con quest'ultimo impostato di default.

## Installazione

Gentoo può essere installata in vari modi. Il metodo più comune prevede l'utilizzo del Live CD di Gentoo che ci apre una shell dalla quale, tramite riga di comando, cominciamo ad impostare il sistema operativo, ma in generale l'installazione può aver luogo da qualsiasi Live CD, oppure da una installazione di Linux già presente in un'altra partizione del disco rigido tramite gli stage (l'unica installazione da stage ufficialmente supportata è quella da stage3). Ultimamente gli sviluppatori di Gentoo hanno reso disponibile anche una Live DVD, con OpenRC come init e plasma come interfaccia; questo porta a due vantaggi sostanziali: in primis si può avere un "assaggio" di quello che è l'OS che si sta andando ad installare, in secundis l'avere un'interfaccia grafica rende meno laborioso il compito di installazione, potendo usare anche Firefox per navigare su internet e seguire più agevolmente il manuale di installazione di Gentoo, chiamato anche Handbook.

L'installazione viene completata seguendo il Manuale Gentoo e non è indicata per i nuovi utenti Linux o per coloro che non vogliono avere a che fare con la shell di comando. L’installazione base offre un ambiente minimale, nessun tool grafico e nessun ambiente desktop, spetta all’utente finale costruire la distribuzione in base al proprio gusto e alle proprie esigenze. Un programma di installazione automatico è al momento in via di sviluppo, e può esser scaricato per dei test. Altri metodi di installazione sono presenti nell'Installation alternatives (HOWTO sui metodi di installazione alternativi), ma la maggior parte è riservata a utenti esperti o a coloro i quali non possono eseguire il Live CD al boot. Con la versione 2006.0, l'installer si basa sulle librerie GTK+ ed il processo di installazione è stato molto semplificato.

### Catalyst

A partire dalla versione 2004.0, Gentoo ha introdotto uno strumento chiamato Catalyst, che viene usato per compilare tutte le release Gentoo e può servire per costruire il proprio mezzo di installazione personalizzato.

### Fasi di installazione

Il processo di installazione è riassumibile in dieci passi:

* preparazione dell'ambiente di lavoro
* configurazione della connessione a Internet
* partizionamento del disco rigido
* completamento della configurazione dell'ambiente e chroot
* compilazione e installazione dei pacchetti di base, gli stessi per tutte le installazioni
* compilazione del kernel Linux
* scrittura della maggior parte dei file di configurazione
* scelta e installazione degli strumenti di sistema
* scelta e installazione del boot loader e creazione del profilo
* Primo login nel nuovo OS
* Gentoo è pronta per essere utilizzata. A questo punto essa si presenta come un ambiente Linux minimale in cui è presente solo una shell e pochi programmi di base.

Completati questi passi, l'utente è libero di installare ciò che desidera compilandosi da sé il proprio software. Per un approccio operativo è consigliabile seguire il Manuale Gentoo.

### Kernel

Gentoo mette a disposizione vari pacchetti, ognuno dei quali corrisponde ad una versione modificata (o non modificata come il pachetto vanilla-kernel) del kernel ufficiale: alcuni puntano al miglioramento delle prestazioni, altri offrono maggior sicurezza, altri consistono nelle versioni cosiddette bleeding edge cioè nuovissime e non ancora testate. Gentoo mette a disposizione sia versioni precompilate del kernel linux, sia versioni da compilare, per compilare il kernel è possibile seguire il metodo classico configurandolo manualmente oppure ricorrere a genkernel, uno strumento di autoconfigurazione. Maggiori informazioni nella Guida ai Kernel Gentoo Linux.

## Comunità e documentazione

Intorno alla distribuzione è attiva una comunità di utenti che indiscutibilmente si è saputa creare una buona fama nel mondo di Linux. La documentazione del sito ufficiale è di buona qualità e copre tutti gli aspetti dell'installazione e della configurazione del sistema (anche se l'installazione per arm e arm64 non è completamente documentata) più varie guide specifiche ad applicazioni come Java, GnuPG, Mutt o Vi. Inoltre gli utenti possono pubblicare le proprie guide e howto sul wiki Gentoo.

## Versioni

* 1.0, 31 marzo 2002
* 1.2, giugno 2002
* 1.4, 5 agosto 2003(introdotto GRP)
* 1.4 maintenance release 1, 11 settembre 2003
* 2004.0, 1º marzo 2004 (le versioni vengono cambiate a 4 release l'anno)
* 2004.1, 28 aprile 2004
* 2004.2, 26 luglio 2004
* 2004.3, 15 novembre 2004
* 2005.0, 27 marzo 2005 (le versioni vengono cambiate a release semi-annuali)
* 2005.1, 8 agosto 2005
* 2005.1 maintenance release 1, 21 novembre 2005
* 2006.0, 27 febbraio 2006
* 2006.1, 31 agosto 2006
* 2007.0, 7 maggio 2007
* 2008.0, 6 luglio 2008
* 10.0, 4 ottobre 2009 (edizione per il 10º anniversario di Gentoo)
* 10.1, 10 ottobre 2009
* 11.0, 2 marzo 2011
* 11.2, agosto 2011
* 12.0, 2 gennaio 2012
* 12.1, aprile 2012
* 20121221, 21 dicembre 2012
* 20140826, 26 agosto 2014
* 20160514, 14 maggio 2016
* 20160704, 4 luglio 2016

Una volta installato, Gentoo è effettivamente senza versione, in quanto il sistema viene periodicamente aggiornato all'ultimo elenco di ebuild disponibili. Il numero della versione serve solo per creare nuove installazioni aggiornate in partenza. Ogni versione distribuita periodicamente non è un ambiente software differente da quelli precedenti ma si tratta solamente di un'istantanea dell'attuale stato di sviluppo di un ambiente in continua evoluzione, nonostante per alcuni rilasci siano stati necessari alcuni passaggi intermedi per non rischiare di danneggiare la propria installazione (vedi ad esempio il passaggio dalla 13.0/17.0 alla 17.1). È stato annunciato che non saranno pubblicate più le versioni intermedie, come la 2007.1, per mancanza di fondi e di sviluppatori, ma ci si concentrerà su un'unica pubblicazione annuale. Per festeggiare il decimo anno dalla nascita di Gentoo, è stata distribuita la versione commemorativa 10.0, come gli anni di vita della metadistribuzione.

## Distribuzioni derivate

* Calculate Linux
* Funtoo
* Gentoox
* Liberté Linux
* Pentoo
* Sabayon Linux
* SystemRescueCD
* Toorox
* Ututo
* Vidalinux
* FireballISO
* KnopperDisk
* Funtoo Linux
* Tin Hat Linux
* Chrome OS
* Chromium OS
* CloverOS
* CLIP OS
