# GNU Hurd

In informatica GNU Hurd è un software libero del progetto GNU sviluppato a partire dal 1990 per sostituire il kernel di Unix.
GNU Hurd consiste in una suite di server per microkernel sviluppati attorno al kernel GNU Mach, l'implementazione di GNU del kernel Mach.

## Storia

Nel 1991 il Progetto GNU era già stato ampiamente sviluppato, ma gli sviluppatori necessitavano di un kernel libero per poter ottenere un sistema completo. All'epoca non esisteva un kernel Unix-like libero e nessun progetto di sviluppo era noto, così decisero di svilupparlo autonomamente. Lo stesso Richard Matthew Stallman affermò che se il kernel Linux fosse stato disponibile in quel periodo non avrebbero mai iniziato a sviluppare il kernel Hurd, ma continuarono successivamente a lavorarci data la sua superiorità architetturale.
Il primo annuncio dello sviluppo di Hurd risale al 7 maggio 1991, con un messaggio nel newsgroup del progetto GNU. Tale messaggio riportava i tre obiettivi principali del progetto:
* Compatibilità binaria con BSD 4.4 e altri sistemi U*x o U*xish
* Compatibilità POSIX
* Facilità d'uso e introduzione di nuove caratteristiche e funzionalità
Circa due anni dopo il primo messaggio, nel novembre 1993, alcune funzionalità erano state correttamente implementate (come il filesystem e i server auth e proc), ma il sistema non era ancora avviabile e veniva richiesto l'aiuto di persone che volessero attivamente contribuire allo sviluppo. Fu reso avviabile nell'aprile dell'anno seguente.
La prima versione di test, la versione 0.0, fu distribuita pubblicamente nell'agosto 1996 e conteneva il codice completo di molti server, librerie e programmi di utilità. La versione 0.1 fu rilasciata il mese seguente e la 0.2 un anno dopo, nel 1997.
Negli anni successivi lo sviluppo fu piuttosto lento e gli aggiornamenti riguardarono principalmente GNU Mach, il microkernel, e GNU MIG, il generatore di interfacce di memoria. Tant'è che la versione successiva di Hurd (si passò direttamente alla 0.5) fu rilasciata nel settembre 2013, ben 16 anni dopo la versione 0.2.
I successivi rilasci furono più rapidi e la versione 0.6, orientata principalmente al miglioramento del codice e delle prestazioni, venne annunciata nell'aprile 2015, seguita solo sei mesi dopo dalla 0.7.
Nel 2016 sono state rilasciate due versioni: la 0.8 a maggio, e la 0.9 a dicembre.
Risulta ad oggi disponibile esclusivamente per l'architettura i386, sebbene tra il 2011 e il 2013 si sia lavorato per il porting a 64 bit che è stato completato per quanto riguarda la parte del kernel, ma senza che venisse mai concluso quello di GNU MIG.

## Descrizione

Ci si riferisce spesso a GNU Hurd come al «kernel del progetto GNU», ma tale definizione è inesatta. Il kernel è infatti la sola parte del sistema operativo che viene eseguita in kernel mode (cioè utilizza un sottoinsieme privilegiato delle istruzioni del processore), mentre GNU Hurd è formato da un insieme di server che non operano in kernel mode, interagendo tra loro utilizzando GNU Mach. Questi server implementano il file system, i protocolli di rete, i permessi degli utenti, e tutti gli altri servizi che vengono offerti da un kernel classico. Un sistema così concepito presenta molti vantaggi rispetto ad un kernel monolitico.
Per esempio, un microkernel come GNU Hurd consente modifiche, manutenzione ed estensioni delle sue funzionalità senza dover essere ricompilato completamente e, talvolta, senza nemmeno riavviare la macchina sulla quale è in esecuzione. In caso di crash di uno di questi server, il sistema può continuare a funzionare senza che avvenga il cosiddetto kernel panic.
Lo svantaggio principale è il maggior tempo che occorre per progettarlo e renderlo stabile. Infatti GNU Hurd, seppure sia funzionante, non ha ancora raggiunto un rilascio stabile, ed è uno dei motivi per cui il sistema operativo GNU si è storicamente diffuso congiuntamente ad altri kernel, come il kernel Linux.

### Nome

Hurd è un acronimo doppiamente ricorsivo che significa Hird of Unix-Replacing Daemons (Hird di demoni che sostituiscono Unix). E poi Hird sta per Hurd of Interfaces Representing Depth (Hurd di interfacce che rappresentano la profondità). Le parole hurd e hird non hanno alcun significato in lingua inglese, ma si pronunciano come la parola inglese herd, che significa branco, quindi GNU Hurd può significare "mandria di gnu".

### Caratteristiche

Una delle caratteristiche uniche di un sistema operativo GNU/Hurd è la possibilità di tradurre vari file system in modo totalmente trasparente per l'utente.
Ad esempio, è possibile tradurre il protocollo FTP come se fosse una qualsiasi directory locale:
La possibilità di effettuare punti di mount di qualsiasi tipo senza necessariamente essere l'utente root è compatibile con l'esempio precedente. È ad esempio possibile montare un'immagine disco .iso non realmente presente sul file system locale:
L'utente riesce ad elencare i file contenuti nell'immagine disco istantaneamente (nonostante quello specifico file .iso pesi circa di 600 MB) grazie al fatto che il traduttore riesce a sfruttare l'efficienza del formato .iso (ISO 9660) per scaricare via FTP soltanto la frazione del file .iso interessata.

## Distribuzioni basate su GNU Hurd

Non esiste una versione ufficiale di GNU distribuita congiuntamente ad Hurd, ma esistono alcune distribuzioni note che forniscono, o stanno lavorando per fornire, una versione basata su GNU Hurd:
* Debian GNU/Hurd: è attualmente l'unica distribuzione considerata "funzionante", sebbene non sia ancora pronta per un uso quotidiano poiché alcuni problemi nel port dei pacchetti Debian non sono ancora stati risolti. L'ultima versione di Debian GNU/Hurd è la Debian GNU/Hurd 2023 "bookworm", distribuita il 12 giugno del 2023. La distribuzione Debian segue strettamente lo sviluppo ufficiale di Hurd aggiungendo nuove caratteristiche.
* ArchHurd: distribuzione che punta a creare una versione di Arch non più basata sul kernel Linux, ma su GNU Hurd. L'ultima versione disponibile risale al 17 agosto 2011 ed è disponibile come LiveCD.