GNU Hurd
GNU Hurd Hurd | |
---|---|
Versão do sistema operativoUnix-like | |
![]() | |
![]() HURD Live CD | |
Produção | Projeto GNU Thomas Bushnell Roland McGrath Marcus Brinkmann Neal Walfield |
Linguagem | Assembly,C |
Modelo | Código Aberto e Livre |
Lançamento | 1 de novembrode1993(30 anos)[1] |
Versão estável | 0.9 / 18 de dezembro de 2016[2] |
Versão em teste | / |
Arquitetura(s) | i386 |
Núcleo | Microkernel |
Interface | Bash |
Licença | GNU General Public License |
Página oficial | www.gnu.org/software/hurd/ |
Estado de desenvolvimento | |
Corrente |
GNU Hurd(também conhecido comothe Hurdou apenasHurd) é ummicronúcleomulti-servidor escrito como parte doGNU,desenvolvido para substituir oUnix[3]e publicado comosoftwarelivre,sob a licençaGNU General Public License.
O seu desenvolvimento tem sido contínuo desde1990pela equipe doProjeto GNUdaFree Software Foundation.OGNU Hurdconsiste num conjunto de protocolos eprocesso de servidores(oudaemons,em terminologiaUnix) que correm no microkernelGNU Mach;juntando tudo, tenciona-se formar okerneldosistema operacionalGNU.[3]O Hurd pretende ultrapassar o kernel do sistema operacionalUnixem funcionalidade, segurança e estabilidade, enquanto se mantém bastante compatível a eles. O projeto GNU escolheu para o sistema operacional aarquitetura microkernel servidor–cliente,ao notar ganhos sobre o tradicional arquiteturakernel monolíticoUnix. Isto é alcançado no Hurd através da implementação da especificaçãoPOSIX(entre outros), mas eliminando as restrições arbitrárias aosusuários.[4]
Nome e logo
[editar|editar código-fonte]Em dezembro de 1991, o arquiteto principal do Hurd explicou que "HURD" é umacrônimoindiretamente recursivo para "HIRD of Unix-Replacing Daemons", em que "HIRD" significa "HURD of Interfaces Representing Depth". A opinião que prevalece atualmente na equipe é de que Hurd é um substantivo concreto.[5][6]
É hora [de] explicar o significado de "Hurd". "Hurd" significa "Hird dedaemonssubstituindoUnix".E, então," Hird "significa" Hurd de interfaces representando profundidade ". Temos aqui, ao meu conhecimento, o primeiro software a ser nomeado por um par de siglas mutuamente recursivas.— Thomas Bushnell
Ainda em estágio de desenvolvimento, os próprios (e pouquíssimos) desenvolvedores pedem ajuda a pessoas conhecedoras daLinguagem C(tanto para o desenvolvimento do núcleo quanto para o porte de aplicativos), assim como pessoas que tenham disponibilidade para efetuar testes e reportar falhas.
Como ambos "Hurd" e "Hird" sãohomófonosda palavra em Inglês "rebanho" (herd), o nome completoGNU Hurdtambém é uma brincadeira com as palavrasrebanhodegnus,refletindo como o kernel funciona[7].O logotipo é chamado decaixas Hurde isso também reflete na arquitetura. O logotipo é um gráfico onde os nós representam servidores do kernel Hurd e as bordas são dirigidasIPC.Mensagens[6]
Devido ao estado da tecnologia microkernel, a sigla duplamente recursiva é muitas vezes referida pelos especialistas como a característica mais interessante do GNU Hurd.[8]
Desenvolvimento e história
[editar|editar código-fonte]ORichard Stallmanfundou oprojeto GNUem setembro de 1983 com a finalidade de criar o sistema operacionallivreGNU.Inicialmente os componentes necessários para o kernel e seu desenvolvimento foram escritos:editores,shell,compiladore todos os outros. Em 1989, foi criado oGPLe "só" faltava um importante componente: o kernel.[9][10]
O desenvolvimento do Hurd começou em 1990 depois de ter abandonado uma tentativa de construir o kernel em 1986, baseado na investigação do sistema operacionalTRIXdesenvolvido pelo professor Steve Ward e seu grupo emMIT'slaboratório de informática (LCS).[11]De acordo com Thomas Bushnell, o arquiteto inicial do Hurd, o plano inicial era adaptar o kernel4.4BSD-Lite kernel e, em retrospecto, "É perfeitamente óbvio a mim que isto iria ter um sucesso esplêndido e que o mundo seria muito diferente hoje".[12]Em 1987Richard Stallmanpropôs utilizar oMach microkerneldesenvolvido naUniversidade Carnegie Mellon(CMU). O trabalho foi atrasado três anos devido incerteza se a CMU iria liberar o código Mach numa licença correspondente.[11]
Com a publicação doKernel Linuxem 1991, o usuário primário das ferramentas e componentes GNU deespaço de usuárioem breve se tornaram sistemas operacionais construídos sobre okernel Linux,solicitando acontrovérsia do termoGNU/Linux.
Desenvolvimento do Hurd têm ocorrido lentamente. Apesar dos anúncios positivos de Stallman em 2002 prevendo a publicação do GNU/Hurd mais tarde nesse ano,[13]o Hurd ainda não é considerado adequado para ambientes de produção. O seu desenvolvimento, em geral, não atingiu as expectativas, e ainda há bugs e falta particularidade.[14]Isso resultou em um produto mais pobre do que muitos (inclusive o Stallman) esperavam.[15]Em 2010, após 20 anos em desenvolvimento, Stallman disse que ele "não era muito otimista sobre o GNU Hurd. Faz algum progresso, mas para ser realmente superior seria necessário resolver muitos problemas complexos", mas acrescentou que "o acabamento não é crucial" para o sistema operacional GNU porque um kernel livre já existia (Linux), e completando Hurd não resolveria o principal problema restante para um sistema operacional livre: suporte a dispositivos.[16]
O projetoDebian,entre outros, trabalhou no projeto Hurd para produzir distribuições binárias doSistemas operacionais baseados em kernel Hurdpara sistemascompatíveis com IBM PC.[8]
Arquitetura
[editar|editar código-fonte]![](https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/OS-structure2.svg/600px-OS-structure2.svg.png)
Ao contrário da maioria de kernelsUnix-like,o Hurd utiliza uma arquiteturacliente-servidor,construída em ummicrokernel,que é responsável por fornecer os serviços mais básicos do kernel - coordenar o acesso aohardware:oCPU(aescalonamento de processosegerenciamento de processos),RAM(viagerenciamento de memória), e vários outros dispositivos deentrada/saída(viaagendamento I/O) para som, gráficos, armazenamento de massa, etc. Em teoria, o projeto microkernel permitiria a todos os drivers de dispositivo serem construídos como servidores que trabalham emespaço do usuário,mas hoje a maioria dos drivers desse tipo é ainda contida noespaço do kernelnoGNU Mach.[17]
De acordo com os desenvolvedores do Hurd, a principal vantagem do projeto baseado em microkernel é a capacidade de estender o sistema: o desenvolvimento de um novo módulo não exige conhecimento profundo do resto do kernel e um bug em um módulo não trava o sistema inteiro. Hurd fornece um conceito detradutores,uma estrutura de módulos usados para estender a funcionalidade do sistema de arquivos[18]
Desde cedo, o Hurd foi desenvolvido para usarGNU Machcomo o microkernel. Esta foi uma decisão técnica feita porRichard Stallman,que pensou que iria acelerar o trabalho de salvar uma grande parte dela. Ele admitiu que estava errado sobre isso[19].Outros sistemas Unix-like que trabalham noMach microkernelincluemOSF/1,LiteseMkLinux.Mac OS XeNeXTSTEPusamnúcleos híbridosbaseados no Mach.
Outros microkernels
[editar|editar código-fonte]De 2004 em diante, vários esforços foram lançados para portar o Hurd para microkernels mais modernos. OL4 microkernelera a escolha original em 2004, mas desacelerou a um impasse. No entanto, em 2005, o desenvolvedor Hurd, Neal Walfield, terminou a estrutura de gerenciamento de memória inicial para a porta L4/Hurd e Marcus Brinkmann portou as partes essenciais deglibc,ou seja, obteve o código de inicialização do processo de trabalho, permitindo assim que os primeiros programas de usuários (os triviais, como oprograma Olá Mundoem C) possam ser executados.
Desde 2005, Brinkmann e Walfield começaram a pesquisar sobre oCoyotoscomo um novo kernel para HURD.[20][21]Em 2006, Brinkmann conheceu Jonathan Shapiro (o principal arquiteto do sistema operacional Coyotos) para ajudar e discutir o uso do kernel Coyotos para GNU/Hurd. Uma discussão mais aprofundada dos desenvolvedores HURD levou a conclusão de que o Coyotos (bem como outros núcleos similares) não são adequados para o Hurd.
Em 2007, os desenvolvedores do Hurd, Neal Walfield e Marcus Brinkmann, fizeram uma crítica da arquitetura Hurd, conhecida como "a crítica"[22],e uma proposta de como o futuro sistema pode ser projetado, conhecido como "o papel de posição".[23]Em 2008, Neal Walfield começou a trabalhar no microkernel Viengoos como um kernel nativo moderno para HURD. A partir de 2009, o desenvolvimento em Viengoos está em pausa devido à falta de tempo que Walfield tem para trabalhar nele.[24]
Enquanto isso, os outros continuaram a trabalhar na variante Mach do Hurd.[25]
Extensões Unix
[editar|editar código-fonte]Uma série de conceitos tradicionais do Unix são substituídos ou extensíveis no Hurd.
No Unix, cada programa em execução tem umuser idassociado, que normalmente corresponde ao usuário que iniciou oprocesso.Este id amplamente dita as ações permitidas para o programa. Nenhum processo exterior pode mudar o ID de usuário de um programa em execução. Um processo Hurd, por outro lado, é executado sob umasetno IDs de usuário, que pode conter vários ids, um ou nenhum. Um processo suficientemente privilegiado pode adicionar e remover ids para outro processo. Por exemplo, existe um servidor de senha que irá distribuir ids em troca de uma senha delogincorreta.
Quanto aosistema de arquivos,um programa adequado pode ser designado como umtradutorpara um único arquivo ou uma hierarquia de diretório inteiro. Todo o acesso ao processo traduzido, ou abaixo de uma hierarquia de arquivos, no segundo caso, é, de fato, processado pelo programa. Por exemplo, um arquivo tradutor pode simplesmente redirecionar operações de ler e escrever para outro arquivo, e não ao contrário de umlink simbólicoUnix. O efeitomontagemdo Unix é alcançado através da criação de um sistema de arquivos tradutor (usando o comando "settrans" ). Os tradutores também podem ser usados para fornecer serviços ao utilizador. Por exemplo, o tradutorftpfspermite que um usuário encapsule sites FTP remotos dentro de um diretório. Em seguida, as ferramentas padrão, comols,cpermpodem ser usados para manipular arquivos no sistema remoto. Mesmo os tradutores mais poderosos são aqueles, comoUnionFS,que permitem um usuário unificar vários diretórios em um, listando, assim, o diretório unificado revela o conteúdo de todos os diretórios (um recurso que está faltando em muitos sistemas Unix, embora disponível nos modernosBSDs).
O Hurd requer umboot loadercompatível commultiboot,como oGRUB.
A arquitetura dos servidores
[editar|editar código-fonte]De acordo com a documentação Debian existem 24 servidores (18 servidores centrais e seis servidores do sistema de arquivos) nomeados da seguinte forma:[26]
Servidores Núcleo
[editar|editar código-fonte]- auth(servidor de autenticação): Recebe solicitações e senhas de programas e dá-lhes um ID, que muda os privilégios do programa.
- crash(servidor detravamento): Aceita todos os erros fatais.
- exec(servidor de execução): Traduz uma imagemexecutável(correnteELFea.outque são suportadas) rodando uma imagem executável na memória.
- fifo(tradutorFIFO): Implementa pipes nomeados.
- new-fifo(novo servidor FIFO): Um servidor alternativo para pipes nomeados.
- firmlink(o tradutor firmlink): Implementa firmlinks - "a meio caminho entre alink simbólicoe umlink duro"[27]
- fwd(servidor forward): encaminha solicitações para outros servidores, usado por servidores de FIFO e symlink.
- hostmux(servidor de multiplexador host)
- ifsock(servidor para a interface de sockets): Ajuda com domínio endereços de soquetes UNIX.
- init(servidorinit): O sistema básico de inicialização e configuração.
- magic(servidor magic): Sinaliza que uma pesquisa de nome deve ser resolvida internamente por um processo quando o resultado envolve o estado do mesmo.
- null(servidor null): Implementa/dev/nulle [/dev/zero /dev/zero].
- pfinet(servidor pfinet): Implementa o protocolo da familia PF_INET.
- pflocal(servidor pflocal): Implementossoquetes de domínio Unix.
- proc(servidor process): AtribuiPIDs e gere ações a nível de processo.
- symlink(tradutorlink simbólico): Implementa links simbólicos para os sistemas de arquivos que não os suportam.
- term(servidor de terminal): Um terminalPOSIX.
- usermux(servidor de usuário multiplexador): Invoca tradutores específicos do usuário.
Servidores do Sistema de Arquivos
[editar|editar código-fonte]- Ext2fs
- O tradutor para o sistema de arquivosext2.Ele recebe blocos de disco do microkernel e dando arquivos e diretórios para as aplicações.
- Isofs
- O tradutor para o sistema de arquivosISO 9660.Traduz blocos de umCDou DVD para arquivos e diretórios para as aplicações.
- Nfs
- VejaNetwork File System.
- Ufs
- Tradutor para o sistema de arquivos BSD com o mesmo nome,UFS.
- Ftpfs
- File Transfer Protocoltradutor de sistema de arquivo.
- Storeio
- O tradutor de armazenamento.
Os servidores, coletivamente, implementam oPOSIXAPIcom cada servidor implementando parte da interface. Por exemplo, os vários servidores de sistemas de arquivos individualmente implementam as chamadas de sistema de arquivos. O servidor de armazenamento vai funcionar como uma camada de wrapping, semelhante à camada de bloqueio do Linux. O equivalente aVFSnoLinuxé conseguido atravéslibdiskfse bibliotecaslibpager.
Distribuições GNU rodando Hurd
[editar|editar código-fonte]As distribuições baseadas em HurdGNUincluem:
- Arch Hurd
- Debian GNU/Hurd
- NixOS[28][29]
- Bee GNU/Hurd (descontinuado)
- Gentoo GNU Hurd(descontinuado)
- GNU/Hurd Live CD[30](descontinuado)
Ver também
[editar|editar código-fonte]Referências
- ↑«Situação do Hurd e chamada a voluntários»(em inglês).Consultado em 24 de maio de 2013
- ↑«GNU Hurd 0.9, GNU Mach 1.8, GNU MIG 1.8 released.»(em inglês).Consultado em 26 de maio de 2017
- ↑ab«What Is the GNU Hurd?».GNU.Consultado em 4 de março de 2010
- ↑«vantagens».GNU(em inglês).Consultado em 7 de dezembro de 2013
- ↑«Grammatically speaking...».Consultado em 24 de maio de 2013Texto "lingua»Inglês" ignorado (ajuda)
- ↑abVervloesem, Koen (7 de Julho de 2010).«The Hurd: GNU's quest for the perfect kernel»(em inglês).LWN.net.Consultado em 5 de outubro de 2012
- ↑«GNU Hurd: Origin of the Name».GNU.Consultado em 4 de março de 2010
- ↑abDoeppner, Thomas W. "Operating System Design." Computer Science 167. Brown University. Providence, RI, Oct 1, 2011.
- ↑Hillesley, Richard (30 de junho de 2010).«GNU HURD: Altered visions and lost promise»(em inglês).Consultado em 1 de outubro de 2012
- ↑«Linux and the GNU Project».GNU.26 de janeiro de 2010.Consultado em 4 de março de 2010
- ↑ab«The GNU Hurd History, "How it Started"».GNU.Consultado em 27 de agosto de 2006
- ↑Salus, Peter H.«The Daemon, the GNU and the Penguin».The Hurd and BSDI.Consultado em 8 de agosto de 2006
- ↑Ribeiro, John (11 de março de 2002).«Free Software Sees GNU Loose of Linux».PC World.Consultado em 5 de outubro de 2012.Arquivado dooriginalem 22 de setembro de 2016
- ↑«Status».GNU.Consultado em 4 de março de 2010
- ↑Stallman, Richard(9 de março de 2006).«The Free Software Movement and the Future of Freedom»(ogg).Free Software Foundation.Zagreb.Resumo divulgativo.
Este é o caminho, também, que as pessoas pensavam que era a maneira mais limpa possível de projetar kernels em 1990. Bem, demorou muitos muitos muitos anos para conseguir este kernel para funcionar em tudo, e ainda não funciona bem, e parece que pode haver problemas fundamentais com este projeto, que ninguém conhecia em 1990.
- ↑Stallman, Richard(29 de julho de 2010).«RMS AMA».Reddit.Consultado em 7 de dezembro de 2011
- ↑Kousoulos, Constantine (21 de março de 2007).«Re: Device drivers in Mach?».bug-hurd(Lista de grupo de correio)
- ↑Thomas W. Doeppner (20 de dezembro de 2010).Sistemas Operacionais em profundidade.: Design e Programação.[S.l.]: John Wiley & Sons. p. 160.ISBN978-0-471-68723 -8.Consultado em 29 de novembro de 2012
- ↑Stallman, Richard(12 de outubro de 2000).«In Defense of Red Hat».Linux Today.Consultado em 7 de dezembro de 2011.
Assumo total responsabilidade pela decisão técnica para desenvolver o kernel GNU baseado no Mach, uma decisão que parece ter sido responsável pela lentidão no desenvolvimento. Pensei usando Mach iria acelerar o trabalho, salvando-nos em grande parte do trabalho, mas eu estava errado.
- ↑Shapiro, Jonathan S. (27 de outubro de 2005).«Re: A comment about changing kernels».l4-hurd(Lista de grupo de correio)
- ↑Bachmann, Tom (7 de julho de 2006).«Re: seL4, L4.sec and coyotos mess».l4-hurd(Lista de grupo de correio)
- ↑Walfield, Neal H.;Brinkmann, Marcus(julho de 2007).«A Critique of the GNU Hurd Multi-server Operating System»(PDF).GNU.Consultado em 7 de dezembro de 2011
- ↑Walfield, Neal H.;Brinkmann, Marcus(4 de janeiro de 2007).«Improving Usability via Access Decomposition and Policy Refinement»(PDF).GNU.Consultado em 7 de dezembro de 2011
- ↑«viengoos».GNU.Consultado em 4 de março de 2010
- ↑«What happened to the L4/Coyotos/viengoos micro-kernels?».GNU.Consultado em 7 de janeiro de 2011
- ↑«Preliminary GNU/Hurd User Interface Description».Debian.10 de outubro de 1996.Consultado em 4 de março de 2010
- ↑«GNU/Hurd - Documentation».Debian. 10 de outubro de 1996.Consultado em 12 de julho de 2012
- ↑nixos.org
- ↑«Nix-based GNU/Hurd System».Gnu.org. 21 de março de 2012.Consultado em 12 de julho de 2012
- ↑«GNU Hurd/ hurd/ running/ live cd».Consultado em 19 de Novembro de 2012
Ligações externas
[editar|editar código-fonte]- GNU Hurd
- Towards a New Strategy of OS Design
- Debian GNU/Hurd instalação por CDs
- Interviewcom Neal Walfield, desenvolvedor Hurd eHurd/L4.(2001)
- InterviewcomMarcus Brinkmann,Hurd eHurd/L4developer. (2005)
- A GNU/Hurd on Mach Live CD,baseado no Debian GNU/Hurd
- #hurdcanal de IRC