GNU Hurd

De WikiLingua.net

GNU hurd
Imagen:Hurd-logo.png
Desarrollador: Thomas Bushnell, Roland McGrath, Marcus Brinkmann
Model de desenvolupament: Programari lliure
Nucli: Mach
Tipus de nucli: Micronúcleo
Llicència: GPL
Última versió estable: k-14 / 2007
Estat actual: En desenvolupament
Lloc web: http://www.gnu.org/programari/hurd/hurd.html

GNU Hurd és un conjunt de programes servidors que simulen un nucli Unix que estableix la base del sistema operatiu GNU. El Projecte GNU ho ha estat desenvolupant des de 1990 com programari lliure, distribuint-ho sota la llicència GPL.

Hurd intenta superar els nuclis tipus Unix quant a funcionalitat, seguretat i estabilitat, àdhuc mantenint-se compatible amb ells. Això s'assoleix gràcies a que Hurd implementa l'especificació POSIX (entre altres), però eliminant les restriccions arbitrarias als usuaris.

Taula de continguts

[editar] Arquitectura

A diferència de la majoria de nuclis tipus Unix, Hurd s'erigeix damunt d'un micronúcleo (actualment només està suportat Mach, encara que va existir un projecte ara discontinuado per a poder executar Hurd en el micronúcleo de segona generació L4), responsable de facilitar-li els serveis d'un nucli més bàsics: coordinar l'accés al maquinari (a la CPU —mitjançant multiproceso—, a la memòria RAM —mitjançant gestió de memòria—, i a altres dispositius de so, gràfics, emmagatzematge, etc).

Hi ha altres sistemes tipus Unix que s'executen damunt del micronúcleo Mach, com OSF/1, NEXTSTEP, Mac USX , Lites i MkLinux. Tots ells estan implementados com un únic servidor. Per tant, substitueixen el nucli monolítico dels sistemes Unix tradicionals amb dos elements, el micronúcleo i el servidor Unix.

En canvi, Hurd consisteix en múltiples servidors executant-se simultàniament. En lloc d'un sol programa enorme que controli des del rellotge fins al maneig de la xarxa, en Hurd cadascuna d'aquestes tasques és gestionada per un servidor independent. Això fa que (teòricament, almenys) el desenvolupament d'Hurd sigui molt més fàcil, ja que és menys probable que el fer canvis en un servidor tingui efectes indeseados en altres servidors. D'aquí es deriva el doble acrónimo recursivo: la paraula Hurd és l'acrónimo d'Hird of Unix-Replacing Daemons (en espanyol: «Hird» de dimonis que reemplacen a Unix). Al seu torn el terme Hird significa Hurd of Interfaces Representing Depth («Hurd» d'interfaces que representen profunditat). Tant Hurd com Hird en anglès es pronuncien com herd (en espanyol: rajada), pel que GNU Hurd es podria traduir com «rajada de ñúes ».

En el disseny original de Mach una de les principals metes va ser aquest tipus de «conjunt de servidors», però sembla que Hurd és el primer en implementar aquest disseny sobre un micronúcleo Mach (encara que QNX és similar, però basat en el seu propi micronúcleo). No està clar per què no hi va haver cap implementación de múltiples servidors anterior, encara que sembla que els grups que treballaven en Mach estaven massa ocupats en aquest per a dedicar-se al sistema operatiu en la seva totalitat. Hurd intenta, a més, ser portable entre micronúcleos.

[editar] Extensions d'Unix

En Hurd un bon nombre de conceptes tradicionals d'Unix canvien o es potencien:

Sota Unix, cada programa que s'executa té associada una identitat d'usuari, que normalment es correspon amb l'usuari que va iniciar el procés. Aquesta identitat determina en gran mesura quina accions se li permet realitzar al programa. Cap procés extern pot canviar la identitat d'un programa que s'estigui executant. Un procés d'Hurd, per una altra part, s'executa associat a un conjunt d'identitats d'usuari, que pot contenir múltiples identitats, una, o cap. Un procés amb els suficients privilegis pot afegir o eliminar identitats d'un altre procés. Per exemple, existeix un servidor de contrasenyes que atorga identitats en resposta a una contrasenya d'usuari correcta.

Pel que fa al sistema de fitxers, es pot establir un programa adient com traductor per a un sol fitxer o una jerarquia de directoris sencera. Cada accés al fitxer traduït, o als fitxers en la jerarquia en el segon cas, són de fet manejats 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 enllaci simbòlic d'Unix. El muntatge d'Unix, en Hurd s'aconsegueix configurant un traductor de sistema de fitxers (usant el mandat settrans). Els traductors també es poden usar per a proporcionar serveis a l'usuari. Per exemple, el traductor ftpfs permet a un usuari encapsular un lloc FTP remot en un directori. Amb això, es poden usar programes estàndard com ls, cp o rm per a manipular fitxers en el lloc remot. Hi ha traductors fins i tot més potents, com UnionFS, que permet a un usuari unificar diversos directoris en un sol, de tal manera que al llistar aquest directori es mostra el contingut de tots els directoris unificats (una característica absent en la majoria d'Unices, encara que present en FreeBSD).

Potser la característica més potent d'Hurd és la possibilitat que qualsevol usuari executi els seus propis serveis de sistema. Un usuari pot assignar qualsevol traductor al sistema de fitxers per al seu ús personal. Fins i tot pot reemplaçar servidors del sistema, com el servidor d'autenticación, amb altres servidors de la seva elecció. Tot això es pot fer sense afectar als altres usuaris, gràcies a que els àmbits d'efecte estan bé definits. De fet, fins i tot és possible per a un usuari executar Hurd dintre de si mateix, el que es coneix com sub-Hurd.

[editar] Arquitectura dels servidors

Segons la documentació de Debian són els següents: [1]

  • auth: El servidor d'autenticación. Se li envien paris usuari/password i ell retorna un token. Juga un paper important ja que tots els altres servidors exigeixen que se'ls presenti algun token dels quals auth reparteix o rebutgen la trucada que se'ls demana.
  • crash: Servidor per a gestionar aplicacions que moren
  • exec: servidor per a la trucada exec
  • ext2fs: Servidor ext2fs
  • fifo: Traductor fifo
  • firmlink: Traductor firmlink
  • ftpfs: Traductor del sistema d'arxius ftp
  • fwd: Servidor fwd
  • hostmux: Servidor hostmux
  • ifsock: Servidor ifsock
  • init: Servidor init
  • isofs: Servidor del sistema d'arxius iso
  • magic: Servidor magic
  • new-fifo: Servidor new-fifo
  • nfs: Servidor nfs
  • null: Servidor null
  • pfinet: Servidor pfinet
  • pflocal: Servidor pflocal
  • proc: Servidor de processos
  • storeio: Traductor d'emmagatzematge
  • symlink: Traductor d'enllacis simbòlics
  • term: Servidor de terminal
  • ufs: Servidor d'ufs
  • usermux: Servidor usermux

Entre tots ells implementan la interfaz o API Single Unix Specification que és un superset de POSIX. En realitat, és la llibreria libc la qual implementa l'API POSIX, igual que en Linux, i Hurd dóna un interfaz proper però de més baix nivell.

La forma dels programes de cridar a l'hurd és a través del sistema de fitxers. Funcionen com un sistema de fitxers especial, semblat al \/proc de linux. Per exemple, si volem parlar amb el servidor auth mirarem en el directori on estigui muntat (/servers/auth) i farem cridades read/write sobre ell.

D'alguna forma, per tant, el servidor del sistema de fitxers és el qual fa d'interfaz de l'API també i sap a qual dels altres servidors de baix nivell manar les trucades. A baix nivell, quan es fa un open d'un d'aquests fitxers, el programa rep un ANEU que es diu en argot de l'hurd "port" [2] i que es comporta com un punt d'entrada al fs (alguna cosa com un parell de nombres major/minor en linux).

L'arquitectura de Mach obliga al fet que els drivers per als distints dispositius maquinari vagin compilados dintre del micronúcleo. Per tant Hurd no necessita portar el mateix la gestió de baix nivell de les interrupcions. En canvi sí que necessita traduir les assenyalis maquinari a senyals del sistema operatiu.

[editar] Arrencada

Necessitarem un boot loader que sigui multiboot compliant, com GRUB. Farem els següents passos (o configurarem el boot loader perquè els faci automàticament):

  • Carregar el micronúcleo en memòria.
  • Carregar un script perquè el micronúcleo arrencada l'Hurd. Pot arrencar-se a mà o carregués com si fos un mòdul de grub (comando module de GRUB). Hurd ve amb un script que es diu serverboot per a arrencar l'hurd complet.
  • Donar-li el control al micronúcleo, que ha d'estar capacitat per a executar scripts.

Amb això, el micronúcleo carregarà els servidors de l'hurd i els passarà el control.

[editar] Història del desenvolupament

El desenvolupament d'Hurd va començar en l'any 1990. Encara que Richard Stallman, fundador del projecte GNU, havia anunciat que esperava el llançament oficial del sistema operatiu GNU (també conegut com GNU/Hurd) abans de finals de 2002, això no va ser aconseguit, en part perquè es va començar a utilitzar el nucli de Linux.

[editar] Distribucions que usen Hurd

Actualment, hi ha almenys quatre distribucions de GNU/Hurd en preparació (Debian GNU/Hurd, Gentoo, Bee i A.T.L.D. GNU/Hurd), encara que cap ha publicat versions oficials.

[editar] Hurd NG

S'està intentant crear una nova versió de l'Hurd cridada NgHurd, aquest projecte va començar amb un intent de portar el micronúcleo L4 a Hurd la qual cosa ho hagués dotat d'una major velocitat entre altres característiques. Dit projecte va ser abandonat, per la qual cosa s'estan discutint les característiques per a aquesta nova versió des de zero, incloent el micronúcleo a utilitzar.


[editar] Vegi's també

[editar] Enllaços externs