El teu blog de Linux en català

Què és el Hurd?

Segurament, la majoria dels qui seguiu aquest bloc sou usuaris de sistemes GNU/Linux, encara que habitualment ho simplifiquem dient que són sistemes «Linux». Però, què vol dir exactament «GNU/Linux»? Bàsicament (i resumint una mica), «GNU» són les eines que ens proporciona el sistema per a comunicar-nos amb ell. Formen part de GNU, per exemple, moltes de les ordres de terminal que executem, i moltes de les llibreries que els programes que tenim instal·lats utilitzen. Un dels components més important del sistema GNU és el nucli (kernel en anglès), que s’encarrega bàsicament de comunicar-se amb la màquina. En el cas de «GNU/Linux», per exemple, tenim un sistema «GNU» que treballa sobre un nucli «Linux».

Però GNU també pot utilitzar altres nuclis. Ja hem parlat d’alguns d’ells, com ara Solaris (el que donaria lloc a un sistema «GNU/Solaris»), FreeBSD («GNU/kFreeBSD»), etc. Tots aquests nuclis fan bàsicament les mateixes coses que el nucli Linux, però amb una implementació diferent. És a dir, estan programats de forma diferent per a fer el mateix (que el nostre sistema funcioni amb unes especificacions comunes). Per sobre d’aquest nucli, el sistema és un GNU, de manera que la nostra interacció amb un sistema GNU/Solaris ha de ser igual que amb un GNU/Linux. En aquesta anotació, donarem unes breus pinzellades sobre un nucli molt concret: el Hurd.

Logo del Hurd

Logo del Hurd

Hurd és un nucli encara en fase de desenvolupament i, a diferència dels altres nuclis, està sent programat pels propis desenvolupadors del projecte GNU. És a dir, hauria de ser el nucli oficial de GNU si estigués acabat.

La majoria de nuclis utilitzats actualment són monolítics. És a dir, en un sistema GNU/Linux actual el nucli Linux és «un únic programa» molt gran. En canvi, el nucli Hurd és modular. És a dir, té un mòdul central, el microkernel, que s’encarrega de les parts bàsiques del nucli, i múltiples «servidors» (cadascun encarregat d’una tasca concreta) que es comuniquen amb el microkernel i entre ells. Tot aquest conjunt (microkernel + servidors) és el que conforma el nucli Hurd.

El microkernel de Hurd és molt més petit que el kernel de Linux. Actualment, Hurd utilitza un microkernel anomenat Mach. Es va intentar portar Hurd al microkernel L4, però els problemes que es van trobar els van fer tornar a Mach. Quant als servidors, la documentació actual en contempla 24 (18 servidors «core» i 6 servidors de sistema de fitxers).

Quins avantatges té aquesta arquitectura modular vers la monolítica? D’una banda, aïlla els elements entre sí. La modificació d’un dels servidors de Hurd no hauria d’afectar a la resta de servidors i, per tant, el sistema hauria de ser més estable. A més, això dóna més flexibilitat al sistema. En un nucli Hurd, hi podria haver diferents implementacions d’un mateix servidor del nucli, de manera que nosaltres podríem escollir quin utilitzar. Bé, és poc probable que nosaltres mateixos escollim una implementació diferent d’un servidor del nucli, però sí seria més probable que una distribució ens proporcionés un nucli Hurd amb algun servidor (per exemple, el servidor d’autentificació) proveït per un desenvolupador que no fos GNU.

La darrera versió del nucli Hurd és d’octubre del 2009 i, malgrat que el sistema és usable, encara s’hi produeixen ocasionalment problemes greus d’inestabilitat (errors de programes, caigudes de sessió o fins i tot caigudes de tot el sistema). O sigui, que de moment no és un sistema que puguem tenir en producció, o com al nostre únic entorn de treball. Podeu veure un informe d’usabilitat en aquest enllaç.

Però, com podem provar un sistema GNU/Hurd? Hi ha diverses distribucions que ja han tret versions dels seus sistemes amb nucli Hurd. És a dir, que ens ofereixen sistemes GNU/Hurd. D’aquests, segurament el més estable en l’actualitat és el de Debian, però també teniu sistemes GNU/Hurd d’Arch i de Gentoo.

Tot i que el nucli Hurd ja porta temps en desenvolupament (va començar el 1990), sembla que aquest és molt lent. Darrerament, el fet que algunes distribucions importants hagin tret les seves versions de sistemes GNU/Hurd sembla que hagi fet revifar una mica el projecte, però realment a aquest nucli encara li falta bastant per tenir l’estabilitat necessària en un entorn de producció.

    • Epíleg on 6 d'octubre de 2010 at 21:17

    Reply

    Algú ha aconseguit instaŀlar Debian Hurd a VirtualBox?

      • oriolsbd on 6 d'octubre de 2010 at 21:53
      • Author

      Reply

      Jo ho vaig provar no fa massa, i no vaig poder. També és cert que no hi vaig poder dedicar gaire temps. A l’hora de fer les particions des de l’instal·lador no em desava els canvis de particions en el disc.

      Quan tingui una mica de temps, vull provar el que he trobat aquí:
      http://www.esdebian.org/wiki/debian-gnuhurd-virtualbox

      Salut!

        • Epíleg on 6 d'octubre de 2010 at 22:11

        Reply

        ah, doncs això ja ho he solucionat. Has de canviar el controlador SATA del disc dur (per defecte) per un d’IDE. Després de fer això ja et permet crear i desar les particions sense problemes.
        Si te’n surts amb la instaŀlació, comenta-ho per aquí.

          • oriolsbd on 7 d'octubre de 2010 at 07:14
          • Author

          Reply

          Moltes gràcies!!! Li vaig estar donant moltes voltes, i no hi havia manera de tirar endavant. Ara sí.

          Si puc instal·lar Debian Hurd a VirtualBox, escriuré una anotació, i ja de pas us penjaré una imatge de VirtualBox, perquè el pugueu provar directament. 🙂

            • Epíleg on 15 d'octubre de 2010 at 16:22

            Bé, he mig aconseguit instaŀlar el Debian hurd a virtualbox. Poso els passos que he seguit:
            -Descarregar aquesta imatge:
            http://ftp.debian-ports.org/debian-cd/current/debian-L1-hurd-i386-mini.iso
            Dins d’aquesta imatge n’hi ha una altra que s’ha d’extreure:
            install/grub-94.iso
            Crea una nova màquina virtual amb un disc de 3 gb. La mida és opcional, jo faré la instaŀlació en una única partició.
            A la nova màquina virtual hem de canviar la controladora del disc dur, de SATA (per defecte) a IDE. Com a CD/DVD (IDE esclau) hem de muntar el fitxer imatge «debian-L1-hurd-i386-mini.iso». Hem d’habilitar l’oopció IO APIC. Per últim hem de canvia el dispositiu de xarxa, de «Intel PRO/1000 MT» a «PCnet-PCI II».
            Iniciem la màquina sense opcions, i un cop al menú:
            – Seleccionem el nostre teclat, en el meu cas qwerty/es
            -Creem les particions dels disc. La primera, de 2gb. al principi, i la segona amb la resta (uns 1200 mb.). Hem de canviar el tipus d’aquesta segona de «Linux» a «Linux Swap» (és el tipus 82 de la llista que surt). Desem i sortim.
            -Inicialitzem i activem la partició swap (/dev/hda2)
            -Inicialitzem la partició GNU/Hurd (/dev/hda1) , i quan s’ens demani la muntem com a arrel «/».
            -Instaŀlem el sistema base des del CD-ROM a la ubicació que ens dona per defecte. Tant simple com prémer 4 cops la tecla Enter.

            Un cop fet això, reiniciem la màquina previ canvi de la imatge de CD/DVD «debian-L1-hurd-i386-mini.iso» per «grub-94.iso».
            Quan s’inicii, triem la opció «IDE single-user», la quarta. Tingueu paciència ja que triga una mica i fa parades que sembla que s’ha penjat, i no és així.
            Un cop rebeu la línia d’ordres aneu a l’arrel, si no hi sou:
            # cd /
            i després executeu
            # ./native-install
            El teclat és l’americà i no sé com canviar-lo (si algú ho sap…), o sigui que per escriure:
            / tecla –
            – tecla ‘
            el punt és la mateixa tecla
            en cas de dubte, investigueu 😉
            El procés us demanarà que especifiqueu la vostra ubicació, i també us demanarà la configuració del grub, i posterior actualització al grub2. Aquest és la segona cosa que no he aconseguit solucionar, no sé com fer que el grub s’instaŀli correctament al disc de la màquina virtual. Si algú s’en surt…
            Un cop acabat el procés reiniciem, amb «grub-94.iso».
            # reboot
            però aquest cop entrem amb l’opció «IDE multi-user» tercera opció, i a esperar…
            quan rebis accés, escriu:
            login> login root
            ara creem els dispositius necessaris, si no existeixen:
            # cd /dev/
            això:
            # ls h*
            Hauria de retornar:
            hd0
            llavors fer:
            # ./MAKEDEV hd0s1 hd0s2
            Si algun del fitxer/dispositiu ja existeix, no crear-lo.
            ara activem les particions a «fstab»
            # nano /etc/fstab
            descomentem les línies de les dues particions «/» i «swap», tenin em compte que «/» és /dev/hd0s1, i «swap» /dev/hd0s2, si has creat les particions tal com ho hem fet en aquest manual. Desem amb Control+X, Y, Enter.
            Si hem modificat aquest fitxer, haurem de reiniciar un altre cop la màquina virtual.
            Per saber si la partició swap s’ha montat i funciona fem això:
            # swapon /dev/hd0s2
            Si ens diu que ja està en funcionament, tot correcte, si no ho diu, malament, alguna cosa no hem fet be.
            Ara activarem la tarja de xarxa, tot fen això:
            # settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 -a 10.0.2.15 -g 10.0.2.255 -m 255.255.255.0
            ara hem de especificar els servidors DNS de la nostra connexió:
            # nano /etc/resolv.conf
            simplement canvia les ip’s que hi ha per la dels teus servidors DNS’s.
            un cop fet això, Control+X, Y, Enter.
            Ara canviarem els repositoris:
            # nano /etc/apt/sources.list
            si hi han entrades les comentem o esborrem, i afegim aquestes dues línies:
            deb http://ftp.debian-ports.org/debian unreleased main
            deb http://ftp.debian.org/debian unstable main
            Després: Control+X, Y, Enter.
            Ara actualitzem:
            # apt-get update
            # apt-get upgrade
            I això és tot el que jo he aconseguit fer funcionar

            • Epíleg on 15 d'octubre de 2010 at 17:45

            actualització:
            després d’actualitzar:
            # apt-get update
            # apt-get upgrade
            es pot instaŀlar el grub al mbr del disc dur de la màquina virtual sense problemes! 🙂
            # grub-install /dev/hd0
            ara només cal desactivar la imatge de CD/DVD «grub-94.iso», i si tot ha anat bé, el sistema arrancarà correctament.

            Salut,

    • Ruig on 6 d'octubre de 2010 at 23:12

    Reply

    Sempre he trobat molt interessant el projecte Hurd. És una llàstima que no rebi el recolzament que es mereix, perquè podria ser un gran nucli.

    Però bé… També, si no recordo malament, era molt complex de desenvolupar per la seva estructura modular i això havia influït en la seva falta de suport i la lentitud de desenvolupament. Algú que en sàpiga ho pot confirmar?

    • Marc Poch on 7 d'octubre de 2010 at 00:01

    Reply

    Jo també indicaria que un dels inconvenients dels microkernels és la comunicació entre els seus servidors, que relenteixen el sistema (recordem que estem parlant a nivell de kernel on les coses han d’anar al màxim ràpid possible).

    Pel que fa al projecte Hurd en concret… No sé, primer Mach, després L4, altre cop Mach, ara es miren també Viengoos… Haurien de saber que prenguin la decisió que prenguin sempre apareixeran pegues (encara que també és bo provar les alternatives… però clar, això implica invertir temps).

    Personalment, el camí més fiable cap als microkernels és mica en mica anar convertint el monolític Linux en un conjunt de servidors (en un microkernel i els seus serveis). Passos que (crec) anirà adquirint per pròpia evolució.

    Salut!

      • David Martí on 7 d'octubre de 2010 at 09:37

      Reply

      Quines grans classes d’Estructura i Disseny de Sistemes Operatius no?

        • Marc Poch on 7 d'octubre de 2010 at 11:30

        Reply

        I les entrebancades que un es troba provant les frikades dels altres 😉

    • oriolsbd on 7 d'octubre de 2010 at 07:28
    • Author

    Reply

    En principi, pel que comenten els propis desenvolupadors, aquesta arquitectura modular fa una mica més complicat el desenvolupament «el primer cop», però després el manteniment hauria de ser més senzill. El que sí complica molt les coses és el que comenta el Marc: la comunicació entre servidors. A més, això provoca (com el Marc mateix indica) problemes de rendiment.

    De moment, el que estan fent perquè el rendiment no es vegi afectat és fer que algunes de les tasques que haurien de ser assumides pel servidor siguin realitzades pel microkernel. Però clar, amb això es perd una mica la filosofia de nucli modular.

    El canvi de Mach a L4 era per diversos motius. D’una banda, el projecte Hurd volia tenir un microkernel de segona generació, com L4. El Mach ja era una mica antic, i ningú no el mantenia. Actualment, Hurd no utilitza el microkernel Mach original, sinó que realment utilitzen el GNU Mach, que parteix de l’original, i del qual GNU n’han assumit el manteniment. A més, també volien canviar de microkernel per intentar que Hurd pogués treballar amb diferents microkernels, i no estar lligat a un microkernel concret.

    Sobre el Viengoos, no n’havia sentit gairebé res. Només una petita referència. 🙁

    El que comenta el Marc en darrera instància també em sembla molt interessant. No partir d’un nucli modular, sinó que el propi nucli de Linux es vagi fent modular. Però clar, això depèn d’una persona (Linus Torvalds), i no sé si de moment ha fet massa moviments per a que així sigui. Tot i que darrerament s’ha queixat més d’un cop que el nucli Linux és massa gran, o sigui que fer que el seu nucli sigui modular podria ser la solució.

      • Marc Poch on 7 d'octubre de 2010 at 12:05

      Reply

      Hola Oriol,

      Estic en desacord que per a veure un microkernel a partir de Linux tot depengui d’en Linus Torvalds. Ja que el nucli Linux és codi obert: és qüestió d’agafar i fer un fork del nucli Linux i convertir-lo en microkernel (quasi res xD) (i clar, aleshores no es podria dir Linux… però bé, és lo de menys… I també, segons com li piquessin les mosques, hi hauria el senyor Linus Torvalds renegant d’aquest fork… però això ja és un estat habitual: lo estrany és no sentir-lo renegar).

        • oriolsbd on 7 d'octubre de 2010 at 18:45
        • Author

        Reply

        Tens raó, no havia pensat en la possibilitat de fer-lo com un fork a partir de Linux. 🙂

Deixa un comentari

Your email address will not be published.