   Copyright (C) 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 (C)
1999 Matthew Vernon <matthew@debian.org>.
`http://www.pick.ucam.org/~mcv21/hurd.html'