Este documento quer proporcionar um guía simples e de fácil compreenção sobre como instalar o Hurd, com um mínimo esforço.

Copyright © 2000, 2001 Neal H Walfield <neal@cs.uml.edu>

Este documento esse documento foi traduzido ao Português do Brasil por Fábio César Colombo <fabao85@bol.com.br> <http://byron.tajmahal.net>

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the sections entitled ``Copying'' and ``GNU General Public License'' are included exactly as in the original, and provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Free Software Foundation.

(Nota do tradutor: A tradução da licencia que aparece a continuação é únicamente com fins educativos. A licença oficial é a escrita nos parágrafos anteriores em inglés)

Permite fazer e distribuir cópias literais deste manual sempre acompanhado do correspondente copyright e está licença apareça em todas as cópias.

Permite cópiar e distribuir versões modificadas deste manual mas com as condições da cópia literal sempre que a seções, tituladas``Cópias'' e ``GNU General Public License(LICENÇA PÚBLICA GERAL)'' serão incluídos exatamente igual que no original, e que o trabalho resultante se distribua com uma licença legal idéntica a está.

Permite copiar e distribuir tracuções a outros linguagens deste manual, com as mesmas condições dos parágrafos anteriores, para as versões modificadas, sempre que esta nota legal apareça numa tradução aprovada pela Fundação software livre (Free Software Foundation (FSF).

Instalando o Hurd
*****************

Este documento quer proporcionar um guía simples e de fácil compreenção sobre como instalar o Hurd, com um mínimo esforço.

Visão Geral
***********

A Distribuíção Debian GNU/Hurd, ao contrário das outras distribuições de sistemas operacionais, Não tem um programa de instalação bonito. Algum dia terá, inclusive você pode ajudar a desenvolvelo e a programa-lo. Todávia, enquanto isso, para instalar o sistema GNU/Hurd, necessitará instalar o sistema base desde outro sistema operacional, mas específicamente um sistema compativel com Unix. Temos notícia de instalações com éxito do Hurd desde diferentes versão de sistemas GNU/Linux e de BSDs. Desde outro sistema não haveria problema, sempre que sejá compativel com o Unix. Atualmente a única distribução existente de Hurd está baseada em Debian, por isso, uma instalação cruzada(CROSS INSTALLING) desde uma distribução GNU/Linux pode simplificar muito a  vida.

A instalação do Hurd emprega um script que se encarrega do trabalho pesado. Entre sua execução e a leitura deste guía a maioría de nosso tempo passaremos descarregando arquivos. Todávia, antes de executar esses scripts, necessitamos preparar o sistema. Isto incluí criar uma partição para o Hurd e instalar o carregador de sistema(The boot loader): Grub, (GRAND UNIFIED BOOT LOADER) o grande carregador unificado de sistema.

Este guía trata de fazer o processo de instalar o Hurd o mais simples possível. Sem erros, seguramente serão do autor. Por favor, envíar junto com outras sugestões e críticas, aceitaremos amavelmente.

Mãos a Obra e Buscando o Home
*****************************

Este pode ser o passo mais longo para aqueles que não tem uma partição disponível ou um disco extra. Nesse caso necessitaremos reparticionar o disco . Uma solução é usar o Parted, o editor de partições da GNU. é capaz, não só de editar partições de forma básica, além de cria-lás e edita-lás. Pode baixar o programa desde http://www.gnu.org/software/parted.  O manual é bastante completo, e incluí vários tutoriais.

O Hurd suporta tamanhos de partições de até um giga(1G). As partições maiores que este tamanho não funcionará. Está limitação é a causa de uma decisão traçada a vários anos atrás, devido a qual o servidor do sistema de arquivos mapeia a partição inteira na memória virtual. Como na arquitetura ia32 só dispomos de 4 gigabytes de memória virtual, dos quais, únicamente 2 gigas estão disponiveis para a aplicação, e desta  porção significativa está reservada para o código, a pilha e o heap, ao final a parte de memoria virtual continua sossegados, generalmente de um gigabyte. Se planejar já eliminar está limitação. Todávia, outras tarefas tem uma maior prioridade por hora.

Teóricamente, uma partição de um giga é mais que suficiente para um sistema utilizável. Muita gente prefere ter,  ao menos duas partições: uma para a partição de root e a outra, para a  partição de home. Está estrutura é muito aconselhável para desenvolvedores interessados em debugar os servidores do Hurd.

O Hurd abrange várias extensões ao formato de arquivo ext2fs, como podem ser os tradutores(translators) passivos, e um quarto triplo de permisões para o usuário desconhecido. Para sacar o máximo partido destas características, o dono da partição deve ser posto a Hurd.  O comando mke2fs, a não ser que se especifique na linha de comandos, se pode como dono por defeito ao sistema operativo que estamos executando. O Hurd respeitará o dono que tenha o sistema de arquivos, assim que devemos ser cuidadosos e por o valor correto, ou o Hurd pode falhar de maneiras imprevistas. Tenha em conta, que embora um sistema de arquivos tenha como dono um sistema operacional concreto, os outros sistemas podem fazer uso desses sistema de arquivos, embora algumas extensões não estarem disponíveis.

Para criar um sistema de arquivos usaremos mke2fs e passaremos -o hurd para designar o hurd como dono do sistema de arquivos recém criado. Por exemplo:

      # mke2fs -o hurd /dev/DEVICE

O Carregador de sistemas
************************

Ao contrário do GNU/Linux e dos BSDs, o Hurd não tem seu próprio carregador de sistemas. Qualquer um que cumpra com o estandar multiboot pode ser usado para iniciar o Hurd. De momento, só há um projeto que satisfaz estes requisitos: Grub, o Grand Unified Boot Loader.

Umas palavras sobre Grub: Grub é muito potente, ao contrário dos carregadores de sistemas tradicionais nos x86, como é o caso do LILO. Tem um intérpretador de comandos, admite parámetros para o sistema, um terminal ligeiro, e uma coletor de características. Ainda mais pode iniciar muitos sistemas operativos. Se alguma vez a iniciado um alpha ou um sparc, você entenderá o que o Grub é capaz de fazer. todávia , não assuste: Grub é melhor. Você gostará. Depois não usará outro.

Para obter o Grub, visitar ftp://alpha.gnu.org/gnu/grub. Encontrará um targz e uma imagem de disquete. Você descompacta  targz, instala com os configure, make, e make install de sempre. Incluí também um manual maravilhoso completo de manejo do Grub. Leia . Se, pelo contrário, prefirá descompactar a imagem de disquete, é suficiente, com um disquete para obter um Grub completamente operacional:

      # dd if=grub-boot-VERSION.image of=/dev/fd0

É o caso de quem usa o Grub no disquete, sempre estará a tempo de instalar Grub em seu disco rigido, quando a decidir convêniente.

Instalação Cruzada(Cross Install)
*********************************

O seguinte passo é pegar o sistema base de: ftp://alpha.gnu.org/gnu/hurd/contrib/marcus/gnu-latest.tar.gz

O targz está preparado para extrair todo seu conteúdo no diretório atual. Despois de montar a partição e situar-mos onde vamos montar a partição, só necessitaremos extrair o arquivo. No seguinte exemplo assumimos que a partição raíz está montada em /gnu.

      # cd /gnu
      # tar --same-owner -xvzpf ~/gnu-latest.tar.gz

Iniciando o Hurd
****************

Já está todo preparado para iniciar o Hurd pela primera vez. Despois de verificar que havemos introduzimos o disquete com o Grub no drive de disquete, reiniciamos. Se tudo correr bem, aparecerá a tela com o menu do Grub. Digite c para que apareça a linha de comandos do Grub.

O primero será selecionar o sistema de arquivo raíz. Grub usa uma nomenclatura de partições um pouco diferente da do Linux a do Hurd: tanto os discos IDE como os SCSI se denominam (hdN). N é o número do disco (começamos pelo Zero) na ordem em que os detecta a BIOS. é dizer, Grub não faz distinções entre discos IDE ou SCSI. As partições, como os discos, se começa a contar desde zero: (hdN,N). Se este maré, não te preocupa, Grub vai cuidar da nossa ajuda.

Para determinar em que sistema de arquivos reside um arquivo em particular, podesse usar o comando find. Quando se executa este comando, Grub busca em cada sistema de arquivo o arquivo especificado, e mostra na tela onde encontrado-o. Neste caso vamos buscar o kernel, /boot/gnumach.gz.

       grub> find /boot/gnumach.gz
        (hd0,0)

Como podemos ver, Grub está indicando que /boot/gnumach.gz está em (hd0,0). Então selecionaremos a partição raíz:

       grub> root (hd0,0)
        Filesystem type is ext2fs, partition type 0x83

Agora, necessitamos carregar o GNU Mach. Além de carregar o binário, devemos especificar pelo menos a partição raíz, a qual será usada pelo próprio Hurd, pelo que deverá estar escrita em términos que o Hurd entenda.

GNU Mach nomeia os discos começando pelo zero. Os discos IDE levam o prefixo hd, enquanto que os SCSI levam o sd. Igual que Linux, os discos são numerados seguem sua posição no controlador. Por exemplo, o primário mestre é hd0, e o secundário escravo(slave) é hd3. As partições usam a convenções de notações das fatias(slices) do BSD, e acrescentam sM ao nome do disco para indicar a partição a que nos referimos. Tenha conta que M começa a contar-se desde 1, não desde zero. O número das fatias(slice) é fácil de calcular, só tem que soma-las um ao número que usa para o Grub.

Como o Hurd ainda não configurado, devemos inicia-lo em modo monousuário. Para isto, o único que necessitamos é acrescentar -s na linha de comandos do kernel.

Então, continuando com o exemplo anterior, e assumindo que o primeiro disco está como mestre do segundo controlador, teriamos:

       grub> kernel /boot/gnumach.gz -s root=device:hd2s1
        [Multiboot-elf, ...]

O seguinte a fazer é carregar o servidor do sistema de arquivos e o servidor exec. Isto se faz usando a capacidade de carregar do Grub. Os parámetros são a maneira mediante a qual o kernel passa alguns parámetros importantes aos servidores.

       grub> module /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line}  --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -T typed ${root} $(task-create) $(task-resume)
          [Multiboot-module  0x1c4000, 0x2cfe6a bytes]
       grub> module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
          [Multiboot-module  0x494000, 0x27afe bytes]

É importante escrever cada corrente de um módulo em uma só linha. É aconselhável ainda o anterior ao arquivo de configuração do Grub menu.lst, tão pronto como sejá possível.

Finalmente o Hurd pode ser iniciado:

     grub> boot

Sintaxe e observa os mensagens. Este é em realidade mais importante o que se podería pensar, porque a um bug em GNU Mach que provoca que se você digitar uma tecla durante o processo do sistema, você produz um kernel panic.

Se o Hurd no arranca, pode ser devido a interrupções compartidas (shared IRQs): GNU Mach não trabalha bem com as interrupções compartidas. Pode comprovar as interrupções vendo, por exemplo, o arquivo /proc/interrupts em GNU/Linux. Como GNU Mach não suporta os módulo carregáveis no kernel, a maioría dos drivers estão compilados no kernel que vêm por defeito. Se tem periféricos velhos isto pode supor um problema: um dispositivo pode responder mal, a um intento de prova  por outro dispositivo. Compilando um novo kernel com únicamente os dispositivos requeridos, normalmente resolverá este problema. GNU Mach se cross compila fácilmente. Se está usando Debian, prova o pacote gcc-i386-gnu.

Se o anterior não tem ajuda, veja na lista de fontes de informação ao final deste documento. Por último, pergunta na lista de correio apropriada.

Instalação Nativa
*****************

Uma vez que aparece o prompt, e sempre que o Hurd esté em modo monousuário, será necessário selecionar o tipo de terminal:

      # export TERM=mach

Tenha conta que CONTROL-C e familia não funcionam em modo monousuário.

Agora podemos executar o script native-install. Este configurará os pacotes e alguns tradutores importantes.

      # ./native-install

Justo antes do script termine, mandará a mensagem de que necessita ser executado uma segunda vez. Siga as instruções para reiniciar, usando o comando reboot. Uma vez mais inicia em modo monousuário e executa ./native-install.

Configurações
*************

a Rede
======

Necessitaremos configurar o tradutor pfinet para configurar a rede. Usando o comando settrans para associar um tradutor a um nodo determinado do sistema de arquivos. Quando os programas acessando o nó, para, por exemplo, mandar um RPC, o sistema operacional iniciará de maneira transparente o servidor para levar o cabo a tarefa requerida.

      # settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 \
        -a a.b.c.d -g e.f.g.h -m i.j.k.l

Passado várias opções o settrans. as primeras dos, fg, obrigam finalizar qualquer tradutor preexistente. As dos seguintes, ap, produzem tradutor ativo e passivo respectivamente. Isto significa que o sistema operacional inicia o tradutor imediatamente e guarda a configuração no nó do sistema de arquivos. O anterior também faz qualquer mensagem de erro seja enviado a stderr. O seguinte argumento /server/socket/2, é o nó ao que associamos o tradutor. O que segue é o programa tradutor a executar e os argumentos que se passam.

Pode obter ajuda sobre o comando settrans se passamos a opção --help. Do mesmo modo, podemos obter ajuda sobre qualquer tradutor específico com o mesmo argumento, p. ex.:

      # /hurd/pfinet --help

Como pode produzir uma grande quantidade de dados de saída, considerá usar um páginador através de uma tubulação.

Outros Sistemas de arquivos
===========================

A continuação edita /etc/fstab para ainda a partição home e o espaço de swap. Por defeito, nano é o único editor instalado na distribução base. É muy importante que se use a swap. O Hurd será uma ordem de magnitude mais estável. Tenha conta que o Hurd pode não só compartir transparentemente uma partição de swap com Linux sem até mais páginar corretamente a qualquer dispositivo, incluído uma partição sem formato(raw), ou incluso a sua partição home.

Aquí mostramos um exemplo do arquivos /etc/fstab:

     # <file system> <mount point>   <type>  <options>  <dump>  <pass>
     /dev/hd2s1      /               ext2    rw         0       1
     /dev/hd2s2      /home           ext2    rw         0       2
     /dev/hd2s3      none            swap    sw         0       0

Lembram de criar os dispositivos necessários com o comando MAKEDEV.

Usa o tradutor nfs para montar uma partição nfs. Quando é um usuário distinto do root, o tradutor conectará, por razões obvias, ao servidor de nfs nem porta superior ao 1024. Para fazer isto corretamente baixo o GNU/Linux, a opção insegura deve acrescentar a linha de export. Mostramos um exemplo de arquivo /etc/exports:

     /home	192.168.1.2(rw,insecure)

Para montar isso num ordenador com Hurd:

      # settrans -cgap /home /hurd/nfs 192.168.1.1:/home

Reiniciando
===========

Finalmente, reinicia em modo multiusuário, faz da mesma maneira que em modo monousuário mas não por a opção -s quando carregamos o kernel. ¡Feliz Hacking!

Palavras Finais
***************

Documentação
============

Para entender o Hurd, começa por sua página na web de Debian: http://www.debian.org/ports/hurd/. Depois prova a web de GNU: http://hurd.gnu.org.

Considerá também a leitura do código fonte e o escrever mais documentações

O menu de Grub
==============

Carregar sempre o kernel a mão pode ser muito tedioso. Considerá o editar o arquivo /boot/grub/menu.lst no disquete. Modifíca-los apropriadamente; arrancar o sistema será agora muito mais fácil e rápido.

Acrescentando Dispositivos
==========================

Por defeito, no diretório /dev, não se cria muitos dispositivos. Igual a outras versões de Unix, o Hurd tem um script MAKEDEV. Execute para criar os dispositivos que necessitar.

Instalando mais Pacotes
=======================

Há várias maneiras para acrescentar pacotes. Descarregando e usando dpkg funciona, mas é tedioso. É mais fácil empregar atp-get ou dselect. Edita o /etc/apt/sources.list e acrescenta as duas linhas seguintes:

     deb ftp://alpha.gnu.org/gnu/hurd/debian unstable main
     deb ftp://ftp.debian.org/debian unstable main

ftp://alpha.gnu.org contém pacotes que tem hacks e parches que ainda não tem sido integrados no sistema. Não há espelhos(mirrors).

Para usar um espelhos(mirror) local de Debian, visita a página http://www.debian.org/distrib/ftplist.

Generalmente, executando dselect depois da primeira instalação, descarregar muitas conveniêntemente os pacotes restantes do sistema base. Depois cada um pode instalar os pacotes a seu gosto.

XFree86
=======

 1. Primero, configurar o tradutor do teclado:

           # cd /dev
           # ./MAKEDEV kbd

 2. Agora o tradutor do mouse. Para mouse conectados a porta serial digitamos a linhas seguinte:

           # settrans /dev/mouse /hurd/mouse --device=com0 --protocol=microsoft

     Assegura de que existe /dev/com0. Se não, criar mediante MAKEDEV da maneira habitual.

     PS/2 não requer um dispositivo. É tão simples como:

           # settrans /dev/mouse /hurd/mouse --protocol=ps/2

     Para outros mouses, executa /hurd/mouse com opções --help.

 3. Necessitará de vários pacotes. A seguinte lista é um começo razoável: xfree86-common, xservers-common, xserver-YOURSERVER, xbase-clients, xterm, twm or fvwm, xfonts-base, xfonts-75dpi, xlib6g, xlib6g-dev, xpm4g-dev y rxvt.

 4. Esta disponível o xf86setup para configurar o X,  será mais fácil copiar um arquivo de configuração que funcione de outro sistema operativo que se execute no mesmo ordenador e coloca-los em /etc/X11/XF86Config-4.

     Agora, trocar a seção do mouse:

          Section "Pointer"
            Protocol "osmouse"
            Device "/dev/mouse"
          EndSection

     Emulate3Buttons pode ser acrecentado opcionalmente. As demás opções não funcionaram.

 5. Como o Hurd não usa ld.so.conf, será necessário acrescentar o seguinte a /etc/profile para estar seguro de que encontrará as bibliotecas:

          LD_LIBRARY_PATH=/X11R6/lib:$LD_LIBRARY_PATH

 6. Finalmente, executa startx

 7. Há vários detalhes e tenha conta:

      1. xterm não funciona corretamente; prova rxvt.

      2. update-menu não funciona ainda. Ainda  não podemos usar os bonitos menus do Debian.

      3. Devido a  carência de uma implementação de pthreads, não espere que funcione gnome, de todas formas, Window Maker, TWM, Blackbox e FVWM funcionaram.

Terminais Virtuais
==================

O Hurd não tem terminais virtuais. Em seu lugar usa o screen

PPP
===

PPP está disponivel. Instalar o pacote um-pppd.

Listas de Correio
=================

 1. debian-hurd@debian.org  Discussão sobre o Hurd quanto a temas relacionados com Debian.

      1. Archive: http://lists.debian.org/#debian-hurd

 2. web-hurd@gnu.org  Desenvolver das páginas web do Hurd em http://hurd.gnu.org.

      1. Archive: http://mail.gnu.org/pipermail/web-hurd/

 3. help-hurd@gnu.org  Ajuda sobre o Hurd em geral.

      1. Archive: http://mail.gnu.org/pipermail/help-hurd/

 4. bug-hurd@gnu.org Notificações de bugs, e desenvolvimentos em geral. Envía seus parches aquí.

      1. Archive: http://mail.gnu.org/pipermail/bug-hurd/

Trabalhos Citados
*****************

``The Easy Guide to Installing Hurd on a Linux Box'' Copyright © 1999 Matthew Vernon matthew@debian.org. http://www.pick.ucam.org/~mcv21/hurd.html