# Hurd (kernel)

De Hurd is de kernel die sinds de jaren tachtig in ontwikkeling is voor het GNU-besturingssysteem. De Hurd is vrije software en wordt verspreid onder de voorwaarden van de GNU General Public Licence. De Hurd probeert bestaande Unix-varianten te overtreffen in capaciteiten en toch compatibel te blijven. Dit wordt bereikt door de POSIX-standaard te volgen.

## Architectuur

In tegenstelling tot de meeste Unixkernels (waaronder de Linuxkernel) is de Hurdkernel een zogenoemde microkernel, een kernel die slechts de meest basale services uitvoert, namelijk het coördineren van de hardware: de CPU, het werkgeheugen en vele andere apparaten zoals die voor geluid, beeldbesturing en massaopslag (USB).
De GNU Machkernel wordt als microkernel gebruikt. Van 2002 tot 2006 was er een poging om deze te vervangen door de betere L4-kernel. Deze poging mislukte.
Er draaien ook andere Unix-achtige systemen op de Machkernel, bijvoorbeeld: OSF/1, NeXTStep, Mac OS X, Lites en MkLinux. Deze systemen hebben gemeen dat ze geen monolithische kernel hebben die gebruikelijk is bij Unix-achtigen, maar deze gesplitst hebben in een microkernel en een zogenaamd Unixserverdeel.
De Hurd bestaat echter uit meerdere van zulke samenwerkende servers. In plaats van één groot stuk code dat alles regelt, van de klok tot het netwerk, heeft de Hurd voor elke taak een aparte server. Dit maakt ontwikkeling een stuk gemakkelijker (althans in theorie), want een verandering in de code zal weinig tot geen effect hebben op andere servers.
Het oorspronkelijke doel van Mach was het creëren van zulke servers, maar de Hurd was het eerste systeem dat dit ook daadwerkelijk implementeerde. Het is niet volledig duidelijk waarom het gebeurde, maar men scheen het drukker te hebben met het ontwikkelen van de Machkernel dan met het ontwikkelen van het gehele besturingssysteem.

### Naam

Het naast elkaar bestaan van vele stukken software (zie boven) verklaart de naam Hurd, een afkorting voor: "Hird of Unix-Replacing Daemons", waarin "Hird" weer een afkorting is voor: "Hurd of Interfaces Representing Depth". Dit is een speciaal geval van een recursief acroniem. Beide woorden (hurd en hird) zijn verzonnen Engelse woorden die hetzelfde klinken als herd (kudde), waarmee de naam ook verwijst naar de dieren (gnoes) in de naam van het moederproject.

## Unix-uitbreidingen

Een paar typische Unix-eigenschappen worden in de Hurd vervangen of uitgebreid:
Onder Unix heeft elk programma een user id dat normaal overeenkomt met de gebruiker die het proces gestart heeft. Dit id bepaalt in hoge mate wat het programma kan en mag doen. Een ander proces kan het id van dit programma niet veranderen. Een Hurdproces draait op verschillende id's, dit kan een of meerdere id's inhouden, of zelfs geen. Een proces met voldoende rechten kan de id's van andere processen veranderen. Bijvoorbeeld: er is een wachtwoordserver die id's vrijgeeft na het invoeren van het correcte wachtwoord.
Wat betreft bestandssystemen, een programma kan ontworpen worden om te fungeren als vertaler voor één enkel bestand of voor een volledige directorystructuur. Elke toegang tot het vertaalde bestand of de andere bestanden in die directory wordt geregeld door dat programma. Bijvoorbeeld: een bestandsvertaler kan de lees/schrijf-operaties verplaatsen naar een ander bestand, niet veel anders dan in een symbolic link in Unix. Wat in Unix mounten genoemd wordt, wordt in de Hurd bereikt door zulke bestandsvertalers. Zulke vertalers kunnen ook gebruikt worden om gebruikers services te verlenen. Voorbeeld: de vertaler ftpfs wordt gebruikt om FTP-sites 'in te vangen' in een bestand. Dan kunnen standaardgereedschappen als ls, cp en rm gebruikt worden om files in dat bestand te reguleren. Een nog krachtigere vertaler is bijvoorbeeld Shadowfs, die meerdere geschaduwde structuren in een bestand kan opslaan, zodat het bestand de geschaduwde bestanden tevoorschijn haalt: een groot gebrek in Unix.
De krachtigste functie van de Hurd is misschien wel dat een gebruiker zijn eigen systeemservices kan starten. Elke gebruiker kan elke vertaler op een bestandssysteem zetten voor zijn eigen persoonlijke gebruik. Een gebruiker zou zelfs systeemservices, bijvoorbeeld de auth-server, kunnen vervangen door een server van zijn keuze. Dit kan allemaal gedaan worden zonder andere gebruikers daarmee te beïnvloeden, dit vanwege duidelijk vastgestelde gebruikersgebieden. Het is zelfs mogelijk een Hurd binnen een Hurd te draaien: dit staat bekend als een sub-Hurd.
De Hurd heeft een multi-bootloader nodig, bijvoorbeeld GRUB.

## Ontwikkelgeschiedenis

Er zijn twee Hurd-gebaseerde distributies in ontwikkeling:
* Arch Hurd
* Debian GNU/Hurd
Richard Stallman, van het GNU-project, had aangekondigd dat de eerste release van Debian GNU/Hurd eind 2002 zou plaatsvinden, maar dat is nog steeds niet gebeurd. Tot 2006 was er ook Gentoo/Hurd, maar de ontwikkeling hiervan werd stopgezet.
In 2003 kende de Hurd een langzame ontwikkeling en grote hardwarebeperkingen (zoals het ontbreken van geluid, en een oudere beperking waarin je geen grotere partities kon hebben dan 1,5 GB). Dankzij het Debian-project heeft men al een groot deel van deze beperkingen overwonnen en de verwachting is dat zodra men hiermee klaar is het een erg functionele kernel zal zijn voor het GNU-systeem.
Het is daarnaast mogelijk om Linux-drivers te gebruiken in de userspace van Hurd. Hurd ondersteunt anno 2014 ongeveer 79% van de Debian-pakketten.