GNU Hurd
GNU Hurd | |||
---|---|---|---|
Utvikler(e) | GNU-prosjektet, Thomas Bushnell | ||
Nyeste versjon | 0.9 (stabil versjon; 18. desember 2016)[1] | ||
Plattform | IA-32 | ||
Skrevet i | C, assembler | ||
Lisens | GPL 2.0+[2][3] | ||
Nettsted | https://www.gnu.org/software/hurd/ |
GNU Hurd, også kalt the Hurd, er en fri og åpen operativsystemkjerne for datamaskiner, utgitt under GNU General Public License. Det har vært under utvikling siden 1990 av GNU-prosjektet til Free Software Foundation. Det består av et sett med tjenere (eller daemoner i Unix-terminologi) som virker over en mikrokjerne. Sammen utgjør de kjernen i GNU. Hurds mål er å overgå Unix kjerner i funksjonalitet, sikkerhet og stabilitet, samtidig som den skal fortsette å være kompatibel med dem.
HURD er et korekursivt akronym som står for «HIRD of Unix-Replacing Daemons», hvor «HIRD» står for «HURD of Interfaces Representing Depth». Det spiller også på ordene «herd» (engelsk for «flokk») med gnuer, med tanke på hvordan kjernen virker.[4]
Utviklingshistorie
[rediger | rediger kilde]Operativsystemet GNU ble påbegynt i 1984 og utviklet seg raskt. I begynnelsen av 1990-årene, var den eneste store komponenten som manglet kjernen.[5]
Utviklingen av Hurd begynte i 1990.
Arkitektur
[rediger | rediger kilde]Hurd er, i motsetning til majoriteten av Unix-like kjerner, bygget på en mikrokjerne som er ansvarlig for å tilby de mest elementære tjenestene, som å koordinere tilgang til maskinvaren. I teorien ville mikrokjernedesignet tillate at alle enhetsdrivere ble bygget som tjenere som virker i brukernivå, men i dag er de fleste driverne av denne typen fortsatt beholdt inne i GNU Mach, mikrokjernen som benyttes i dag. Det er fordi initielt ville brukernivå-drivere ha lidd av ytelsesproblemer.[6]
Valg av mikrokjerne
[rediger | rediger kilde]Foreløpig bruker Hurd GNU Mach som mikrokjerne, men det gjøres en innsats for å portere Hurd til en mer moderne mikrokjerne. Det har foreløpig ikke blitt tatt noe valg, men mesteparten av Hurd utviklernes tid har gått med til å vurdere Coyotos,[7] særlig siden 2006.
Unix-utvidelser
[rediger | rediger kilde]Et antall tradisjonelle Unix-konsepter blir erstattet eller utvidet i Hurd.
Under Unix, har hvert program som kjører en tildelt brukerid, som vanligvis svarer til brukeren som startet prosessen. Denne identifikasjonen dikterer handlingene som programmet tillates å gjøre. Ingen utenforstående prosess kan ender bruker-id-en til et kjørende program. En Hurd prosess kjører i motsetning under et sett med bruker-id-er, som kan inneholde flere id-er, en eller ingen. En tilstrekkelig privilegert prosess kan legge til og fjerne id-er til andre prosesser. For eksempel er det en passordtjener som kan gi ut id-er i bytte mot et korrekt innloggingspassord.
Når det gjelder filsystemet, kan et passende program skrives som en oversetter for en enkelt fil eller et helt katalog-hierarki. Hver eneste tilgang til den oversatte filen, eller tilene under et hierarki, er faktisk håndtert av programmet. For eksempel kan en filoversetter delegere lese og skrive operasjoner til en annen fil, ikke ulikt en symbolsk lenke i Unix. Effekten av Unix motering blir oppnådd ved å sette opp en filsystemoversetter (ved å bruke «settrans» kommandoen). Oversettere kan også brukes for å tilby tjenester til brukeren. For eksempel tillater ftpfs-oversetteren at en bruker innkapsler en ekstern FTP side i en katalog. Så kan vanlige verktøy som ls, cp og rm benyttes for å manipulere filer på det eksterne systemet. En oversetter som UnionFS tillater en bruker å forene flere kataloger i én, slik at å vise innholdet i den forente katalogen viser innholdet i alle katalogene.
Hurd krever en boot loader som har mulighet for multiboot, slik som GRUB.
Arkitekturen til tjenere
[rediger | rediger kilde]Ifølge Debian dokumentasjonen er det 24 tjenere (18 kjerne-tjenere og 6 filsystem-tjenere) oppkalt som følger:[8]
Versjonshistorikk
[rediger | rediger kilde]Versjon | Lansert | GNU Mach | GNU MIG | Størrelse i bytes[9][10] |
Merknader |
---|---|---|---|---|---|
0.0 | 6. august 1996 | 5 437 440 | |||
0.1 | 7. september 1996 | 5 591 040 | [11] | ||
0.2 | 12. juni 1997 | 1.1.3 | 6 400 000 | [11] | |
0.5 | 27. september 2013 | 1.4 | 1.4 | 13 066 240 | [11][12] |
0.6 | 10. april 2015 | 1.5 | 1.5 | 13 486 080 | [13][14] |
0.7 | 31. oktober 2015 | 1.6 | 1.6 | 13 547 520 | [15][16] |
0.8 | 18. mai 2016 | 1.7 | 1.7 | 13 670 400 | Biblioteket netfs ble fjernet. Netfs benyttet primitiver for låsløs referansetelling for peropen og nodeobjekter. Også låsen for global referansetelling ble fjernet. Hashingbiblioteket som tidligere bare brukte heltall, kan nå også benytte flyttallsnøkler. Det benyttes nå i nodecachen til libdiskfs og nfs og av oversetteren ftpfs. Tilføyelse av en devnode-oversetter og hurd-slab library[17][18] |
0.9 | 12. desember 2016 | 1.8 | 1.8 | 13 854 720 | Oppstartsprogrammet kan nå kjøre som en uprivilegert bruker. En multiplexer for Ethernet ruter trafikken mellom virtuelle grensesnitt og Ethernet, mens Berkeley Packet Filter Library (libbpf) genererer Ethernet-adresser for virtuelle grensesnitt. Bedre POSIX-kompatibilitet.[19][20] |
GNU/Hurd-baserte distribusjoner
[rediger | rediger kilde]Se også
[rediger | rediger kilde]Referanser
[rediger | rediger kilde]- ^ «GNU Hurd 0.9, GNU Mach 1.8, GNU MIG 1.8 released.» (på engelsk). Besøkt 11. mai 2018.
- ^ https://git.savannah.gnu.org/cgit/hurd/hurd.git/tree/COPYING?h=v0.9.git20201127; besøksdato: 26. desember 2020.
- ^ https://git.savannah.gnu.org/cgit/hurd/hurd.git/tree/version.h.in.
- ^ http://www.gnu.org/software/hurd/hurd.html#name
- ^ http://www.gnu.org/gnu/linux-and-gnu.html
- ^ http://lists.gnu.org/archive/html/bug-hurd/2007-03/msg00089.html
- ^ http://lists.gnu.org/archive/html/l4-hurd/2006-07/msg00004.html
- ^ hurd-doc-server
- ^ Index of /gnu/hurd/old/[død lenke], mirror.clarkson.edu, besøkt 14. september 2019
- ^ Index of /gnu/hurd/ Arkivert 8. november 2019 hos Wayback Machine., mirror.clarkson.edu, besøkt 14. september 2019
- ^ a b c index: hurd/hurd.git, Version 0.5 (2013-07-27), git.savannah.gnu.org, 27. september 2013
- ^ Thomas Schwinge: Happy 30th birthday, GNU! GNU Hurd 0.5 released, Thomas Schwinge, 28. september 2013
- ^ index: hurd/hurd.git, Version 0.6 (2015-04-10), git.savannah.gnu.org, 10. april 2015
- ^ Thomas Schwinge: GNU Hurd 0.6 released, mail-archive.com, 15. april 2015
- ^ index: hurd/hurd.git, Version 0.7 (2015-10-31), git.savannah.gnu.org, 31. oktober 2015
- ^ GNU Hurd 0.7 released, gnu.org, 31. oktober 2015
- ^ index: hurd/hurd.git, Version 0.8 (2016-05-18), git.savannah.gnu.org, 18. mai 2015
- ^ GNU Hurd/news/2016-05-18-releases, 18. mai 2016
- ^ index: hurd/hurd.git, Version 0.9 (2016-12-18), git.savannah.gnu.org, 18. desember 2015
- ^ GNU Hurd/news/2016-12-18-releases, gnu.org, 18. desember 2016
Litteratur
[rediger | rediger kilde]Kjerne tjenere
[rediger | rediger kilde]- auth (autentiseringstjener) : Den mottar forespørsler og passord fra programmer og gir dem en ID, som endrer privilegier til programmer.
- crash (krasj-tjener):
- exec (kjøre-tjener): Oversetter en kjørbar fil til et kjørbart område i minnet. (I dag er ELF og a.out støttet).
- fifo (FIFO-oversetter):
- new-fifo (ny FIFO-tjener)
- firmlink (firmlink-oversetteren):
- fwd («forward»-tjener)
- hostmux (vert-multipleks-tjener);
- ifsock (tjener for «sockets»-grensesnittet):
- init (initialiseringstjener)
- magic («magic»-tjeneren)
- null («null»-tjener): implementerer /dev/null og /dev/zero
- pfinet (pfinet-tjener)
- pflocal (pflocal-tjener)
- proc (prosess-tjener)
- symlink (symbolsk lenke-oversetter)
- term (kommandolinje-tjener)
- usermux (bruker-multipleks-tjener)
Filsystem-tjenere
[rediger | rediger kilde]- ext2fs-tjeneren «ext2fs»
- ext2 filsystem-oversetter. Den mottar lagringsblokker fra mikrokjernen og gir filer og kataloger til programmer.
- iso-filsystem-tjener «isofs»
- Oversetteren for iso9660 filsystem. Oversetter blokker fra en CD eller DVD til filer og kataloger for programmer.
- nfs-tjener «nfs»
- Se Network File System.
- ufs-tjener «ufs»
- Oversetter for BSD-filsystem av samme navn, UFS.
- ftp-filsystem-oversetteren «ftpfs»
- Se File transfer protocol
- «storeio»
- Lagringsoversetteren
Tjenerne implementerer kollektivt POSIX API, mens hver tjener implementerer én del av grensesnittet. For eksempel implementer de forskjellige filsystem-tjenerne hver filsystemkallene. Lagringstjeneren vil virke som et omkrasningslag, ganske likt VFS i Linux.
Eksterne lenker
[rediger | rediger kilde]- (en) Offisielt nettsted
- (en) GNU Hurd – kategori av bilder, video eller lyd på Commons
- (en) GNU Hurd – galleri av bilder, video eller lyd på Commons
- The GNUFans Wiki – uoffisiell, men oppdatert dokumentasjon av Hurd
- Mot en ny strategi innen OS design
- Debian GNU/Hurd installasjons-CD-er
- Intervju med Neal Walfield, Hurd og Hurd/L4 utvikler. (2001)
- Intervju med Marcus Brinkmann, Hurd og Hurd/L4 utvikler. (2005)
- En GNU/Hurd på Mach LiveCD, basert på Debian GNU/Hurd (speil her)
- https://web.archive.org/web/20180621212857/http://hurd.gnufans.org/bin/view/Hurd/NextHurd
- http://www.gnu.org/software/hurd/hurd-l4.html