# GNU Hurd

El GNU Hurd és un nucli (kernel en anglès) tipus Unix que constitueix la base del sistema operatiu GNU. El Projecte GNU l'ha estat desenvolupant des del 1990 com a programari lliure, distribuint-lo sota la GPL. El Hurd intenta superar els nuclis tipus Unix pel que fa a la funcionalitat, seguretat i estabilitat, però mantenint-se compatible amb ells. Això s'aconsegueix, ja que el Hurd implementa l'especificació POSIX (entre altres), però eliminant les restriccions arbitràries als usuaris.
El nom prové del doble acrònim recursiu: la paraula Hurd és l'acrònim de Hird of Unix-Replacing Daemons (en català: "Hird" de dimonis que substitueixen Unix). Alhora, el terme Hird significa Hurd of Interfaces Representing Depth ("Hurd" d'interfícies que representen profunditat). Tant Hurd com Hird en anglès es pronuncien com herd (en català: ramat), per la qual cosa GNU Hurd es podria traduir com a «ramat de nyus».

## Arquitectura

A diferència de la majoria de nuclis tipus Unix, el Hurd es construeix sobre un microkernel, responsable de facilitar-li els serveis d'un nucli més bàsics: coordinar l'accés al maquinari (a la CPU —mitjançant multiprocés—, a la RAM —mitjançant gestió de memòria—, i a altres dispositius de so, gràfics, emmagatzematge, etc.). Actualment s'està utilitzant el GNU Mach com a microkernel, però s'està treballant per a poder executar el Hurd sobre el microkernel de segona generació L4.
Hi ha d'altres sistemes operatius tipus Unix que s'executen sobre el microkernel Mach, com l'OSF/1, el NEXTSTEP, el Mac OS X, el Lites i el MkLinux. Tots ells estan implementats com un únic servidor. Per tant, substitueixen el kernel monolític dels sistemes Unix tradicionals per dos elements, el microkernel i el servidor Unix.
En canvi, el Hurd està format per múltiples servidors executant-se simultàniament. En lloc d'un sol programa enorme que controli des del rellotge fins a la gestió de la xarxa, al Hurd cadascuna d'aquestes tasques és gestionada per un servidor independent. Això fa que (com a mínim teòricament) el desenvolupament del Hurd sigui molt més fàcil, ja que és menys probable que en fer canvis en un servidor, això tingui efectes no desitjats en altres servidors.
Al disseny original del Mach, una de les principals fites fou aquest tipus de «conjunt de servidors», però sembla que el Hurd és el primer a implementar aquest disseny sobre un microkernel Mach (tot i que QNX és similar, però basat en el seu propi microkernel). No és clar per què no hi va haver cap implementació de múltiples servidors anterior, tot i que sembla que els grups que treballaven en el Mach estaven massa centrats en aquest per a dedicar-se al sistema operatiu completament. El Hurd intenta, a més, ser portable entre microkernels.

### Extensions d'Unix

Al Hurd canvien o es potencien un bon nombre de conceptes tradicionals d'Unix:
Sota Unix, cada programa que s'executi té associat una identitat d'usuari, que normalment es correspon amb l'usuari que hagi iniciat el procés. Aquesta identitat determina en gran manera quines accions se li permeten realitzar, al programa. Cap procés extern pot canviar la identitat d'un programa que s'estigui executant. Un procés del Hurd, per altra banda, s'executa associat a un conjunt d'identitats d'usuari, que pot contenir múltiples identitats, una, o cap. Un procés amb prou privilegis pot afegir o eliminar identitats d'un altre procés. Per exemple, existeix un servidor de contrasenyes que atorga identitats com a resposta a una contrasenya d'usuari correcta.
Pel que fa al sistema de fitxers, es pot establir un programa adequat com a traductor per a un sol fitxer o una jerarquia de directoris sencera. Cada accés al fitxer traduït, o als fitxers a la jerarquia en el segon cas, serà gestionats per aquest programa. Per exemple, un traductor de fitxers pot simplement redirigir les operacions de lectura i escriptura cap a un altre fitxer, no com un enllaç simbòlic d'Unix. El muntatge d'Unix, al Hurd s'aconsegueix configurant un traductor de sistema de fitxers (utilitzant la comanda settrans). Els traductors també es poden utilitzar per a proporcionar serveis a l'usuari. Per exemple, el traductor ftpfs permet a un usuari encapsular un lloc FTP remot en un directori. Així, es podran utilitzar programes estàndard com ls, cp o rm per a manipular fitxers al lloc remot. Hi ha traductors encara més potents, com UnionFS, que permeten a un usuari unificar diversos directoris en un de sol, de tal forma que en llistar aquest directori es mostri el contingut de tots els directoris unificats (una característica absent a la majoria d'Unixos, tot i que present a FreeBSD).
Potser la característica més potent del Hurd és la possibilitat que qualsevol usuari executi els seus propis serveis del sistema. Un usuari pot assignar qualsevol traductor al sistema de fitxers per al seu ús personal. Fins i tot pot substituir servidors del sistema, com el servidor d'autenticació, amb altres servidors que hagi triat. Tot això es pot fer sense afectar d'altres usuaris, gràcies al fet que els àmbits d'efecte estan ben definits. De fet, fins i tot és possible per a un usuari executar un Hurd dins de si mateix, cosa que es coneix com a sub-Hurd.
El Hurd necessita un gestor d'arrancada compatible amb multiarrancades, com el GRUB.

## Història del desenvolupament

El desenvolupament del Hurd va començar el 1990.
Hi ha un mínim de tres distribucions de GNU/Hurd en preparació, tot i que cap ha estat publicada oficialment a part de per a gent interessada a provar-les o contribuir al seu desenvolupament. Tot i que Richard Stallman, del projecte GNU, havia anunciat que esperava el llançament oficial del SO GNU (també conegut com a GNU/Hurd) abans de les darreries del 2002, no s'ha aconseguit.
El 2004, el Hurd té un desenvolupament lent i algunes limitacions respecte al maquinari importants (per exemple, la carència de so i, anteriorment, la falta de compatibilitat amb particions majors d'aproximadament 2 gigabytes). Gràcies al suport creixent del projecte Debian, entre d'altres, aquestes limitacions estan sent eliminades. La pròxima transició al microkernel L4 (i l'intent de fer al Hurd independent del microkernel sobre el que s'executi), tot i que exigirà un redisseny de diversos elements del Hurd, podria començar a accelerar el seu desenvolupament. Un cop el Hurd hagi superat les seves importants limitacions actuals, s'espera que sigui un microkernel realment funcional per als sistemes GNU.

## Vegeu també

* Free Software Foundation

## Enllaços externs

* Plana oficial del Hurd
* Llistes de correu sobre Hurd del projecte GNU
* Distribució Hurd de Debian