Diskless Linux Mini Howto

por Robert Nemkin buci@math.klte.hu
V0.0.3, 12 de Setembro de 1996
Traduzido por: Bruno H. Collovini - buick@microlink.com.br
Traduzido em: 8 de Setembro de 1997.

Aviso: Esta tradução não está relacionada com o Projeto de Documentação do Linux LDP) que no Brasil é representada pela LDP-BR em <http://www.dca.fee.unicamp.br/~malheiro/linux/LDP-br.html>, este material é uma tradução técnica e básica somente para auxiliar os colegas com a leitura em português.

Outros documentos você pode obter em: <http://www.microlink.com.br/~buick/>

Este documento descreve como configurar diskless de Linux e o copyright é de Rober Nemkin. A Política de direitos autorais é GLP. Eu tenho que agradecer a Bela Kis <bkis@cartan.math.klte.hu> por ter traduzido este documento para o inglês.

1. Mudanças

· v0.0.3 12 de Setembro de 1996: Um erro secundário arrumado

2. Como configurar um diskless no Linux

Este documento é sobre como configurar um diskless no Linux. Às vezes pode ser necessário rodar o Linux em PC que não tem nenhum disco rígido nem floppy disk. Se numa network, tem outro sistema de Unix com bootp, tftp, e um servidor de NFS, e um queimador de eprom estão disponível é possível para montar e operar o Linux sem discos de hard/floppy.

3. Documentos relacionados

· Mini Howto NFS-root
· Howto Linux NET-2/ por Terry Dawson, 94004531@postoffice.csu.edu.au
· /usr/src/linux/README sobre configurar e compilar novos kernels

4. Hardware

Tudo que é descrito aqui foi inspecionado e configuração dentro de
· Sun-OS 4.1.3 como servidor de boot
· Slackware 2.3 + Linux 1.2.8 + placa de rede wd 8013.
· utilização de uma lan Ethernet

5. Idéias fundamentais

A idéia fundamental é a seguinte: o PC adquirirá o seu endereço de IP do servidor de boot pelo protocolo de bootp, usando 0.0.0.0 como o IP inicial que obtem o seu kenrle via o protocolo de tftp. (--da boot por segmentos (pelo roteador) não é uma simples questão, então ou ponha ambos o servidor e o diskless no mesmo segmento de lan ou configura um ajudante de UDP e que envia ao seu roteador o endereço do servidor.
Refira-se ao seu manual do produto de roteamentol para info adicionais.--)

Para isto siga os passos seguintes.

5.1. Configurando o PC

Adquira o pacote nfsboot (o pacote está disponível no seu site favorito de refleto do linux no diretório de /pub/Linux/system/Linux-boot). Ele contém uma imagem do booteprom para o cartão wd8013 que pode ser diretamente queimado.

Há alguns modos alternativos para preparar o seu PC:

· Se sua máquina não é totalmente um diskless, então você pode usar um pequeno programa de DOS, ou

· usar uma imagem binária em floppy que contem o mesmo pacote. Se você escolha a opção posterior você tem que escrever a imagem num disquete e usar o comando dd.

Esta imagens contêm um bootp e o cliente de tftp. Você precisa preparar também um kernel de linux que contém a opção de nfs-root.

· Se você está usando o kernel mais recente estável, linux-1.2.13, então você, precisa consertar o kernel com o patchfile inclui no pacote nfsboot (--Refira-se ao patch(1)--)

· Se você tenta usar o kernel mais recente, mas o kernel instável do série linux-1.3.x, então você tem que configurar a opção de nfs-root.

Você pode ou não configurar o dispositivo de suporte a bloco (floppy ou disco rígido), mas você tem que configurar o suporte ao tcp/ip, suporte a placa de rede wd, suporte ao filesystem de nfs. E então recompilar o kernel como o habitual.

5.2. Configurando o servidor de bootpd

Pode ser obtido o pacote bootpd-2.4.tar.gz (que pode ser obtido em seu site favorito de refletor do Linux no diretório /pub/Linux/system/Network/boot.net). Pegue o pacote, compile e instale. Se seu outro Unix for um Linux Slackware então você pode saltar este passo para a distribuições padrão que contêm um bootpd. O daemon podem ser executado em qualquer lugar ou diretamente emitindo o comando

       ______________________________________________________________________
               bootpd -s
       ______________________________________________________________________

ou usando o inetd. Neste caso você precisa editar:

· /etc/inetd.conf para remover o comentário desde o começo destas linhas:

       ______________________________________________________________________
       # tftp   dgram   udp     wait    root    /usr/sbin/in.tftpd     tftpd /export
       # bootps dgram   udp     wait    root    /usr/sbin/in.bootpd    bootpd
       ______________________________________________________________________

· insira ou tire comentário das duas linhas seguintes no /etc/services:

  ______________________________________________________________________
  bootps          67/tcp          # BOOTP server
  tftp            69/udp          # TFTP server
  ______________________________________________________________________

· reinicie o inetd com

       ______________________________________________________________________
               kill -HUP <id do processo do inetd>.
       ______________________________________________________________________

5.3. Configure o servidor de bootpd.

Em primeiro lugar, o bootpd têm um arquivo de config chamado bootptab que normalmente reside em /etc. Você tem que modificar inserindo os endereços de IP do seu gateway, do servidor de dns, e o endereço(da placa de rede) de sua máquina(s de diskless). Um exemplo de /etc/bootptab:

       ______________________________________________________________________

       global.prof:\
               :sm=255.255.255.0:\
               :ds=192.168.1.5:\
               :gw=192.168.1.19:\
               :ht=ethernet:\
               :bf=linux:
       machine1:hd=/export/root/machine1:tc=global.prof:ha=0000c0863d7a:ip=192.168.1.140:
       machine2:hd=/export/root/machine2:tc=global.prof:ha=0800110244e1:ip=192.168.1.141:
       machine3:hd=/export/root/machine3:tc=global.prof:ha=0800110244de:ip=192.168.1.142:
       ______________________________________________________________________

global.prof é um modelo geral para entradas do host onde

· o campo sm contém a máscara da subnet
· o campo ds contém o endereço do Servidor de Nome de Domínio
· o campo gw o endereço default de seu gateway
· o campo ht contém o tipo mídia usada em seu hardware de sua lan
· o campo bf contém o nome do arquivo de boot

Depois disto, toda máquina tem que ter uma linha:

· o primeiro campo contém o nome do host,
· o campo hd contém o diretório do bootfile,
· o modelo global pode ser incluído com o campo de tc,
· ha um campo que contém hardvare para as placas de rede,
· o campo ip contém o endereço de ip nomeado.

5.4. Compreendendo o Tftp

O TFTP (Protocolo de Transferência de Arquivo Trivial) é um protocolo de transferência de arquivo, como ftp, mas é muito mais simples ajudar e codificando em EPROMs. O TFTP pode ser usado de dois modos:

· tftp simples: meios em que o cliente acessa o seu sistema de arquivo por inteiro. É mais simples mas é um grande buraco de segurança (qualquer um pode adquirir o seu arquivo de passwd por tftp).

· tftp seguro: o servidor de tftp usa uma chamada de chroot.2 do sistema para acessar e é no próprio diretório do root. Qualquer coisa fora do diretório do novo root será completamente inacessível. Por causa do dir de chroot torna o dir do novo root, o arquivo de hd no bootptab têm que refletir a nova situação. Por exemplo: quando usamos o tftp inseguro, o campo de hd, contém o caminho completo para o diretório de boot: /export/root/machine1. Quando usamos o tftp seguro temos o /export como dir do root, e então o /export torna se / e o campo de hd deve ser /root/machine1.

Quase toda implementação de Unix contém servidor de tfpt, provavelmente você, não precisa instalar o seu próprio.

5.5. servidor.

Definindo uma configuração de Linux mínima

Isto deve conter os pacotes pacotes a, ap, n, e x da distribuição Slackware. Instalar o resto e OK; porém basta estes pacotes para a finalidade de um terminal diskless de X. Para a instalação você precisa de um sistema de linux funcionando. Ache algum espaço de disco em sua máquina remota e exporta a leitura-escrita. Monte os diretórios de exportação em algum lugar (por exemplo /mnt) no sistema de arquivo do Linux. Comece a configuração do Linux e mude a opção de root no setup de / para /mnt. Então o setup acima dos pacotes como sempre. Se você não quer rodar mais de um diskless Linux de nenhuma mudança então é necessária. No entanto, se você planeja usar mais de uma máquina de diskless então o setup anterior não irá funcionar porque alguns arquivos e diretórios devem ser privaddos para as máquinas. O problema pode ser evitado movendo o /usr (se não contiver nenhum dados privado) e então criar um subdir separado para cada máquina de diskless. Por exemplo, se o /export/linux/machine1 estiver montado então o /mnt olha a estrutura de diretório depois do setup inicial com

       ______________________________________________________________________
       /export/linux/machine1/bin
       /export/linux/machine1/sbin
       /export/linux/machine1/lib
       /export/linux/machine1/etc
       /export/linux/machine1/var
       /export/linux/machine1/usr
       ______________________________________________________________________

Depois das mudanças você terá

  ______________________________________________________________________
  /export/linux/machine1/bin
  /export/linux/machine1/sbin
  /export/linux/machine1/lib
  /export/linux/machine1/etc
  /export/linux/machine1/var
  /export/linux/usr
  ______________________________________________________________________

Agora crie o subdirectories para as outras máquinas. Assumimos agora que suas máquinas de diskless são chamadas de machine1, machine2, machine3, etc.; então você pode usar o script bash para o setup dos outros diretórios

       ______________________________________________________________________

               cd /export/linux
               for x in machine2 machine3 ; do
                       mkdir $x; cd $x
                       (cd ../machine1; tar cf - *) | tar xvf -
               done
       ______________________________________________________________________

Então faça a seguinte exportação:

· somente leitura de /export/linux/usr para todo mundo.
· /export/linux/machine1 só para machine1 com direitos rw,root.
· /export/linux/machine2 só para machine2 com direitos rw,root.
· /export/linux/machine3 só para machine3 com direitors rw,root.

como segue (--o formato deste exemplo segue a sintaxe para exportações de arquivos SunOs 4.1.3--):

       ______________________________________________________________________

       # This file is /etc/export
       # for remote linux X terminals by Buci
       # this line is only once
       /export/root/usr             -access=linuxnet
       # these lines once for every host
       /export/root/machine1       rw=machine1,root=machine1
       /export/root/machine2       rw=machine2,root=machine2
       /export/root/machine3       rw=machine3,root=machine3
       ______________________________________________________________________

Não esqueça de rodar exportfs -a.

5.6. Configurando o servidor de tftp

Agora é necessário configurar o servidor de tftp. Se você não precisa de segurança tftp então tudo é bastante simples para os seus clientes que pode ter boot no diretório /export.

Se precisa um tftp seguro então você pode fazer uma estrutura /export/linux completo debaixo de /tftpboot (com um único kernel real e vínculos simbólicos para as outras máquinas), ou deixar o diretório de /export seja o diretório de boot do tftpd seguro. Ou, se você tem um diretório separado de tftpboot então, semelhantemente, você precisa de somente um estrutura de diretório original com um único kernel e vínculos simbólicos para os outros. Você pode acessar esta configuração digitando o seguinte:

       ______________________________________________________________________
             mkdir -p /tftpboot/export/linux/machine1
             cd /tftpboot/export/linux/machine1
             cp /export/linux/machine1/<nome do kernel> .
       ______________________________________________________________________

Então digite o seguinte:

       ______________________________________________________________________
             mkdir -p /tftpboot/export/linux/machine2
             cd ../machine2
             ln -s ../machine2/<name do kernel>
       ______________________________________________________________________

5.7. Trabalho final

Finalmente, você tem que inserir

       ______________________________________________________________________
          /sbin/mount nfs_server:/export/linux/usr /usr
       ______________________________________________________________________

como a primeira linha em

       ______________________________________________________________________
          /export/linux/<machinex>/etc/rc.d/rc.S
       ______________________________________________________________________

onde <machinex> representa machine1, machine2, etc.

6. Memória e exigências de espaço em disco; velocidade

Eu testei isto somente no Slackware 2.3; para outras distribuições/versões onde os números seguintes podem variar.

· Diskspace: 28MB + 6.5MB/máquina

· RAM: Eu estou usando X em 8 MB. Para só 4MB é preciso de swap, eu acho, que pode ser criado --separadamente para cada máquina-- em /tmp. Faça e não esqueça de rodar o mkswap.

· Velocida: Eu não tive nenhum problema em 486 DX2/66 com 8 Megs.

7. Possíveis erros

· eu achei um erro estranho: no sub-diretório /dev o SunOS corrompeu as entradas de dispositivo assim eu precisei re-executar o MAKEDEV e montar o sub-diretório sobre um disco num baseado em um box-linux. (A razão era a diferenças entre o nfs do linux e o nfs da SunOs: ambos uso 32 bit para o número de dispositivo Principal e Secundário, menos o linux que usa 16 bit em campos largos para ambos, SunOs usa 14 bit em campo largo para Principal e 18 bit largo no arquivo para número de dispositivo Secundário.)

· Quando o linux de diskless é bootado, há somente uma rota incluida na tabela de rota ao servidor de tftp, assim você precisa montar as tabelas de rotas corretas. Você tem duas escolhas aqui:

· configura todo o rc.S à mão para toda máquina

· use um pacote de cliente de bootp e escreva um script de setup generalizado

8. Erros e possíveis expansões adicionais deste documento

· citação Correta de documentos relacionados.

· SunOs usa a base BSD. Precise incluir SVR4 (por exemplo Solaris) na base de configuração do servidor.

· Embora Linux seja bastante semelhante a SunOs como servidor de bootp/tftp, um servidor exemplo de linux baseado poderia ser usado perfeitamente.

· Update deste documento para o pacote de etherboot atual.

· Visualização das diferenças entre o root de nfs consertado na versão do kernel 1.2.13 e o 1.3.x kernel mais novo que contêm o nfs-root.

· Acesso para outras placas de redes wd8013

· Inclusão de informação de configuração para o bootpc, um cliente de bootp para o linux para montar as tabelas de rotas corretamente.

· Tips (Dicas) e outros erros: por favor, informe a buci@math.klte.hu Agradeco a você.


[Help OnLine] [Distribuições] [Novidades] [Eventos] [Usuários] [Aplicativos] [Hardware] [Projetos] [Vendedores] [Serviços]
[Linux Brasil]
WebSite Design: Buick
Copyright © 1997-1998 - Buick. All Rights Reserved.
[Linux-Org]