<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN">

<!-- TOCTITLE="Tabela de Conteúdo" -->

<book id="ltsp-4.1-0" lang="pt_BR">

  <bookinfo>
    <title>LTSP - Linux Terminal Server Project - v4.1</title>

    <authorgroup>
        <author>
           <firstname>James</firstname>
           <surname>McQuillan</surname>
           <affiliation>
              <address><email>jam@LTSP.org</email>
              </address>
           </affiliation>
        </author>
	<othercredit>
        <firstname>Alexandre</firstname>
	   <surname>Cavalcante Alencar</surname>
	   <affiliation>
	      <jobtitle>Lead Brazilian Translator</jobtitle>
	      <address>
	         <email>alexandre@debian-ce.org</email>
	      </address>
	   </affiliation>
	</othercredit>
	<othercredit>
	   <firstname>Grace</firstname>
	   <surname>Prado</surname>
	   <affiliation>
	      <jobtitle>Brazilian Translator</jobtitle>
	      <address>
	         <email>gracempb@yahoo.com.br</email>
	      </address>
	   </affiliation>
	</othercredit>
	<othercredit>
	   <firstname>Erlon</firstname>
	   <surname>Sousa Pinheiro</surname>
	   <affiliation>
	      <jobtitle>Brazilian Translator</jobtitle>
	      <address>
	         <email>erlon@debian-ce.org</email>
	      </address>
	   </affiliation>
	</othercredit>
	<othercredit>
	   <firstname>Thiago</firstname>
	   <surname>Bortoletto Vaz</surname>
	   <affiliation>
	      <jobtitle>Brazilian Translator</jobtitle>
	      <address>
	         <email>tiago@debian-ba.org</email>
	      </address>
	   </affiliation>
	</othercredit>
    </authorgroup>

    <revhistory>
       <revision>
         <revnumber>4.1.3&nbsp;</revnumber>
         <date>2004-06-20</date>
         <authorinitials>jam</authorinitials>
        </revision>
 	<revision>
         <revnumber>4.1.3-0a-ptbr&nbsp;</revnumber>
         <date>2005-11-12</date>
         <authorinitials>aac</authorinitials>
        </revision>
    </revhistory>

    <copyright>
        <year>2005</year>
        <holder>James A. McQuillan</holder>
    </copyright>

    <abstract>
       <para>
           O GNU/Linux é uma grande plataforma para implementar thin clients.
           O propósito primário deste documento é mostrar como implantar thin
	   clients usando o LTSP.  Mas, este documento aborda muitos problemas
	   com estações sem disco em geral.
       </para>
    </abstract>
  </bookinfo>

<preface>
    <title>Introdução</title>

    <para>
	O LTSP fornece um meio simples de utilizar estações de baixo custo
	como terminais gráficos ou caracteres em um servidor GNU/Linux.
    </para>

    <para>
	Em uma configuração tradicional de escritório há PC's relativamente
	potentes baseados em processadores Intel em cada mesa de trabalho.
	Cada um com muitos gigabytes de espaço em disco. Os usuários armazenam
	seus dados no disco local, e cópias de segurança são raramente (quando
	são) realizadas.
    </para>

    <para>
	Será que realmente faz sentido ter um computador completo em cada mesa?
    </para>

    <para>
	Dizemos que não.
    </para>

    <para>
	Por sorte, há outro meio. Utilizando o LTSP, você pode ter PC's baratos,
	remover seu disco rígido, disquete, CD-ROM, e adicionar uma placa de rede
	com suporte a boot por rede. Muitas placas de rede possuem encaixes, apenas
	esperando por um chip de boot ser instalado.
    </para>

    <para>
	Durante a fase de boot, a estação sem disco obtém suas informações IP
	e o kernel do servidor, e então monta o sistema de arquivos raíz via NFS.
    </para>

    <para>
	A estação de trabalho pode ser configurada em um dos três modos:
        <itemizedlist>
            <listitem>
                <para>
                   <command>Interface Gráfica X Window System</command>
                </para>
                <para>
		    Usando o X Windows, a estação de trabalho pode ser usada para acessar
		    qualquer aplicação no servidor, ou em outros servidores na rede.
                </para>
            </listitem>
        </itemizedlist>

        <itemizedlist>
            <listitem>
                <para>
                   <command>Interface Caractere Sessões Telnet</command>
                </para>
                <para>
		    A estações de trabalho pode obter múltiplas sessões telnet no
		    servidor. Cada sessão telnet estará em uma janela virtual separada.
		    Pressionando Alt-F1 até Alt-F9 irá alternar entre as sessões.
                </para>
            </listitem>
        </itemizedlist>

        <itemizedlist>
            <listitem>
                <para><command>Aviso Shell</command></para>
                <para>
		    A estação de trabalho pode ser configurada para cair diretamente
		    em um shell bash no console. Isto é muito útil quando estiver
		    depurando problemas com o X Windows ou NFS.
                </para>
            </listitem>
        </itemizedlist>
    </para>

    <para>
	Uma coisa realmente interessante é que você pode ter várias estações de
	trabalho conectadas a um único servidor GNU/Linux. Quantas estações de
	trabalho? Bem, isto depende da capacidade do servidor e das aplicações
	que serão usadas.
    </para>

    <para>
	Não é comum ter 50 estações de trabalho, todas utilizando o Mozilla e
	OpenOffice.org em uma Dual P4-2.4 com 4GB de ram. Nós sabemos que funciona.
	De fato, a carga média estará raramente acima de 1.0.
    </para>

    <sect1>
        <title>Disclaimer</title>
        <para>
	    Nem o autor ou distribuidores, ou qualquer outro contribuidor deste
	    documento é responsável de qualquer forma por danos físicos, financeiros,
	    morais ou qualquer outro tipo ocorridos por seguir sugestões deste texto.
        </para>
    </sect1>

    <sect1 id="copyright">
        <title>Direitos Autorais e Licença</title>
        <para>
            This document is copyright 2004 by James McQuillan, and is released
            under the terms of the GNU Free Documentation License, which is hereby
            incorporated by reference.
        </para>
    </sect1>
</preface>

<chapter>
    <title>Teoria da operação</title>
    <para>
        Iniciar uma estação sem disco envolve alguns passos. Entender o que está
        acontecendo ao longo do processo irá tornar muito mais fácil a solução
        de problemas se eles chegarem a acontecer.
    </para>
    <para>
        Há quatro serviços básicos que são necessários para iniciar uma estação LTSP.
        São eles:
        <itemizedlist>
            <listitem>
                <para>DHCP</para>
            </listitem>
            <listitem>
                <para>TFTP</para>
            </listitem>
            <listitem>
                <para>NFS</para>
            </listitem>
            <listitem>
                <para>XDMCP</para>
            </listitem>
        </itemizedlist>

    </para>

    <para>
        O LTSP é muito flexível.  Cada um dos serviços relacionados acima podem
        ser oferecidos pelo mesmo servidor, ou de diferentes servidores.
        Por exemplo, iremos descrever uma configuração simples, na qual consiste
        de um único servidor, fornecendo todos os serviços acima.
    </para>

  <sect1>
    <title>As etapas que a estação de trabalho passará</title>
    <orderedlist spacing="normal">
        <listitem>
            <para>
                Carregar o kernel Linux na memória da estação de trabalho.
                Isto pode ser feito de diferentes maneiras, incluindo:
                <orderedlist>
                  <listitem>
                    <para>
                      Bootrom (Etherboot,PXE,MBA,Netboot)
                    </para>
                  </listitem>
                  <listitem>
                    <para>
                      Disquete
                    </para>
                  </listitem>
                  <listitem>
                    <para>
                      Disco rígido
                    </para>
                  </listitem>
                  <listitem>
                    <para>
                      CD-ROM
                    </para>
                  </listitem>
                  <listitem>
                    <para>
                      Dispositivos de armazenamento USB
                    </para>
                  </listitem>
                </orderedlist>
            </para>
            <para>
              Cada um dos métodos acima será explicado neste capítulo.
            </para>
        </listitem>

        <listitem>
            <para>
                Uma vez que o kernel tenha sido carregado na memória, ele iniciará
                sua execução.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                O kernel irá
		iniciar todo o sistema básico e todos os periféricos
		que reconhecer.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                É aqui que a diversão começa realmente. Durante o processo de carga
                do kernel, a imagem de um ramdisk também será carregada em memória.
                Um argumento na linha de comando do kernel <command>root=/dev/ram0</command>
                o informa para montar a imagem como o diretório raiz.
            </para>
            <para></para>
        </listitem>
                 
        <listitem>
            <para>
                Normalmente, quando o kernel finaliza sua carga, ele carregará
                o programa <command>init</command>.  Mas, neste caso, instruímos
                o kernel para carregar um pequeno shell script em vez do padrão.
                Fazemos isto passando <command>init=/linuxrc</command> na linha
                de comando do kernel.
            </para>
            <para></para>
        </listitem>
                
        <listitem>
            <para>
                O script <command>/linuxrc</command> inicia por analisar o
                barramento PCI, procurando por uma placa de rede. Para cada
                dispositivo PCI que ele encontrar, será feita uma busca no
                arquivo /etc/niclist, para ver se há uma coincidência.
		Uma vez que coincidência é encontrada, o nome do módulo da placa
		de rede é retornado, e o modulo do kernel é carregado.
		Para as placas ISA, o módulo precisa ser especificado na linha
		de comando do kernel, juntamente com qualquer endereço IRQ,
		ou parâmetros de endereço que possam ser requeridos.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Um pequeno cliente DHCP chamado <command>dhclient</command> irá então,
                ser executado para realizar outra consulta ao servidor DHCP.
                É preciso fazer esta consulta no espaço de usuário, porque precisamos
                de mais informações do que foram obtidas pela consulta ao DHCP pelo bootrom.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Quando o <command>dhclient</command> receber uma resposta do servidor,
                ele irá executar o arquivo <command>/etc/dhclient-script</command>,
                o qual utilizará as informações recebidas, e configurará a interface eth0.
            </para>
            <para></para>
        </listitem>


        <listitem>
            <para>
                Até este ponto, o sistema de arquivos raíz era um disk.
                Agora, o script /linuxrc irá montar um novo sistema de arquivos
                raíz via NSF. O diretório exportado do servidor é tipicamente
                <command>/opt/ltsp/i386</command>. Ele não pode simplesmente montar
                o novo sistema de arquivos como /. Ele primeiro precisa montar este
                em /mnt. Então, ele chama <command>pivot_root</command>.
                A pivot_root irá trocar	o sistema de arquivos raiz atual por um
                novo sistema de arquivos. Quando ele completar,	o sistema de
                arquivos NFS estará montado como / e o sistema de arquivos raiz
                anterior estará montado em /oldroot.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Uma vez que a montagem e troca do novo sistema de arquivos raiz
		estiver completa, nós terminamos com o shell script /linuxrc e
		precisamos chamar o programa <command>/sbin/init</command> real.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                O Init irá ler o arquivo <filename>/etc/inittab</filename> e começará
                a configurar o ambiente da estação.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Um dos primeiros ítens é o arquivo inittab.
		É o comando <command>rc.sysinit</command> que será executado enquanto
		a estação estiver no estado '<emphasis role="strong">sysinit</emphasis>'.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                O script rc.sysinit irá criar um disco em memória de 1MB para conter
                todas as coisas que precisam ser gravadas ou modificadas de alguma forma.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                O ramdisk será montado como o diretório <filename class="directory">/tmp</filename>
                Qualquer arquivo que precisa ser gravado, existirá atualmente no
                diretório <filename class="directory">/tmp</filename> haverá
                links simbólicos apontando para estes arquivos.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                O sistema de arquivo <filename class="directory">/proc</filename>  está montado.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                O arquivo <filename>lts.conf</filename> será processado, e todos os parâmetros
		neste arquivo que pertencem a esta estação, serão configurados nas variáveis
		de ambiente para uso do script rc.sysinit.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Se a estação estiver configurada para usar SWAP via NFS, o diretório
                <command>/var/opt/ltsp/swapfiles</command> será montado como /tmp/swapfiles.
                Então, se ainda não existir um arquivo de swap para esta estação,
                ele será criado automaticamente. O tamanho do arquivo de swap é
                configurado no arquivo <filename>lts.conf</filename>.
            </para>
            <para>
                O arquivo de swap será então ativado, através do comando
                <command>swapon</command>.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                A interface de rede <emphasis role="strong">loopback</emphasis> é configurada.
		Esta é a interface de rede que usa o endereço IP <emphasis>127.0.0.1</emphasis>.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Se as aplicações locais estiverem ativadas, então o diretório
                <command>/home</command> será montado, de forma que as aplicações possam
                acessar o diretório pessoal dos usuários.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Diversos diretórios são criados.
		O sistema de arquivos <filename class="directory">/tmp</filename> para manter
		alguns dos arquivos transitórios que são necessários durante a execução do sistema.
		Diretórios como:
                <orderedlist>
                    <listitem>
                        <para>
                            <filename>/tmp/compiled</filename>
                        </para>
                        <para></para>
                    </listitem>
                    <listitem>
                        <para>
                            <filename>/tmp/var</filename>
                        </para>
                        <para></para>
                    </listitem>
                    <listitem>
                        <para>
                            <filename>/tmp/var/run</filename>
                        </para>
                        <para></para>
                    </listitem>
                    <listitem>
                        <para>
                            <filename>/tmp/var/log</filename>
                        </para>
                        <para></para>
                    </listitem>
                    <listitem>
                        <para>
                            <filename>/tmp/var/lock</filename>
                        </para>
                        <para></para>
                    </listitem>
                    <listitem>
                        <para>
                            <filename>/tmp/var/lock/subsys</filename>
                        </para>
                        <para></para>
                    </listitem>
                </orderedlist>
            </para>
            <para></para>

            <para>
                serão todos criados.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                O arquivo <filename>/tmp/syslog.conf</filename> será criado.
                Este arquivo conterá informações com a localização do daemon
                <command>syslogd</command> o qual irá armazenar as informações enviadas
                pela rede. O computador com o serviço syslog é especificado no arquivo
                <filename>lts.conf</filename>. Há um link simbólico chamado <filename>/etc/syslog.conf</filename>
                que aponta para o arquivo <filename>/tmp/syslog.conf</filename>.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                O daemon <command>syslogd</command> é iniciado,
		usando o arquivo de configurações criado no passo anterior.
            </para>
            <para></para>
        </listitem>

        <listitem>
          <para>
               Uma vez que o script rc.sysinit script estiver concluído,
	       o controle retorna para o programa /sbin/init, o qual irá
	       mudar o runlevel de <emphasis role="strong">sysinit</emphasis> para <emphasis role="strong">5</emphasis>.
          </para>
          <para>
               Isto fará com que todas as entradas no arquivo  <filename>/etc/inittab</filename> sejam executadas.
          </para>
          <para></para>
        </listitem>

        <listitem>
          <para>
               Por padrão, haverá uma entrada no inittab para executar o script <command>/etc/screen_session</command>
	       no tty1, tty2 e tty3.  Isto significa que você pode executar 3 sessões ao mesmo tempo,
	       e o tipo da sessão e controlado pelas variáveis <emphasis role="strong">SCREEN_01</emphasis>, <emphasis role="strong">SCREEN_02</emphasis>
	       e <emphasis role="strong">SCREEN_03</emphasis> no arquivo <filename>lts.conf</filename>.
          </para>
          <para>
               Mais entradas podem ser configuradas no <filename>inittab</filename> para mais sessões, se desejado.
          </para>
          <para></para>
        </listitem>

        <listitem>
            <para>
                Se <emphasis role="strong">SCREEN_01</emphasis> é configurada para o valor <emphasis role="strong">startx</emphasis>,
                então, o script <command>/etc/screen.d/startx</command> será executado, o qual irá lançar o X Windows System,
                dando-lhe uma interface gráfica de usuário.
            </para>
            <para>
                Há um parâmetro chamado <command>XSERVER</command> no arquivo <command>lts.conf</command>,
		Se este parâmetro estiver faltando, ou configurado para "<command>auto</command>", então uma
		detecção automática da placa de vídeo será tentada. Se a placa for PCI ou AGP, então serão obtidos o
		PCI Vendor e o Device id, e feita uma busca no arquivo <command>/etc/vidlist</command>.
            </para>
            <para>
                Se a placa for suportada pelo Xorg 6.7, a rotina pci_scan irá retornar o nome do módulo do driver.
		Se esta for suportada apenas pelo XFree86 3.3.6, o pci_scan irá retornar o nome do servidor X a ser usado.
		O script startx pode informar a diferença por que os nomes dos módulos do X Server 3.3.6 começam com
		'XF86_', enquanto na nova versão do X Server Xorg, os nomes dos módulos são tipicamente em minúsculas,
		como <emphasis>ati</emphasis> ou <emphasis>trident</emphasis>.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Se o Xorg for usado, então o script <command>/etc/build_x4_cfg</command> será chamado para
		criar um arquivo XF86Config file.  Se o XFree86 3.3.6 for usado, então o script
		<command>/etc/build_x3_cfg</command> será chamado para criar o arquivoXF86Config.
		Estes arquivos serão postos no diretório <filename>/tmp</filename>.
		Os quais, se você estiver lembrado, é um ramdisk, visto apenas pela estação.
            </para>
            <para>
                O arquivo XF86Config será criado, baseado nas entradas do arquivo <command>/etc/lts.conf</command>.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Uma vez que o arquivo XF86Config foi criado, então o script <command>startx</command>
		irá carregar o X Server com aquele novo arquivo de configuração.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                O X Server irá enviar uma consulta <emphasis role="strong">XDMCP</emphasis> para o
		servidor LTSP, o qual irá oferecer um diálogo de login.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Neste ponto, o usuário pode logar. Ele irá obter uma sessão no servidor.
            </para>
            <para>
                Em um primeiro momento, isto confunde muitas pessoas. Elas estão 
		à estação, mas elas estão executando uma sessão no servidor. Todos os comandos que
		elas executam, serão executados no servidor, mas a saída será mostrada na estação.
            </para>
            <para></para>
        </listitem>

    </orderedlist>
  </sect1>

  <sect1>
    <title>Carregando o kernel na memória</title>
    <para>
      Pôr o kernel Linux dentro das memórias das estações pode ser feito de várias maneiras.
    </para>
    <itemizedlist>
      <listitem>
        <para>Boot ROM</para>
      </listitem>
      <listitem>
        <para>Mídia local</para>
      </listitem>
    </itemizedlist>
    <para></para>

    <sect2>
      <title>Boot ROM</title>
      <itemizedlist>
         <listitem>
           <para>Etherboot</para>
           <para>
             O Etherboot é um projeto de bootrom open-source muito popular.
             Ele contém drivers para muitas placas de rede comuns, e funciona muito bem com o LTSP.
           </para>
           <para>
             O kernel Linux kernels precisa ser 'rotulado' com o <command>mknbi-linux</command>,
	     o qual irá preparar o kernel para boot via rede, através da prefixação do kernel com alguns códigos
	     adicionais e anexando uma initrd ao final do kernel.
           </para>
           <para>
             O kernels que é fornecido com o LTSP já está 'rotulado' e pronto para uso com o Etherboot.
           </para>
           <para>
             O Etherboot também pode ser gravado em disquete, funcionando perfeitamente para testes.
           </para>
         </listitem>
         <listitem>
           <para>PXE</para>
           <para>
              Parte da especificação 'Wired for Management' da década de 1990 incluiu a especificação
	      de uma tecnologia de bootrom conhecida como <emphasis>Pre-boot Execution Environment</emphasis> 
              comumente abreviada como <emphasis role="strong">PXE</emphasis>.
           </para>

           <para>
              Uma bootrom PXE bootrom pode carregar até no máximo um arquivo de 32 Kilobytes.
	      Um kernel Linux é um pouco maior que isto. Por isso, configuramos
	      um carregador de boot de segundo estágio chamado <emphasis role="strong">pxelinux</emphasis>.
	      O pxelinux é pequeno o bastante para ser carregado, e ele sabe como carregar arquivos
	      grandes, como o kernel Linux.
           </para>
         </listitem>
         <listitem>
           <para>MBA</para>
           <para>
              O Managed Boot Agent (MBA) é uma bootrom de uma companhia chamada <emphasis role="strong">emBoot</emphasis>.
	      A emBoot foi utilizada como a divisão Lanworks da 3Com.  O MBA é na realidade, quatro bootroms em uma.
	      Ele irá tratar PXE, TCP/IP, RPL e Netware.
           </para>
           <para>
              A implementação PXE do MBA funciona muito bem. Você pode usá-la com o pxelinux para carregar o kernel Linux.
           </para>
           <para>
	      O método <emphasis role="strong">TCP/IP</emphasis> pode ser usado, mas antes, o kernel precisa ser
	      preparado com um utilitário chamado <command>imggen</command>.
           </para>
         </listitem>
         <listitem>
           <para>Netboot</para>
           <para>
             O Netboot, assim como Etherboot, é um projeto de software livre que fornece imagens ROM livres para boot.
	     A diferença é que ele é um 'invólucro' para o driver NDIS ou drivers de pacotes distribuídos com as
	     placas de rede.
           </para>
         </listitem>
      </itemizedlist>
    </sect2>

    <sect2>
      <title>Mídia Local</title>
      <itemizedlist>
         <listitem>
           <para>Disquetes</para>
           <para>
             Há dois modos de iniciar uma estação LTSP com disquete. Um modo é carregar o Etherboot no setor de boot
	     do disquete. Então, ele funcionará como uma bootrom. O código de boot será executado, a placa de rede
	     será iniciada, e o kernel será carregado do servidor de rede.
           </para>
           <para>
             Você poderá também gravar o kernel e a initrd no disquete e iniciar daquela maneira.
	     Entretanto, atualmente, é mais rápido carregar o kernel via rede.
           </para>
         </listitem>
         <listitem>
           <para>Disco rígido</para>
           <para>
              O disco rígido pode ser usado com o LILO ou GRUB, para carregar o kernel Linux e a initrd ou você pode
	      carregar uma imagem bootrom Etherboot do disco rígido, e esta atuará como uma bootrom.
           </para>
         </listitem>
         <listitem>
           <para>CD-ROM</para>
           <para>
              Um CD-ROM 'bootavel' pode ser carregado com o kernel Linux ou uma imagem Etherboot.
           </para>
         </listitem>
         <listitem>
           <para>Dispositivos de armazenamento USB</para>
           <para>
              Assim como o CD-ROM, disquete e disco rígido, você pode usar um dispositivo de armazenamento USB
	      tanto para iniciar um módulo Etherboot, como um kernel Linux e uma imagem initrd.
           </para>
         </listitem>
      </itemizedlist>
    </sect2>

  </sect1>

</chapter>


<chapter>
    <title>Instalando o LTSP no servidor</title>
    <para>
    	É melhor pensar no LTSP como uma distribuição completa de Linux.
    	É uma distribuição que funciona no topo de uma distribuição host.
    	A distribuição host pode ser qualquer distribuição de Linux que você quiser.
    	De fato, não há nenhuma exigência real que o host esteja rodando Linux.
    	A única exigência é que o sistema host seja capaz de servidor NFS (Network File System).
    	A maioria dos sistemas Unix pode fazê-lo. De fato, mesmo algumas versões de Microsoft Windows
    	podem ser configuradas para trabalhar como um servidor LTSP.
    </para>

    <para>
      Há três fases para construir um servidor LTSP.
      <itemizedlist>

        <listitem>
          <para>Instalação dos utilitários LTSP</para>
        </listitem>

        <listitem>
          <para>Instalando os pacotes dos clientes LTSP</para>
        </listitem>

        <listitem>
          <para>Configurando os serviços necessários ao LTSP</para>
        </listitem>

      </itemizedlist>
    </para>

    <sect1>
        <title>Instalação dos utilitários LTSP</title>
      <para>
        A partir da versão 4.1, o LTSP possui um pacote de utilitários para a instalação
        e gerenciamento de pacotes dos clientes LTSP (O software que é executado nos clientes),
        e para configurar os serviços no servidor LTSP.
      </para>

      <para>
        O utilitário de administração é chamado de <command>ltspadmin</command>
        e a ferramenta de configuração de <command>ltspcfg</command>.
	Ambas as ferramentas são partes do pacote <command>ltsp-utils</command>.
      </para>

      <para>
        O pacote <emphasis role="strong">ltsp-utils</emphasis> está disponível nos
        formatos <emphasis role="strong">RPM</emphasis> e <emphasis role="strong">TGZ</emphasis>.
        Escolha o formato que preferir instalar, e siga as instruções apropriadas.
      </para>

      <sect2>
        <title>Instalando o pacote RPM</title>
        <para>
            Faça o download da última versão do pacote RPM ltsp-utils, e instale-o
            utilizando o seguinte comando:
            <programlisting>
		rpm -ivh ltsp-utils-0.1-0.noarch.rpm
	    </programlisting>
            O comando acima irá instalar os utilitários LTSP no servidor.
        </para>
      </sect2>

      <sect2>
        <title>Instalando o pacote TGZ</title>
        <para>
	    Faça o download da última versão do pacote RPM ltsp-utils, e instale-o
            utilizando o seguinte comando:
            <programlisting>
		tar xzf ltsp-utils-0.1-0.noarch.tgz
		cd ltsp_utils
		./install.sh
		cd ..
	    </programlisting>
	    O comando acima irá instalar os utilitários LTSP no servidor.
            Isso é útil para servidores cujo gerenciamento de pacotes não é baseado em RPM.
        </para>
      </sect2>
    </sect1>

    <sect1>
        <title>Instalando os pacotes dos clientes LTSP</title>
        <para>
            Uma vez que a instalação do pacote ltsp-utils estiver completa,
            você pode executar o comando <command>ltspadmin</command>.
            Este utilitário é utilizado para gerenciar os pacotes dos clientes LTSP.
            Ele irá consultar o repositório de download do LTSP, e obter a lista
            dos pacotes atualmente disponíveis.
        </para>

        <para>
          Execute o comando <command>ltspadmin</command> e você irá ver uma tela como o seguinte:
        </para>
        <para>
          <figure>
            <title>Instalador LTSP - Tela Principal</title>
            <GRAPHIC FILEREF="pics/installer_main_window.jpg"
                     FORMAT="JPG"
                     SRCCREDIT="James McQuillan, 2004" >
          </figure>

        </para>

        <para>
          Nesta tela, você pode escolher "Install/Update", e se esta for a sua primeira vez
          executando o utilitário, ele irá exibir a tela de configuração do instalador.
        </para>
        <para>
          <figure>
            <title>Instalador LTSP - Tela de Configuração</title>
            <GRAPHIC FILEREF="pics/installer_config_window.jpg"
                     FORMAT="JPG"
                     SRCCREDIT="James McQuillan, 2004" >
          </figure>
        </para>

        <para>
          Na tela de <emphasis role="strong">configuração</emphasis>, você pode definir
          diversos parâmetros que o instalador irá utilizar, para fazer o download e instalar
          os pacotes LTSP.
          Estes parâmetros são:
          <variablelist>

            <varlistentry>
              <term><command>Where to retrieve packages from</command></term>
              <listitem>
                <para>
                  Esta é a URL, que aponta para o repositório de pacotes.
                  Tipicamente, deverá ser <filename>http://www.ltsp.org/ltsp-4.1</filename>,
                  mas se você desejar instalar os pacotes de um sistema de arquivos local,
                  você pode usar <filename>file:</filename>. Por exemplo, se os pacotes
                  estiverem em um CD-ROM, e você tiver montado o CD-ROM em <filename>/mnt/cdrom</filename>,
                  então o valor para o repositório de pacotes será:
                  <filename>file:///mnt/cdrom</filename>. (Note as três barras).
                </para>
                <para></para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>In which directory would you like to place the LTSP client tree</command></term>
              <listitem>
                <para>
                  Este é o diretório no servidor, onde você deseja manter a árvore dos clientes LTSP.
                  Tipicamente, será: <filename>/opt/ltsp</filename>.  O diretório será criado,
                  caso o mesmo ainda não exista.
                </para>
                <para>
                  Dentro deste diretório, o diretório raiz para cada uma das arquiteturas será criado.
                  Atualmente, apenas as estações x86 são oficialmente suportadas pelo LTSP, mas há várias
                  pessoas trabalhando em 'ports' para outras arquiteturas, como PPC e SPARC.
                </para>
                <para></para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>HTTP Proxy</command></term>
              <listitem>
                <para>
                  Se o servidor estiver por trás de um firewall, e o acesso a web deva ser feito através
                  de um proxy, você pode configurar o instalador para usar o proxy aqui. Os valores devem
                  conter a URL para o proxy, incluindo o protocolo e a porta. Um exemplo para esta configuração é:
		  <filename>http://firewall.seudominio.com.br:3128</filename>.
                </para>
                <para>
                  Se você não precisa de um proxy, deverá configurar esta opção para "<filename>none</filename>".
                </para>
                <para></para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>FTP Proxy</command></term>
              <listitem>
                <para>
                  Para pacotes localizados em um servidor FTP, se você precisar acessar através
                  de um proxy FTP, você pode informar aqui. A sintaxe é similar para a opção proxy HTTP acima.
                </para>
                <para>
                  Se você não precisa de um proxy, deverá configurar esta opção para "<filename>none</filename>".
                </para>
                <para></para>
              </listitem>
            </varlistentry>
          </variablelist>
        </para>

        <para>
          Uma vez que você tenha concluído a tela da configuração, o instalador consultará
          o repositório de pacotes e obterá a lista dos componentes atualmente disponíveis.
        </para>

        <para>
          <figure>
            <title>LTSP installer - Component list</title>
            <GRAPHIC FILEREF="pics/installer_comp_list_window.jpg"
                     FORMAT="JPG"
                     SRCCREDIT="James McQuillan, 2004" >
          </figure>
          Selecione cada um dos componentes que deseja instalar. Para selecionar um componente,
          mova a linha de destaque para o componente desejado e pressione '<command>I</command>' para
          selecionar o componente individual.
          Você pode pressionar também '<command>A</command>' para selecionar TODOS os componentes.
          Na maioria das vezes, será este o seu objetivo. Desta forma, você poderá dar suporte
          à maioria dos hardwares dos terminais.
        </para>

        <para>
          Há várias teclas que podem ser utilizadas para navegar nesta tela.
          Você pode obter ajuda para estas, pressionando a tecla '<command>H</command>'.
          <figure>
            <title>LTSP installer - Help window</title>
            <GRAPHIC FILEREF="pics/installer_help_window.jpg"
                     FORMAT="JPG"
                     SRCCREDIT="James McQuillan, 2004" >
          </figure>
        </para>

        <para>
          Se você deseja ver a lista de pacotes que estão em um determinado componente,
          você pode pressionar '<command>S</command>', e a lista de pacotes será exibida.
          Será mostrada a versão atualmente instalada, bem como a última versão disponível.
          <figure>
            <title>LTSP installer - Package list</title>
            <GRAPHIC FILEREF="pics/installer_pkg_list_window.jpg"
                     FORMAT="JPG"
                     SRCCREDIT="James McQuillan, 2004" >
          </figure>
        </para>

        <para>
          Uma vez que os componentes desejados estejam selecionados, você pode sair da
          tela de seleção de componentes. O instalador irá perguntar a você, para se certificar
	  que você realmente deseja instalar/atualizar os pacotes selecionados.
          Se você responder '<command>Y</command>', então ele irá fazer o download e a
          instalação dos pacotes selecionados.
        </para>

    </sect1>

    <sect1>
        <title>Configurando os serviços necessários ao LTSP</title>
        <para>
          Há quatro serviços básicos necessários para suportar o boot
          de uma estação LTSP. São eles:
          <itemizedlist>
            <listitem><para>DHCP</para></listitem>
            <listitem><para>TFTP</para></listitem>
            <listitem><para>NFS</para></listitem>
            <listitem><para>XDMCP</para></listitem>
          </itemizedlist>
        </para>

        <para>
          O <command>ltspcfg</command> pode ser utilizado para configurar todos
          estes serviços, além de muitas outras coisas relacionadas ao LTSP.
        </para>
        <para>
          Você pode acessar o <command>ltspcfg</command> do <command>ltspadmin</command>,
          ou pode executá-lo digitando <command>ltspcfg</command> em um shell.
        </para>

        <para>
          Quando você executar o utilitário ltspcfg, ele irá verificar o servidor,
          para determinar o que está atualmente instalado e executando.
          Você verá uma tela como esta:
          <figure>
            <title>ltspcfg - Initial screen</title>
            <GRAPHIC FILEREF="pics/ltspcfg_initial_screen.jpg"
                     FORMAT="JPG"
                     SRCCREDIT="James McQuillan, 2004" >
          </figure>
          Esta tela mostra todos os itens que o utilitário procura.
        </para>

        <para>
          Para configurar todos os itens que precisam de configuração, escolha '<command>C</command>',
          e o menu de configuração será exibido.
          Do menu de configuração, você precisará percorrer por cada item, para
          certificar-se que estes estão configurados corretamente para servir às
          estações LTSP.

          <figure>
            <title>ltspcfg - Initial screen</title>
            <GRAPHIC FILEREF="pics/ltspcfg_service_list.jpg"
                     FORMAT="JPG"
                     SRCCREDIT="James McQuillan, 2004" >
          </figure>

          <variablelist>
            <varlistentry>
              <term><command>1 - Runlevel</command></term>
              <listitem>
                <para>
                  A variável <command>Runlevel</command> é usada pelo programa <command>init</command>.
                  Com sistemas GNU/Linux e Unix, em um determinado momento, é dito
                  estar em um "Runlevel" específico.
                  Os Runlevels 2 ou 3 são tipicamente usados quando o servidor
                  está em modo texto. O Runlevel 5 tipicamente indica que o
                  sistema está em modo gráfico com suporte a rede.
                </para>
                <para>
                  Para um servidor LTSP, tradicionalmente o Runlevel 5 é usado.
                  A maioria dos sistemas já está configurada para servir
                  NFS e XDMCP quando no Runlevel 5. Para aqueles sistemas que ainda
                  estão configurados para este fim, este utilitário tomará conta deles.
                </para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>2 - Interface selection</command></term>
              <listitem>
                <para>
                  Para sistemas que possuem múltiplas interfaces de rede, você precisará
                  especificar qual interface os Thin clients estão conectados.
                </para>
                <para>
                  Selecionando a interface, a ferramenta de configuração está apta
                  para criar os outros arquivos de configuração apropriados, como os
                  arquivos <filename>dhcpd.conf</filename> e <filename>/etc/exports</filename>.
                </para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>3 - DHCP configuration</command></term>
              <listitem>
                <para>
                  O DHCP precisar ser configurado para fornecer as informações
                  necessárias para as estações. Entre estas informações estão
                  <command>fixed-address</command>, <command>filename</command>, <command>subnet-mask</command>,
                  <command>broadcast-address</command> e <command>root-path</command>.
                </para>
                <para>
                  Selecionando este artigo de menu, você estará apto para criar
                  o arquivo de configuração <filename>dhcpd.conf</filename>, e então
                  ativar o <command>dhcpd</command> para executar no início do sistema.
                </para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>4 - TFTP configuration</command></term>
              <listitem>
                <para>
                  O TFTP é usado pelo 'thin client' para fazer o download do kernel Linux.
                  O serviço <command>tftpd</command> precisa ser ativado no servidor,
                  para servir os kernels.
                </para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>5 - Portmapper configuration</command></term>
              <listitem>
                <para>
                  O <command>Portmapper</command> é usado pelos serviços RPC.
                  Cada um dos serviços RPC, tal como o NFS.
                </para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>6 - NFS configuration</command></term>
              <listitem>
                <para>
                  O NFS é o serviço que permite que a árvore de diretórios local
                  seja montada nas máquinas remotas. Este é necessário ao LTSP,
                  porque as estações montam seus sistemas de arquivos raiz do servidor.
                </para>
                <para>
                  Este item de menu irá cuidar para que o serviço NFS seja configurado
                  para iniciar com o sistema. O arquivo de configuração é
                  <filename>/etc/exports</filename> e sua criação será descrita mais
                  adiante nesta seção.
                </para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>7 - XDMCP configuration</command></term>
              <listitem>
                <para>
                  O XDMCP é o "X Display Manager Control Protocol". O servidor X
                  envia uma requisição XDMCP para o gerenciador de 'Display' no
                  servidor para obter uma tela de login.
                </para>
                <para>
                  Os gerenciadores de 'display' comumente em uso são o <command>XDM</command>, <command>GDM</command> e <command>KDM</command>.
                  Este item de menu irá mostrar qual gerenciador de 'display'
                  foi encontrado, e qual está configurado para executar.
                </para>

                <para>
                  Por medida de segurança, o gerenciador de 'Display' é
                  configurado por padrão para não permitir as conexões de estações remotas.
                  Esta é normalmente a razão para a <emphasis role="strong">Gray screen with large X cursor</emphasis>.
                  O ltspcfg pode normalmente configurar o gerenciador de 'display"
                  para permitir que estações remotas se conectem ao servidor.
                </para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>8 - Create /etc/hosts entries</command></term>
              <listitem>
                <para>
                  Muitos serviços, como o NFS e o gerenciador de 'Display' precisam
                  mapear o endereço IP da estação para um nome de host.
                  Você pode configurar o Berkeley Intenet Naming Daemon (BIND) para
                  fazer isto, mas você deve certificar-se de configurar o <emphasis role="strong">reverses</emphasis>
                  corretamente. Finalmente, usar o BIND é provavelmente a melhor
                  maneira fazê-lo, mas a configuração do BIND é além da finalidade
                  deste documento e do utilitário ltspcfg.
                </para>

                <para>
                  Uma maneira mais simples para configurar o mapeamento de
                  endereços IP e nomes de host é o arquivo <filename>/etc/hosts</filename>.
                </para>

              </listitem>
            </varlistentry>

            <varlistentry>
              <term>
                     <command>9 - Create /etc/hosts.allow entries</command>
              </term>
              <listitem>
                <para>
                  Alguns serviços usam uma camada de segurança conhecida como
                  <emphasis role="strong">tcpwrappers</emphasis>. Este é configurado
                  através do arquivo<filename>/etc/hosts.allow</filename>.
                  Este item do menu irá configurar isto para você.
                </para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>
                     <command>10 - Create the /etc/exports file</command>
              </term>
              <listitem>
                <para>
                  Este é o arquivo usado pelo NFS, para determinar quais diretórios
                  permitem ser montados por máquinas remotas.
                  Este item do menu criará este arquivo.
                </para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>
                     <command>11 - Create the lts.conf file</command>
              </term>
              <listitem>
                <para>
                  A configuração de cada estação é direcionada por entradas no
                  arquivo <filename>lts.conf</filename>. Para estações razoavelmente
                  modernas com um barramento PCI, não deve ser necessária nenhuma
                  entrada adicional no lts.conf.  Mas, o arquivo ainda precisa existir.
                  Este item do menu criará o arquivo lts.conf padrão para você.
                </para>
              </listitem>
            </varlistentry>

          </variablelist>
        </para>

    </sect1>

    <sect1>
        <title>Configurações específicas da estação</title>
        <para>
            Agora, é o momento de informar o servidor LTSP sobre uma estação
            específica. Há três arquivos que contêm informações sobre as estações de trabalho.

            <orderedlist>

                <listitem>
                    <para>/etc/dhcpd.conf</para>
                </listitem>

                <listitem>
                    <para>/etc/hosts</para>
                </listitem>

                <listitem>
                    <para>/opt/ltsp/i386/etc/lts.conf</para>
                </listitem>

            </orderedlist>

        </para>

        <sect2>
            <title>/etc/dhcpd.conf</title>
            <para>
                A estação precisa de um endereço IP e outras informações.
                Ela irá obter as seguintes do servidor DHCP:
                <itemizedlist>
                    <listitem> <para>Endereço IP</para> </listitem>
                    <listitem> <para>Nome de host</para> </listitem>
                    <listitem> <para>Endereço IP do servidor</para> </listitem>
                    <listitem> <para>Gateway padrão</para> </listitem>
                    <listitem> <para>Caminho do kernel a ser carregado</para> </listitem>
                    <listitem> <para>Servidor e caminho para o diretório que será montado como sistema de arquivos raíz</para> </listitem>
                </itemizedlist>
            </para>
            <para>
                Para o nosso exemplo de ambiente LTSP, nós escolhemos o DHCP para
                gerenciar a atribuição de endereços IP das estações.
            </para>
            <para>
                Durante a execução do script <command>ltsp_initialize script</command>, um arquivo <filename>dhcpd.conf</filename> é instalado.
		Ele estará localizado em <filename>/etc/dhcpd.conf.example</filename>, você pode copiá-lo para <filename>/etc/dhcpd.conf</filename>
		para utilizá-lo como base para a sua configuração do serviço DHCP.
		Você precisará modificar as partes deste arquivo que referenciam o ambiente de servidor(s) e estações.
                <figure float="1">
                <title>/etc/dhcpd.conf</title>
                <programlisting>
default-lease-time            21600;
max-lease-time                21600;
    
option subnet-mask            255.255.255.0;
option broadcast-address      192.168.0.255;
option routers                192.168.0.254;
option domain-name-servers    192.168.0.254;
option domain-name            "ltsp.org";
option root-path              "192.168.0.254:/opt/ltsp/i386";
    
shared-network WORKSTATIONS {
    subnet 192.168.0.0 netmask 255.255.255.0 {
    }
}
    
group	{
    use-host-decl-names       on;
    option log-servers        192.168.0.254;
    
    host ws001 {
        hardware ethernet     00:E0:18:E0:04:82;
        fixed-address         192.168.0.1;
        filename              "/lts/vmlinuz.ltsp";
    }
} </programlisting>
                </figure>
            </para>

            <para>
                Desde a versão 2.09pre2 do LTSP, você não precisa especificar um kernel particular a ser carregado.
		O pacote padrão do kernel suporta todos as placas da rede que o Linux suporta.
		Há dois arquivos de kernel incluídos no pacote do kernel LTSP.
		Um kernel tem o 'Linux Progress Patch' (LPP) aplicado, e o outro não. Os nomes para os kernels são:
		
                <programlisting>
		vmlinuz-2.4.9-ltsp-5
		vmlinuz-2.4.9-ltsp-lpp-5
		</programlisting>

            </para>
            <para>
		Você pode ter observado que o kernel reside no diretório <filename class="directory">/tftpboot/lts</filename>,
		mas na entrada "filename" no arquivo <filename>/etc/dhcpd.conf</filename> está faltando o componente
		<filename class="directory">tftpboot</filename> do caminho. Isto é porque nas versões 7,1 e superiores do Redhat,
		o TFTP está sendo executado com a opção '-s'. Esta opção leva ao daemon do tftpd a funcionar na modalidade <emphasis role="strong">secure</emphasis>.
		Isto é, faz um <command>chroot</command> para o diretório <filename class="directory">/tftpboot</filename> quando inicia.
		Conseqüentemente, todos os arquivos que estão disponíveis ao daemon do tftpd são relativos ao diretório <filename class="directory">tftpboot</filename>.
            </para>
            <para>
                Outras distribuições Linux podem não possuir a opção '-s' configurada para o tftpd, desta forma você precisará
		adicionar o prefixo <filename class="directory">/tftpboot</filename> ao caminho do kernel.
            </para>
        </sect2>

        <sect2>
            <title>/etc/hosts</title>
            <para>Mapeamento de endereços IP para nome de máquina</para>
	    <para>
                Os computadores comunicam-se perfeitamente com os endereços do IP.
		Então, nós seres humanos precisamos pôr nomes nos computadores, porque não podemos recordar os números.
		É onde o DNS ou o arquivo <filename>/etc/hosts</filename> entra no jogo.
		Este mapeamento de endereços IP para nomes de host geralmente não é necessário, exceto em um ambiente LTSP.
		Isto porque sem ele, o NFS lhe dará erros das permissões quando a estação de trabalho tenta montar o sistema de arquivos raiz.
            </para>
            <para>
		Além dos problemas com o NFS, se a estação de trabalho não estiver listada no arquivo <filename>/etc/hosts</filename>,
		você poderá ter problemas também com gerenciadores de telas <emphasis role="strong">GDM</emphasis> ou <emphasis role="strong">KDM</emphasis>.
	    </para>
	</sect2>

        <sect2>
            <title>/opt/ltsp/i386/etc/lts.conf</title>
            <para>
		Há um número de entradas de configuração que podem ser especificadas no arquivo <filename>lts.conf</filename>.
	    </para>

            <para>
		O arquivo <filename>lts.conf</filename> possui uma sintaxe simples, que consiste em seções múltiplas.
		Há uma seção padrão chamada <command>[default]</command> e pode haver seções para estações individuais.
		As estações podem ser identificadas pelo nome de host, pelo endereço IP ou pelo endereço MAC.
            </para>

            <para>
                Um arquivo <filename>lts.conf</filename> típico se parece com este:
                <example>
                    <title>Arquivo lts.conf</title>
                    <programlisting>
#
# Config file for the Linux Terminal Server Project (www.ltsp.org)
#

[Default]
        SERVER             = 192.168.0.254
        XSERVER            = auto
        X_MOUSE_PROTOCOL   = "PS/2"
        X_MOUSE_DEVICE     = "/dev/psaux"
        X_MOUSE_RESOLUTION = 400
        X_MOUSE_BUTTONS    = 3
        USE_XFS            = N
        LOCAL_APPS         = N
        RUNLEVEL           = 5

[ws001]
        USE_NFS_SWAP       = Y
        SWAPFILE_SIZE      = 48m
        RUNLEVEL           = 5

[ws002]
        XSERVER            = XF86_SVGA
        LOCAL_APPS         = N
        USE_NFS_SWAP       = Y
        SWAPFILE_SIZE      = 64m
        RUNLEVEL           = 3</programlisting>
                </example>
            </para>

            <para>
                Abaixo, uma lista das principais entradas:
                <variablelist>
                    <varlistentry>
                        <term><command>XSERVER</command></term>
                        <listitem>
                            <para>
                                Se sua placa de vídeo é PCI, e se esta é suportada pelo X.org 6.7.0, então você apenas precisa do pacote lts_x_core.
				Este contém todos os módulos de driver para o X4.
                            </para>
                            <para>
                                Há vários pacotes do XFree86 3.3.6 disponíveis para o LTSP.
				Isto é para o caso de sua placa de vídeo não ser suportada pelo X.org 6.7.0.
                            </para>
                            <para>
                                Você pode criar entradas no arquivo <filename>lts.conf</filename> para cada estação individual,
				ou você pode criar uma entrada padrão que pode ser compartilhada por todas as estações.
			    </para>
                            <para>
                                Nossa estação de trabalho possui uma placa de vídeo com chipset Intel i810, e esta pode ser detectada automaticamente,
				então nós não precisaremos de uma entrada XSERVER no arquivo lts.conf.
				A entrada XSERVER pode ser especificada, se você desejar, ou esta pode ser configurada para 'auto' para mostrar
				que a placa de vídeo será detectada automaticamente.
                            </para>
                        </listitem>
                    </varlistentry>

                    <varlistentry>
                        <term><command>RUNLEVEL</command></term>
                        <listitem>
                            <para>
                                Queremos utilizar a estação de trabalho no modo gráfico, desta forma, precisamos que o runlevel esteja
				configurado para '5'. Isto é feito por outra entrada no arquivo <filename>lts.conf</filename>.
                            </para>
                        </listitem>
                    </varlistentry>
                </variablelist>
            </para>
        </sect2>

    </sect1>

    <sect1>
        <title>Exibindo a configuração atual</title>
        <para>
            Com o comando <command>ltspcfg</command>, você pode obter o status atual da configuração de todos os serviços necessários ao LTSP.
            Através do menu principal do <command>ltspcfg</command>, pressione '<command>S</command>', e você irá ver o status atual.

            <figure>
              <title>ltspcfg - Current Status</title>
              <GRAPHIC FILEREF="pics/ltspcfg_status.jpg"
                       FORMAT="JPG"
                       SRCCREDIT="James McQuillan, 2004" >
            </figure>
        </para>

    </sect1>

</chapter>


<chapter>
    <title>Configurando a estação de trabalho</title>
    <para>
        Uma vez que o servidor esteja configurado, é hora de concentrar-se na configuração da estação de trabalho.
    </para>
    <para>
    	Todo o que acontece depois que o kernel está na memória é sobre o projeto de LTSP.
	Há diversas maneiras de pôr o kernel na memória, incluíndo Etherboot, Netboot, PXE e o disquete.
    </para>

    <sect1>
      <title>Carga com PXE</title>
      <para>
      	Se sua placa de rede possui PXE embutido, então você pode usá-la para carregar o kernel do Linux.
	PXE é uma tecnologia de bootrom, similar a Etherboot ou a Netboot.
      </para>

      <para>
      	Talvez você precise ativar o bootrom PXE em sua placa de rede.
	Você também pode precisar mudar a ordem dos dispositivos de boot em sua BIOS, para fazer a "Boot from LAN"
	a primeira escolha, ao invés de "Floppy" ou "HDD".
      </para>

      <para>
 	O PXE tem uma limitação de somente poder carregar arquivos de 32kb ou menores.
	O kernel do Linux é um pouco maior que esta limitação, desta forma não é possível carregar o kernel Linux diretamente com o PXE.
	Você precisa carregar algo conhecido como 'Network Bootstrap Program' ou NBP.
      </para>

      <para>
	Há um NBP disponível para carregar o kernel Linux chamado de <command>pxelinux.0</command>.
	Este é parte do pacote <command>syslinux</command> de H. Peter Anvin, um dos desenvolvedores do kernel.
      </para>

      <para>
        O pacote LTSP do kernel inclui o NBP pxelinux.0 e o arquivo de configuração necessário para carregar o kernel Linux e a imagem do ramdisk.
      </para>
      <para>
       A maneira de funcionamento é esta:
        <itemizedlist>
          <listitem>
            <para>
              A bootrom PXE inicia a placa de rede e envia uma requisção DHCP.
            </para>
          </listitem>
          <listitem>
            <para>
              O servidor DHCP responde à requisição com um endereço IP, e o nome do NBP a ser carregado.
            </para>
          </listitem>
          <listitem>
            <para>
              A bootrom PXE faz o download do NBP, o põe em memória e inicia sua execução.
            </para>
          </listitem>
          <listitem>
            <para>
              O NBP utiliza-se do tftp para fazer o download do arquivo de configuração do servidor.
            </para>
          </listitem>
          <listitem>
            <para>
              O arquivo de configuração contém o nome do kernel, o nome do arquivo ramdisk inicial,
	      e opções a serem passadas ao kernel, quando este for carregado.
            </para>

            <para>
              Aqui está um arquivo de configuração exemplo do pxelinux:
              <programlisting>
		prompt=0
		label linux
		kernel bzImage-2.4.24-ltsp-4
	        append init=/linuxrc rw root=/dev/ram0 initrd=initrd-2.4.24-ltsp-4.gz
              </programlisting>
            </para>
          </listitem>
          <listitem>
            <para>
              O NBP então usa o tftp para fazer o download do kernel Linux, e do ramdisk inicial (initrd).
            </para>
          </listitem>
          <listitem>
            <para>
              O controle é então passado ao kernel Linux, este é carregado em memória, monta o initrd, e continua com o inicio do thin clinet.
            </para>
          </listitem>
        </itemizedlist>
      </para>

    </sect1>

    <sect1>
      <title>Carga com Etherboot</title>
      <blockquote><attribution>Ken Yap</attribution>
        <para>
		O Etherboot é um pacote de software para criar imagens ROM que possam realizar o download de código sobre uma rede Ethernet
		a ser executado em um computador x86. Muitas placas de rede têm um soquete onde um chip de ROM pode ser instalado.
		O Etherboot é o código que pode ser posto em tal ROM.
        </para>
      </blockquote>

      <para>
          O Etherboot é também Open Source, protegido pela GNU General Public License, Version 2 (GPL2).
      </para>

      <para>
          Para usar o Etherboot, se você já possui uma placa de rede com uma bootrom Etherboot, talvez precise modificar a configuração
	  de sua BIOS para escolher a opção "Boot from LAN" para a carga do sistema operacional ao invés de "Floppy" ou "HDD".
      </para>

      <para>
          Se você não possui uma bootrom Etherboot, você pode ou criar uma bootrom, ou você pode criar um disquete
	  com uma imagem Etherboot em seu setor de boot.
      </para>
      <para>
          O Etherboot suporta um vasto número de placas de rede. Mais de 200 modelos, com mais sendo adicionados todo o tempo.
          Se você escolher criar um disquete ou gravar o código em uma Eprom, precisará determinar qual o modelo de placa de rede possui.
      </para>

      <sect2>
        <title>Escolhendo um driver Etherboot para placas de rede ISA</title>
        <para>
            Para placas de rede antigas baseadas no padrão ISA, não é tão importante que você determine o tipo exato.
	    Primeiro, a maioria delas são placas ne2000 ou 3Com 3c509. Você precisa apenas obter o driver Etherboot correto,
	    o que seleciona o tipo correto de mídia na placa 10 base-2 (Coax) e 10 base-T (Twisted pair).
        </para>
      </sect2>

      <sect2>
        <title>Escolhendo um driver Etherboot para placas de rede PCI</title>
        <para>
            Para as placas de rede PCI, é importante escolher o driver Etherboot
            que corresponda ao código PCI do fabricante e da placa de rede.
        </para>

        <para>
          Às vezes, você terá sorte. Saberá exatamente que modelo de placa de rede tem,
          por que o modelo é impresso na própria placa de rede, e bate exatamente com
          a descrição dos modolos no Etherboot. Mas, em muitos casos, será necessário
          encontrar os números do PCI ID.
        </para>

        <para>
          Se sua estação de trabalho tiver uma drive de disquete, você pode carregar
          um disquete tomsrtbt (Tom's Root Boot). Ou, se sua estação de trabalho tiver
          uma unidade de CD-ROM, você pode carregar um CD do Knoppix.
          Se você não puder carregar o linux em sua estação de trabalho,
          então sua única esperança pode ser mover a placa de rede para uma
          estação de trabalho que possa carregar o Linux.
        </para>


        <para>
          Uma vez que tenha o Linux carregado, você pode usar o comando <command>lspci</command>
          com a opção '-n'.
          <programlisting>
[root@jamlap root]# lspci -n
0000:00:00.0 Class 0600: 8086:7190 (rev 03)
0000:00:01.0 Class 0604: 8086:7191 (rev 03)
0000:00:03.0 Class 0607: 104c:ac1c (rev 01)
0000:00:03.1 Class 0607: 104c:ac1c (rev 01)
0000:00:07.0 Class 0680: 8086:7110 (rev 02)
0000:00:07.1 Class 0101: 8086:7111 (rev 01)
0000:00:07.2 Class 0c03: 8086:7112 (rev 01)
0000:00:07.3 Class 0680: 8086:7113 (rev 03)
0000:00:08.0 Class 0401: 125d:1978 (rev 10)
0000:01:00.0 Class 0300: 1002:4c4d (rev 64)
0000:06:00.0 Class 0200: 8086:1229 (rev 09)
          </programlisting>
          No exemplo acima, você pode ver uma entrada para cada placa PCI no sistema.
          Você precisará procurar apenas os dispositivos <emphasis role="strong">Class 0200</emphasis>.
          Desta forma, executado novamente o comando, procurando apenas por interfaces Ethernet,
          a lista torna-se muito mais gerenciável.
          <programlisting>
[root@jamlap root]# lspci -n | grep "Class 0200"
0000:06:00.0 Class 0200: 8086:1229 (rev 09)
          </programlisting>
          Os números do PCI ID são: <command>8086:1229</command>. O primeiro campo,
          <command>8086</command> é o PCI ID do fabricante. Neste exemplo, o fabricante
          é a Intel Corporation. O segundo campo, <command>1229</command> é o PCI ID
          do dispositivo. Este nos informa qual o modelo da placa de rede.
          Neste caso, é uma placa de rede EtherExpress 100.
        </para>

      </sect2>

      <sect2>
          <title>Criando um disquete de boot</title>

          <para>
          </para>

          <para>
              Você pode fazer o download do pacote Etherboot e configurá-lo para o
              tipo de bootrom que precisar. Então, você pode compilar o fonte para
              produzir uma imagem bootrom que possa ser gravada em uma EPPROM ou
              em um disquete.
          </para>

          <para>
              Uma abordagem simples é ir ao site do Marty Connor's
              <ulink url="http://www.rom-o-matic.net"><citetitle>www.Rom-O-Matic.net</citetitle></ulink>.
          </para>

          <para>
              O Marty fez um bom trabalho ao por um front-end web para configuração
              e compilação da geração de imagens bootrom Etherboot. Neste site, você
              seleciona o tipo de placa de rede que tem e que tipo de imagem deseja.
              Então, você tem a oportunidade de modificar muitas das opções de
              configuração do Etherboot. Então, você pode pressionar o botão 'Get ROM'
              e uma imagem bootrom personalizada será gerada enquando você espera.              
          </para>

          <para>
              Para o formato de saída da ROM, escolhar 'Floppy Bootable ROM Image'.
              Isto irá ocasionar a inclusão de um cabeçalho de 512 bytes que é
              um boot loader para carregar a imagem etherboot na memória ram onde
              esta possa ser executada.
          </para>

          <para>
              Pressione o botão 'Get ROM'. A imagem bootrom será gerada enquanto
              você espera..
              Isto leva apenas alguns segundos, e quando completar, seu navegador
              irá abrir a janela de "Salvar como" onde você pode definir onde a
              imagem bootrom será salva em seu computador.
          </para>

        <para>
            Uma vez que tenha salvo a imagem em seu disco, você precisará gravá-la
            em um disquete. Insira um disquete na unidade e execute o seguinte
            comando para gravar o disquete:
            <programlisting>
dd if=<emphasis>Etherboot_Image</emphasis> of=/dev/fd0 </programlisting>
        </para>
      </sect2>

      <sect2>
        <title>Criando uma bootrom</title>
        <para>
           É necessário um programador de EPROM para gravar a imagem do Etherboot
           em uma EPROM. Este tipo de equipamento varia de preço entre poucas
           centenas de dólares até milhares de dólares dependendo das características.
        </para>
        <para>
           O processo de criação de uma bootrom é inteiramente dependente do
           programador de EPROM. Isto está fora do escopo deste documento.
        </para>
      </sect2>

    </sect1>

</chapter>


<chapter>
    <title>Ligando a estação</title>
    <para>
        Assumindo que o servidor e a estação estão configurados corretamente, é
        necessário apenas inserir um disquete de boot na estação de trabalho e ligá-la.
    </para>

    <para>
        O código de Etherboot será lido do disquete para a memória, a placa de rede
        será encontrada e inicializada, uma requisição dhcp será emitida na rede
        e uma resposta será emitida pelo servidor e será feito o download doo kernel
        para a estação de trabalho. Uma vez que o kernel inicializou o hardware da
        estação de trabalho, o X Windows irá iniciar e uma tela de login deve aparecer
        na estação de trabalho, similar ao exemplo abaixo.
        
    </para>

    <figure><title>Login screen</title>
        <GRAPHIC FILEREF="pics/ltsplogin1.gif"
                 FORMAT="GIF"
                 SRCCREDIT="James McQuillan, 2001" >
    </figure>

    <para>
        Neste ponto, você pode logar. Uma coisa importante a ter em mente é que
        você está logando no servidor. Todos os comandos que você execuar, estarão
        sendo executados no servidor, e sua saída mostrada na estação de trabalho.
        Isto é o poder do X Windows.
    </para>

    <para>
        Você pode executar qualquer programa que seja suportado pelo servidor.
    </para>

</chapter>


<chapter>
    <title>Impressão</title>
    <para>
        Além da estação de trabalho ser uma GUI funcional ou um terminal,
        esta pode atuar como um servidor de impressão, permitindo a conexão
        de até 3 impressoras conectadas a portas paralelas ou seriais.
    </para>

    <para>
        Tudo isso é transparente para os usuários das estações de trabalho. Eles
        nem mesmo notarão o pequeno tráfego que está saíndo das estações para as
        impressoras.
    </para>

    <sect1>
        <title>Configurações no lado cliente</title>

        <para>
            O LTSP usa o programa <command>lp_server</command> na estação de trabalho,
            para redirecionar os trabalhos de impressão do servidor para a impressora
            conectada a uma das portas da estação de trabalho.
        </para>

        <para>
            Para habilitar a impressora na estação de trabalho, há um conjunto de entradas
            de configuração no arquivo <command>lts.conf</command>.
		<programlisting>
[ws001]
    PRINTER_0_DEVICE = /dev/lp0
    PRINTER_0_TYPE   = P
		</programlisting>
		
            As entradas acima ocasionarão na execução do programa lp_server como um daemon,
            ouvindo na porta TCP/IP 9100 por um fluxo de impressão do servidor. Os dados de
            impressão serão então redirecionados para a impressora conectada à porta paralela
            /dev/lp0.
        </para>

        <para>
            Há muito mais opções disponíveis. Verifique posteriormente as seções do lts.conf
            neste documento para maiores informações sobre as entradas para a configuração
            de impressoras.
        </para>
    </sect1>

    <sect1>
        <title>Configurações no lado do servidor</title>

        <para>
            Configurar a impressora no servidor consiste em definir uma fila de
            impressão, usando a ferramenta de configuração de impressoras do servidor.
        </para>

        <para>
            No Redhat 7.2, há ambas as ferramentas de configuração de impressoras baseadas
            em GUI e Texto. A ferramenta GUI é chamada de <command>printconf-gui</command>, e a
            baseada em Texto é chamada de <command>printconf-tui</command>.
            Em versões mais antigas o Redhat possui um programa chamado <command>printtool</command>.
            O printtool também existe no Redhat 7.2, mas este chamará o printconf-gui.
            Outras distribuições Linux possuem suas próprias ferramentas de configuração de impressoras.
        </para>

        <figure>
            <title>Printconf-gui Adicionando uma nova impressora</title>
            <GRAPHIC FILEREF="pics/printconf-gui-add.gif"
                     FORMAT="GIF"
                     SRCCREDIT="James McQuillan, 2001" >
        </figure>

        <para>
            Uma vez que você execute a ferramenta de configuração de impressoras, será necessário
            adicionar uma nova impressora. O programa lp_server permite à estação de trabalho emular
            um servidor de impressão HP JetDirect. Você apenas precisa criar uma impressora <command>JetDirect</command>.
        </para>

        <para>
            Você precisa atribuir um nome à fila de impressão. O nome pode ser qualquer coisa,
            mas crie um nome inteligível, e o nome pode conter apenas os seguintes caracteres:
            <itemizedlist>
                <listitem>
                    <para>
                        <computeroutput>
                            "a-z" letras minúsculas
                        </computeroutput>
                    </para></listitem>
                <listitem>
                    <para>
                        <computeroutput>
                            "A-Z" letras maúsculas
                        </computeroutput>
                    </para></listitem>
                <listitem>
                    <para>
                        <computeroutput>
                            "0-9" dígitos numéricos
                        </computeroutput>
                    </para></listitem>
                <listitem>
                    <para>
                        <computeroutput>
                            "-"    &nbsp;&nbsp;hífen
                        </computeroutput>
                    </para></listitem>
                <listitem>
                    <para>
                        <computeroutput>
                            "_"    &nbsp;&nbsp;sublinhado
                        </computeroutput>
                    </para></listitem>
            </itemizedlist>
        </para>
        <para>
            O nome escolhido no exemplo acima é <command>ws001_lp</command>.
            Este nome torna fácil ver que a impressora está associada com <command>ws001</command>.
        </para>

        <figure>
            <title>Printconf-gui Informações detalhadas</title>
            <GRAPHIC FILEREF="pics/printconf-gui-detail.gif"
                     FORMAT="GIF"
                     SRCCREDIT="James McQuillan, 2001" >
        </figure>
        <para>
            Há dois campos obrigatórios para a comunicação com a impressora:
            <orderedlist>
                <listitem>
                    <para>
                        Endereço IP ou nome de host da estação de trabalho a qual
                        a impressora está associada.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        A porta TCP na qual o daemon <command>lp_server</command> está ouvindo.
                    </para>
                    <para>
                        A primeira impressora que você conectar a uma estação de trabalho estará
                        na porta TCP/IP <command>9100</command>. A segunda impressora estará na
                        porta <command>9101</command>, e a terceira impressora estará na porta
                        <command>9102</command>.
                    </para>
                </listitem>
            </orderedlist>
        </para>
    </sect1>

</chapter>


<chapter>
    <title>Scripts de tela</title>
    <para>
        Uma das funcionalidades que foram adicionadas à versão 4.0 do LTSP é algo
        chamado <command>Screen Scripts</command>. Há script para iniciar vários
        tipos de sessões.
    </para>

    <para>
        Você pode especificar múltiplos scripts de tela para uma estação de trabalho.
        Fazendo isto, você terá múltiplas sessões. Elas podem ser de tipos diferentes,
        ou elas podem ser do mesmo tipo. Por exeplo, você pode especificar o seguinte:
        <programlisting>
   SCREEN_01 = startx
   SCREEN_02 = shell
	</programlisting>
	
        Isto deverá iniciar um servidor X na primeira tela, e um shell na segunda.
        Você pode alternar entre as telas pressionando Ctrl-Alt-F1 para ir à primeira tela,
        e Ctrl-Alt-F2 para a ir à segunda.
    </para>

    <para>
        Você pode especificar até 12 scripts de tela para uma estação de trabalho,
        mas a maioria das pessoas possuem apenas uma.
    </para>

    <para>
        Tipos de scripts de tela disponíveis:
        <variablelist>
          <varlistentry>
              <term><command>startx</command></term>
              <listitem>
                  <para>
                      Este script iniciará o servidor X com a opção -query, para
                      enviar uma requisição XDMCP ao gerenciador de janelas para
                      obter a tela de login exibida na estação.
                  </para> 
              </listitem>
          </varlistentry>

          <varlistentry>
              <term><command>shell</command></term>
              <listitem>
                  <para>
                      Este script iniciará um shell no terminal.
                      Este tem por objetivo o uso na solução de problemas com a
                      estação de trabalho. Porque ele lhe fornece uma sessão no
                      thin client, ao invés de ser no servidor, não sendo muito
                      útil para executar aplicações.
                  </para> 
              </listitem>
          </varlistentry>

          <varlistentry>
              <term><command>telnet</command></term>
              <listitem>
                  <para>
                      Este script executará uma sessão telnet que conectará ao servidor.
                      Este lhe fornecerá uma sessão baseada em caracteres no servidor.
                  </para> 
                  <para> 
                      Por padrão, o telnet conectará ao servidor LTSP. Se você deseja
                      especificar um servidor diferente, você pode passar este na mesma
                      linha do script de tela. Por exemplo:
                <programlisting>
    SCREEN_01 = telnet server2.mydomain.com
    		</programlisting>
    		
                      Você pode ainda especificar qualquer opção que o Telnet reconheça,
                      Mas, se você especificar qualquer opção, terá que informar a qual
                      servidor será feita a conexão.
                  </para> 
              </listitem>
          </varlistentry>

          <varlistentry>
              <term><command>rdesktop</command></term>
              <listitem>
                  <para>
                      Este script iniciará o programa rdesktop, o qual conectará a um
                      servidor Microsoft Windows. Você pode especificar na mesma linha
                      qualquer opção do rdesktop que desejar, diretamente após o nome
                      do script de tela.
                      Por exemplo, se você deseja especificar o servidor ao qual a
                      conexão deverá ser realizada, você pode fazê-lo desta forma:
                      <programlisting>
    SCREEN_01 = rdesktop -f w2k.mydomain.com
    		      </programlisting>
    		      
                      O exemplo acima iniciará o rdesktop no modo tela cheia. O usuário
                      verá uma tela de logon Windows, e ele terá que logar apenas uma vez.
                      Isto é muito útil quando você quer apenas um login Windows, sem
                      haver um login Linux ou gerenciador de janelas. O usuário nem mesmo
                      saberá que está utilizando Linux.
                  </para> 
              </listitem>
          </varlistentry>

        </variablelist>

    </para>

    <para>
      Os scripts de tela residem no diretório <filename class="directory">/opt/ltsp/i386/etc/screen.d</filename>.
      Você pode criar seus próprios scripts de tela e pô-los neste diretório.
      É melhor usar um dos scripts existentes como exemplo.
    </para>

</chapter>


<chapter>
    <title>Solução de Problemas</title>
    <para>
	Se, após seguir os capítulos anteriores, sua estação de trabalho não carregar,
	então você deve começar o processo de pesquisar os problemas de instalação.
    </para>

    <para>
        A primeira coisa a fazer é descobrir em que ponto do processo de carga a
        estação ficou.
    </para>

    <sect1>
        <title>Solucionando problemas em disquetes com imagens Etherboot</title>
        <para>
            Quando você iniciar por um disquete, você deverá ver algo similar a isto:
        </para>
        <para>
        <screen>
loaded ROM segment 0x0800 length 0x4000 reloc 0x9400
Etherboot 5.0.1 (GPL) Tagged ELF for [LANCE/PCI]
Found AMD Lance/PCI at 0x1000, ROM address 0x0000
Probing...[LANCE/PCI] PCnet/PCI-II 79C970A base 0x1000, addr 00:50:56:81:00:01
Searching for server (DHCP)...
&#60;sleep&#62; </screen>
        </para>
        <para>
            O exemplo acima mostra o que você pode esperar ver na tela quando
            iniciando de um disquete. Se você não vir aquelas mensagens,
            indicando que o Etherboot iniciou, então você pode ter um disquete
            com defeito, ou você não gravou a imagem corretamente.
        </para>

        <para>
        Se, você vir uma mensagem como a seguinte, então isto indica que
        provavelmente a imagem Etherboot que você gerou não é a imagem
        correta para sua placa de rede.
        
        <screen>
ROM segment 0x0800 length 0x8000 reloc 0x9400
Etherboot 5.0.2 (GPL) Tagged ELF for [Tulip]
Probing...[Tulip]No adapter found
&#60;sleep&#62;
&#60;abort&#62;
	</screen>
	
        </para>

        <para>
            Se for até o ponto onde ele detecta a placa de rede e mostrar
            o endereço MAC correto, então o disquete provavelmente está normal.
        </para>
 
    </sect1>

    <sect1>
        <title>Solucionando problemas no DHCP</title>
        <para>
            Uma vez que a placa de rede esteja iniciada, ela irá enviar uma
            requisição DHCP para a rede local, procurando por um servidor DHCP.
        </para>

        <para>
            Se a estação de trabalho receber uma resposta válida do servidor DHCP,
            então ela configurarará a placa de rede. Você saberá se funcionou
            corretamente caso as informações de endereço IP forem indicadas na tela.
            Aqui está um exemplo de como deve aparecer:
            
            <screen>
ROM segment 0x0800 length 0x4000 reloc 0x9400
Etherboot 5.0.1 (GPL) Tagged ELF for [LANCE/PCI]
Found AMD Lance/PCI at 0x1000, ROM address 0x0000
Probing...[LANCE/PCI] PCnet/PCI-II 79C970A base 0x1000, addr 00:50:56:81:00:01
Searching for server (DHCP)...
&#60;sleep&#62;
Me: 192.168.0.1, Server: 192.168.0.254, Gateway 192.168.0.254
	    </screen>
	    
            Se você vir uma linha que começa com 'Me:', seguida por um endereço IP,
            então você sabe que o DHCP está funcionando corretamente. Você pode ir
            em frente e verificar se o TFTP está funcionando.
        </para>

        <para>
            Se ao invés, você vir a seguinte mensagem na estação de trabalho,
            seguida de várias mensagens &#60;sleep&#62;, então algo está errado.
            Embora, seja comum ver uma ou duas mensagens &#60;sleep&#62;, depois
            da resposta do servidor dhcp.
            <screen>
Searching for server (DHCP)...
	    </screen>
        </para>

        <para>
            Descobrir o que está errado pode ser algumas vezes difícil, mas aqui
            estão algunas coisas a observar.
        </para>
            <sect2>
                <title>Verificar conexões</title>
                <para>
                    A estação de trabalho está conectada à mesma rede que o servidor
                    está conectado?
                </para>
                <para>
                    Com a estação de trabalho ligada, certifique-se de que as luzes
                    de conexão estão acesas durante toda a conexão.
                </para>

                <para>
                    Se você estiver conectando diretamente a estação e o servidor
                    (sem hub ou switch), certifique-se que você está usando um
                    cabo cross-over. Se você estiver usando um hub ou switch, então
                    certifique-se de estar utilizando um cabo normal straight-thru,
                    entre ambos a estção e o hub, e o hub e o servidor.
                </para>

            </sect2>

            <sect2>
                <title>O DHCP está sendo executado?</title>
                <para>
                    Você precisa determinar se o <command>dhcpd</command> está
                    sendo executado no servidor. Podemos encontrar a resposta de
                    uma grande variedade de modos.
                </para>

                <para>
                    O <command>dhcpd</command> normalmente permanece em segundo plano,
                    ouvindo na porta udp 67. Tente executar o comando <command>netstat</command>
                    para ver se existe algo ouvindo nesta porta:
                    
                    <programlisting>
netstat -an | grep ":67 "
		    </programlisting>
		    
                    Você deverá ver uma saída similar a esta:
                    
                    <programlisting>
udp     0    0   0.0.0.0:67         0.0.0.0:*
		    </programlisting>
		    
                    A quarta coluna contém o endereço IP e a porta, separados por
                    dois pontos (':'). Um endereço composto por zeros ('0.0.0.0')
                    indica que ele está ouvindo em todas as interfaces. Isto é,
                    voê pode ter as interfaces <command>eth0</command> e <command>eth1</command>,
                    e o <command>dhcpd</command> ouvindo em ambas as interfaces.
                </para>

                <para>
                    Só porque o netstat mostra que alguma coisa está ouvindo na
                    porta udp 67, não significa que é definitivamente o <command>dhcpd</command>
                    que está escutando. Pode ser o <command>bootpd</command>, mas isto é incomum,
                    porque o <command>bootp</command> não é mais incluído na maioria das distribuições Linux.
                </para>

                <para>
                    Para certificar-se que é o <command>dhcpd</command> que está sendo executado,
                    tente executar o comando <command>ps</command>.
                    
                    <programlisting>
ps aux | grep dhcpd
		    </programlisting>

                    Você deverá ver algo parecido com o seguinte:

                    <programlisting>
root 23814 0.0 0.3 1676 820 ?      S 15:13 0:00 /usr/sbin/dhcpd
root 23834 0.0 0.2 1552 600 pts/0  S 15:52 0:00 grep dhcp
                    </programlisting>

                    A primeira linha mostra que o <command>dhcpd</command> está sendo executado.
                    A segunda linha apenas o comando <command>grep</command>.
                </para>

                <para>
                    Se você não vir nenhuma linha mostrandoq ue o dhcpd está sendo executado,
                    então você precisa checar se o servidor está configurado para o runlevel 5,
                    e que o <command>dhcpd</command> está configurado para iniciar no runlevel 5.
                    Em sistemas baseados em Red Hat, você pode executar o comando <command>ntsysv</command>
                    e procurar o <command>dhcpd</command> para certificar-se que ele está configurado para inciar.
                </para>

                <para>
                    Você pode tentar iniciar o <command>dhcpd</command> com este comando:
                    
                    <programlisting>
service dhcpd start
		    </programlisting>

                    Preste atenção à saída, ela pode mostar erros.
                </para>
                
            </sect2>

            <sect2>
                <title>Verifique novamente a configuração do dhcpd</title>
                <para>
                    O arquivo <filename>/etc/dhcpd.conf</filename> possue uma entrada
                    para a estação de trabalho?
                </para>
                <para>
                    Você deve verificar novamente a configuração 'fixed-address' no
                    arquivo de configuração, para certificar-se que esta casa com a
                    placa de rede na estação de trabalho.
                </para>
            </sect2>
           
            <sect2>
                <title>O IPTables ou IPChains estão bloqueando as requisições?</title>
                <sect3>
                    <title>Verificando o ipchains</title>
                    <para>
                        Execute o seguinte comando para ver o que ele diz:
                        
                        <programlisting>
ipchains -L -v
			</programlisting>
			
                        Se você vir algo como:
                        
                        <programlisting>
Chain input (policy ACCEPT: 229714 packets, 115477216 bytes):
Chain forward (policy ACCEPT: 10 packets, 1794 bytes):
Chain output (policy ACCEPT: 188978 packets, 66087385 bytes):
			</programlisting>
			
                        Então não é o ipchains que está atrapalhando.
                    </para>
                </sect3>
                <sect3>
                    <title>Verificando o iptables</title>
                    <para>
                        Execute o seguinte comando para ver o que ele diz:
                        
                        <programlisting>
iptables -L -v
			</programlisting>
			
                        Se você vir algo como:
                        
                        <programlisting>
Chain INPUT (policy ACCEPT 18148 packets, 2623K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 17721 packets, 2732K bytes)
 pkts bytes target     prot opt in     out     source               destination
 			</programlisting>
 			
                        Então não é o iptables que está atrapalhando.
                    </para>
                </sect3>
            </sect2>
           
            <sect2>
                <title>A estação de trabalho está enviando a requisição?</title>
                <para>
                    Tente monitorar o arquivo <filename>/var/log/messages</filename> enquanto a estação de trabalho
                    estiver iniciando. Você pode fazê-lo com o seguinte comando:
                    
                    <programlisting>
tail -f /var/log/messages
		    </programlisting>
		    
                    Isto 'seguirá' o arquivo de log quando novos registros forem adicionados a ele.
                    
                    <programlisting>
server dhcpd: DHCPDISCOVER from 00:50:56:81:00:01 via eth0
server dhcpd: no free leases on subnet WORKSTATIONS
server dhcpd: DHCPDISCOVER from 00:50:56:81:00:01 via eth0
server dhcpd: no free leases on subnet WORKSTATIONS
		    </programlisting>
		    
                    Se você vir mensagens como as acima, informando 'no free leases',
                    isto indica que o <command>dhcpd</command> está sendo executado,
                    mas este não sabe nada sobre a estação de trabalho que está
                    requisitando um endereço IP.
                </para>
            </sect2>
           
    </sect1>

    <sect1>
        <title>Solucionando problemas no TFTP</title>
        <para>
            O Etherboot usa o TFTP para copiar o kernel Linux do servidor.
            Este é um protocolo muito simples, mas algumas vezes há problemas
            ao tentar fazê-lo funcionar.
        </para>

        <para>
            Se você vir uma mensagem similar a esta:
            
        <screen>
Loading 192.168.0.254:/lts/vmlinuz-2.4.24-ltsp-4.........
        </screen>
        
          com os pontos enchendo a tela rapidamente, isto normalmente indica
          que o TFTP está funcionando corretamente, e que o kernel está sendo copiado.
        </para>

        <para>
          Se, ao invés, você não vir os pontos, então há um problema.
          Problemas possíves incluem:
        </para>

        <sect2>
            <title>O <command>tftpd</command> não está sendo executado</title>
            <para>
                Se o <command>tftpd</command> não estiver configurado para executar, então ele
                certamente não estará apto a responder às requisições da estação de trabalho.
                Você pode ver se ele está sendo executado, você pode usar o comando <command>netstat</command>,
                como este:
                
                <programlisting>
[root@bigdog]# netstat -anp | grep ":69 "

udp     0   0 0.0.0.0:69         0.0.0.0:*                 453/inetd        
                </programlisting>
                
                Se você não vir nenhuma saída deste comando, então o tftpd não está sendo executado.
            </para>
            <para>
                Há dois métodos comuns de executar o tftpd, são eles o <command>inetd</command> e o novo <command>xinetd</command>
            </para>
            <para>
                O <command>inetd</command> usa um arquivo de configuração chamado <filename>/etc/inetd.conf</filename>.
                Neste arquivo, certifique que a linha que começa com tftpd não está comentada.
                Isto é como a linha deve parecer:
                
                <programlisting>
tftp dgram udp wait nobody /usr/sbin/tcpd  /usr/sbin/in.tftpd -s /tftpboot
                </programlisting>
                
            </para>
            <para>
                O <command>xinetd</command> usa um diretório com arquivos de configuração
                individuais. Um para cada serviço. Se o seu servidor está usando o xinetd,
                então o arquivo de configuração para o tftpd é chamado de <filename>/etc/xinetd.d/tftp</filename>.
                Abaixo está um exemplo:
                
                <programlisting>
service tftp
{
  disable          = no
  socket_type      = dgram
  protocol         = udp
  wait             = yes
  user             = root
  server           = /usr/sbin/in.tftpd
  server_args      = -s /tftpboot
}
                </programlisting>

                Certifique-se que a linha <command>disable</command> não contém <command>yes</command>.
            </para>
        </sect2>

        <sect2>
            <title>O kernel não está onde o tftpd espera encontrá-lo</title>
            <para>
                O kernel precisa estar em um local onde o daemon tftpd possa acessá-lo.
                Se a opção '-s' do daemon <command>tftpd</command> for utilizada, então
                qualquer coisa que a estação procurar precisa estar relativo ao
                diretório <filename class="directory">/tftpboot</filename>.
                Então, se a entrada <command>filename</command> no arquivo <filename>/etc/dhcpd.conf</filename>
                está configurada para <filename>/lts/vmlinuz-2.4.24-ltsp-4</filename>, então o kernel precisa
                estar em <filename>/tftpboot/lts/vmlinuz-2.4.24-ltsp-4</filename>
            </para>
        </sect2>
    </sect1>

    <sect1>
        <title>Solucionando problemas do sistema de arquivos raíz NFS</title>
        <para>
            Há diversas coisas que podem impedir que o sistema de arquivos raíz seja montado.
	    incluíndo as seguintes:
        </para>
        <sect2>
            <title>No init found</title>
            <para>
                Se você obter o seguinte erro:
                <screen>
Kernel panic: No init found.  Try passing init= option to kernel.
		</screen>
		
                Então o mais provável é que você esteja montando o diretório errado como
		sistema de arquivos raíz ou o diretório <filename>/opt/ltsp/i386</filename> está vazio.
            </para>
        </sect2>

        <sect2>
            <title>O servidor retornou o erro -13</title>
            <para>
                Se você obter o seguinte erro:
                <screen>
Root-NFS: Server returned error -13 while mounting /opt/ltsp/i386
		</screen>
		
                Isto indica que o diretório <filename class="directory">/opt/ltsp/i386</filename> não está listado
		no arquivo <filename>/etc/exports</filename>.
            </para>
            <para>
                Examine o arquivo <filename>/var/log/messages</filename> para ver se há algum indício. Uma entrada como esta:
                <screen>
Jul 20 00:28:39 bigdog rpc.mountd: refused mount request from ws004
for /opt/ltsp/i386 (/): no export entry
		</screen>
		
                Então isto confirma nossa suspeita que a entrada no arquivo <filename>/etc/exports</filename> não está correta.
            </para>
        </sect2>

        <sect2>
            <title>Problemas no Daemon NFS (portmap, nfsd &amp; mountd)</title>
            <para>
                O NFS pode ser um serviço complexo e difícil na solução de problemas, mas entendendo o que
		deve ser configurado e quais ferramentas estão disponíveis para diagnosticar os problemas
		irá certamente ajudar a tornar isto mais fácil.
            </para>
            <para>
                Há três daemons que precisam estar em execução no servidor para o NFS funcionar corretamente.
		<command>portmap</command>, <command>nfsd</command> e <command>mountd</command>.
            </para>
            <sect3>
                <title>O Portmapper (portmap)</title>
                <para>
                    Se você obter a seguinte mensagem:
		    
                    <screen>
Looking up port of RPC 100003/2 on 192.168.0.254
portmap: server 192.168.0.254 not responding, timed out
Root-NFS: Unable to get nfsd port number from server, using default
Looking up port of RPC 100005/2 on 192.168.0.254
portmap: server 192.168.0.254 not responding, timed out
Root-NFS: Unable to get mountd port number from server, using default
mount: server 192.168.0.254 not responding, timed out
Root-NFS: Server returned error -5 while mounting /opt/ltsp/i386
VFS: unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or 02:00
Please append a correct "root=" boot option
Kernel panic: VFS: Unable to mount root fs on 02:00
		    </screen>

		    Isto é causado muito provávelmente porque o daemon do portmap não está em execução.
		    Você pode confirmar se o portmapper está funcionando usando o comando ps:
		    
                    <screen>
ps -e | grep portmap
		    </screen>
		    
                    Se o portmapper estiver executando, você deverá ver uma saída como esta:
		    
                    <screen>
30455 ?        00:00:00 portmap
		    </screen>
		    
                    Outro teste é usar o <command>netstat</command>. O portmapper usa as portas TCP e UDP 111.
		    Tente executar isto:
		    
                    <screen>
netstat -an | grep ":111 "
		    </screen>
		    
                    Você deverá ver a seguinte saída:
		    
                    <screen>
tcp   0   0 0.0.0.0:111       0.0.0.0:*          LISTEN      
udp   0   0 0.0.0.0:111       0.0.0.0:*
		    </screen>
		    
                    Se você não vir uma saída similar, então o portmapper não está executando. Você inicia o portmapper executado:
		    
                    <screen>
/etc/rc.d/init.d/portmap   start
		    </screen>
		    
                    Então, você deverá certificar-se que o portmapper está configurado para iniciar quando o servidor é iniciado.
		    Execute o <command>ntsysv</command> para certificar-se que este está selecionado para executar.
                </para>
            </sect3>

            <sect3>
                <title>O NFS e daemons MOUNT (nfsd &amp; mountd)</title>
                <para>
                    O NFS possui 2 daemons que precisam estar executando. O <command>nfsd</command> e o <command>mountd</command>.
                    Ambos são iniciados pelo script <filename>/etc/rc.d/init.d/nfs</filename>.
                </para>
                <para>
                    Você pode executar o comando <command>ps</command> para certificar-se que eles estão em execução.
                    <screen>
ps -e | grep nfs
ps -e | grep mountd
		    </screen>
		    
                    Se isto mostrar que um ou ambos os daemons não estão executando, então você precisará iniciá-los.
                </para>

                <para>
		    Você deve estar apto a executar o script de inicio com o argumento <command>restart</command> para causar
		    o inicio de ambos, mas por alguma razão, o script <filename>/etc/rc.d/init.d/nfs</filename> não reinicia o <command>nfsd</command> desta maneira.
		    Ele reinicia somente o <command>mountd</command> (erro?). Assim, você deve preferivelmente executar a seguinte seqüência dos comandos:
		   
                    <screen>
/etc/rc.d/init.d/nfs  stop
/etc/rc.d/init.d/nfs  start
		    </screen>
		    
                    Você pode obter erros no comando <command>stop</command>, mas isto está OK.
                    O comando <command>start</command> deve mostrar <command>OK</command> como status.
                </para>

                <para>
                    Se os daemos estiverem executando, mas o NFS continuar não funcionando, você pode
		    verificar se eles se registraram com o portmapper utilizando o comando <command>rpcinfo</command>.
                    <screen>
rpcinfo -p localhost
		    </screen>
		    
                    Você deve ver resultados similares aos abaixo:
		    
                    <screen>
program vers proto   port
 100000    2   tcp    111  portmapper
 100000    2   udp    111  portmapper
 100003    2   udp   2049  nfs
 100003    3   udp   2049  nfs
 100021    1   udp  32771  nlockmgr
 100021    3   udp  32771  nlockmgr
 100021    4   udp  32771  nlockmgr
 100005    1   udp    648  mountd
 100005    1   tcp    651  mountd
 100005    2   udp    648  mountd
 100005    2   tcp    651  mountd
 100005    3   udp    648  mountd
 100005    3   tcp    651  mountd
 100024    1   udp    750  status
 100024    1   tcp    753  status
 		    </screen>
		    
                    Isto indica que o <command>nfs</command> (nfsd) e o <command>mountd</command> estão ambos executando e
		    estão registrados com o portmapper.
                </para>
            </sect3>
        </sect2>
    </sect1>

    <sect1>
        <title>Solucionando problemas no Xserver</title>
        <para>
            Ah garoto!, Provavelmente a única parte a mais difícil de configurar uma estação de trabalho LTSP é ter
	    o servidor X configurarado corretamente. Se você estiver usando uma placa de video razoavelmente nova,
	    e esta for suportada pelo Xorg Xservers, e você tiver um monitor razoavelmente novo que possa gerenciar
	    uma grande escala de freqüências e definições, então é razoavelmente fácil seguir em diante. Geralmente,
	    nesse caso, se não funcionar, o mais provável é que o servidor X não é o certo para esta placa de vídeo.
        </para>
        <para>
	    Quando um servidor X não funciona com sua placa, é geramente óbvio. Ou o servidor X não inicia,
	    ou a tela estará incorreta.
        </para>
        <para>
            Quando a estação de trabalho está pronta para iniciar o servidor X, ela chama o script <filename>startx</filename>,
	    o qual inicia o servidor X localmente na estação de trabalho, com a opção <command>-query</command> apontando para
	    um servidor, onde um gerenciador de sessão, como o <command>XDM</command>, <command>GDM</command> ou <command>KDM</command> está executando.
        </para>

        <para>
            Porque o servidor X é iniciado pelo script startx, que é iniciado pelo programa init, quando ele falha,
	    o init tentará executá-lo novamente. O init continuará este laço de tentar executar o servidor X 10 vezes,
	    então desiste, porque pensa que está 'respawning' rapidamente. Depois que finalmente desiste, a mensagem
	    de erro do servidor X deve ser deixada na tela.
        </para>

        <para>
            Esperar o servidor X falhar 10 vezes pode ser irritante, assim uma maneira simples de evitar as falhas
	    repetidas é iniciar a estação de trabalho no runlevel 3, de modo que o servidor X não seja iniciado
	    automaticamente. Ao invés disto, quando você iniciar a estação de trabalho, começará com um shell bash.
	    Do shell bash, você pode iniciar o servidor X manualmente com o seguinte comando:
            
	    <screen>
sh  /tmp/start_ws
	    </screen>

            O servidor X tentará iniciar, então quando ele falhar, irá retornar ao shell bash, de forma que você
	    poderá ver a razão da falha.
        </para>
    </sect1>

    <sect1>
        <title>Solucionando problemas no gerenciador de telas</title>
        <para>
            O gerenciador de telas é o daemon que executa no servidor, esperando que um servidor X o contate.
	    Uma vez que o contato é feito, ele irá mostrar uma tela de login na tela, oferecendo ao usuário
	    a chance de logar no servidor.
        </para>

        <para>
            Os três gerenciadores de tela mais comus são:
            <itemizedlist>
                <listitem>
                    <para>
                        XDM - Existirar para sempre. Este está incluído no X Windows System padrão.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        GDM - O 'Gnome Display Manager'. Este é parte do pacote GNOME.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        KDM - O 'KDE Display Manager'. Este é parte do K Desktop System.
                    </para>
                </listitem>
            </itemizedlist>
            As distribuições GNU/Linux mais recentes incluem todos os três gerenciadores de tela.
        </para>

        <sect2>
            <title>Tela cinza com um grande cursor em forma de X</title>
            <para>
                Isto indica que o servidor X está em execução, mas ele não conseguiu fazer contato com o
		gerenciador de telas. Algumas das possíveis razões para isto são:
                <orderedlist>
                    <listitem>
                        <para>
                            O gerenciador de janelas não está sendo executado
                        </para>
                        <para>
                            Nas versões recentes do Red Hat (7.0 e superiores), o gerenciador de relas
			    é iniciado através do <command>init</command>. No arquivo <filename>/etc/inittab</filename>,
			    há uma linha que se parece com esta:
                            <screen>
x:5:respawn:/etc/X11/prefdm -nodaemon
			    </screen>
			    
                            O script <command>prefdm</command> irá determinar qual gerenciador de telas executar.
                        </para>

                        <para>
                            O gerenciador de telas padrão depende de quais pacotes foram instalados.
			    Se o GNOME está instalado, então o GDM é o gerenciador de telas padrão.
			    Se o GNOME não estiver instalado, então o script prefdm irá checar para
			    ver se o KDE está instalado. Se ele estiver, então o KDM será o gerenciador
			    de telas padrão. Se o KDE também não estiver instalado, então o XDM será
			    o gerenciador de telas padrão.
                        </para>

                        <para>
                            Usando o comando <command>netstat</command>, você deverá conseguir ver se
			    há um gerenciador de telas em execução. No servidor, execute o comando abaixo:
			    
                            <screen>
netstat -ap | grep xdmcp
			    </screen>
			    
                            Você deverá ver resultados mostrando que há um processo ouvindo na porta xdmcp (177).
			    
                            <screen>
udp     0   0 *:xdmcp            *:*               1493/gdm
			    </screen>
			    
                            Isto mostra claramente que o <command>gdm</command> está sendo executado com o PID 1493,
			    e está ouvindo na porta xdmcp.
                        </para>

                        <para>
                            Se você vir uma linha como esta mostrada acima, indicando que definitivamente há um
			    gerenciador de telas ouvindo, então você precisa certificar-se que a estação de
			    trabalho está enviando a consulta XDMCP para o servidor correto.
                        </para>

                        <para>
                            No arquivo <filename>lts.conf</filename>, você pode ter uma entrada que especifica
			    o endereço IP do servidor que está executando o gerenciador de telas.
			    A entada é opcional, mas se presente, deve parecer-se com isto:
			    
                            <screen>
XDM_SERVER  =  192.168.0.254
			    </screen>
			    
                            Claro que, o endereço IP para a sua rede pode ser diferente do exemplo acima.
                        </para>

                        <para>
                            Se a entrada 'XDM_SERVER' não estiver presente, esta usuará então o valor
			    da entrada 'SERVER', se presente. Se esta não estiver presente, então ela
			    usará <command>192.168.0.254</command>.
                        </para>

                        <para>
                            A qual mesmo que especificada, você apenas precisa certificar-se que o endereço IP
			    é realmente o endereço correto do servidor executando o gerenciador de telas.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                            O gerenciador de telas pode ser configurado para ignorar requisições de hosts remotos.
                        </para>

                        <para>
                            Se você tiver determinado que o gerenciador de telas está em execução, então é possível
			    que ele fora configurado para ignorar requisições XDMCP de hosts remotos.
			    Você precisará checar os arquivos de configuração do gerenciador de telas particular
			    em execução para determinar se ele está configurado corretamente.
                        </para>

                        <itemizedlist>
                            <listitem>
                                <para><command>XDM</command></para>
                                <para>
                                    A configuração padrão para o Red Hat dé desativar a habilidade das estações de trabalho
				    receberem acesso a uma sessão XDM.  O script <command>Ltsp_initialize</command> tomará cuidado de permitir
				    isto para você, mas se não estiver funcionando, você deve verificar o arquivo
				    <filename>/etc/X11/xdm/xdm-config</filename>. Procure uma entrada que pareça com esta:
				    
                                    <screen>
DisplayManager.requestPort:     0
				    </screen>
				    
                                    Esta entrada DEVE estar comentada para que o XDM ouça a requisições remotas na porta 1777.
                                </para>
                                <para>
                                    Outro arquivo de configuração também é importante para que o XDM sirva a requisições
				    remotas de login. É um arquivo chamado <filename>/etc/X11/xdm/Xaccess</filename> que DEVE conter
				    uma linha que inicia com um asterisco '*'. A linha é normalmente incluída no arquivo,
				    mas a Red Hat a mantém comentada. O script <command>ltsp_initialize</command> irá corrigir a linha
				    para você, mas se o XDM não funcionar, você deve verificar este arquivo.
				    Uma linha válida deve parecer-se com a abaixo:
				    
                                    <screen>
*        #any host can get a login window
				    </screen>

                                </para>
                            </listitem>

                            <listitem>
                                <para><command>KDM</command></para>
                                <para>
                                    Novas versões do KDM possuem um arquivo chamado <command>kdmrc</command>. Diferentes distribuições
				    Linux mantém este arquivo em locais diferentes. Para o Red Hat 7.2, é <command>/etc/kde/kdm/kdmrc</command>.
                                    Para as outras distribuições, você deve executar o comando <command>locate</command> para localizar
				    onde o arquivo é mantido.
                                </para>
                                <para>
                                    A entrada que controla se estações de trabalho remotas poderão receber a tela de login é a seção
				    <command>[Xdmcp]</command>.
                                    Certifique-se que a entrada <command>Enable</command> está configurada para <command>true</command>.
                                </para>
                                <para>
                                    Versões antigas do KDM usam o arquivo de configuração do XDM, localizado em /etc/X11/xdm.
                                </para>
                            </listitem>

                            <listitem>
                                <para><command>GDM</command></para>
                                <para>
                                    O GDM usa um conjunto de diferentes arquivos de configuração. Eles estão localizados no diretório
				    <filename class="directory">/etc/X11/gdm</filename>.
                                </para>

                                <para>
                                    O principal a ser examinado é o arquivo <filename>gdm.conf</filename>. Procure pela seção <command>[xdmcp]</command>.
				    Você deve ver uma entrada dentro desta seção chamada 'Enable'. Ela deve estar configurada como
				    '1' ou 'true', dependendo da versão do GDM. Aqui está um exemplo:
				    
                                    <screen>
[xdmcp]
Enable=true
HonorIndirect=0
MaxPending=4
MaxPendingIndirect=4
MaxSessions=16
MaxWait=30
MaxWaitIndirect=30
Port=177
				    </screen>
				    
                                </para>
                                <para>
                                    Note a linha 'Enable=true'. Versões antigas do GDM usam '0' e '1' para ativar ou desativar
				    XDMCP remoto. Novas versões usam 'false' e 'true'.
                                </para>
                            </listitem>
                        </itemizedlist>
                    </listitem>

                    <listitem>
                        <para>
                            Se o gerenciador de telas estiver definitivamente em execução, e este estiver ouvindo a requisições
			    de estações de trabalho remotas, pode ser o simples problema no qual o gerenciador de telas não
			    consegue mapear o endereço IP para um nome de host. A estação de trabalho precisa estar listada
			    no arquivo <filename>/etc/hosts</filename>, ou esta precisa estar configurada corretamente no DNS.
                        </para>
                    </listitem>

                </orderedlist>
            </para>
        </sect2>
    </sect1>
</chapter>


<chapter>
    <title>Kernels</title>
    <para>
    	Existem algumas decisões que deve ser tomadas sobre o kernel
    	que irá rodar na estação. Você precisa decidir se você quer 
    	usar um dos kernels padrões disponíveis para download,
    	ou criar o seu próprio. E, você precisa decidir se você quer mostrar
    	uma tela gráfica, com uma barra de progresso, isso é possível com o
		<command>Linux Progress Patch (LPP)</command>.
    </para>

    <sect1>
        <title>Kernels padrões fornecidos pelo LTSP</title>
        <para>
        	O pacote do kernel que é disponível com o LTSP atualmente inclui 
        	dois kernels. Um tem o Patch para mostrar a barra de progresso já 
        	aplicado e configurado, e o outro não tem esse patch aplicado.
        </para>

        <para>
        	Ambos os kernels tem o patch para Swap por NFS aplicado.
        </para>
    </sect1>

    <sect1>
        <title>Construa seu próprio kernel</title>
        <para>
        	Existe duas maneiras de configurar um kernel para o LTSP. O método
        	padrão é usar algo chamado 'Initial Ram Disk' (Disco de Ram Inicial),
        	ou <command>initrd</command> para simplificar. A imagem initrd é um 
        	pequeno sistema de arquivos que é adicionado ao kernel. A imagem do 
        	sistema de arquivos initrd é carregada na memória, e uma vez que o 
        	kernel é carregado isso irá montar o ramdisk com seu sistema de 
        	arquivos raiz. Existem duas vantagens de se usar uma imagem initrd. 
        	Primeiro, nós poderemos compilar os drivers de rede como módulos e 
        	carregar o módulo correto durante o boot. Isso permite a um simples 
        	kernel suportar virtualmente todas as placas de rede. A outra vantagem 
        	é que nós podemos rodar um cliente DHCP como programa de usuário melhor que
        	no espaço do kernel. Rodar o cliente como um programa de usuário permite
        	um melhor controle sobre as opções solicitadas e recebidas do servidor.
        	Tambem, resulta um kernel ligeiramente menor. A outra maneira para 
        	configurar o kernel é sem o initrd. Construir o kernel sem o initrd 
        	requer que um específico driver para placa de rede seja linkada dentro 
        	do kernel, e isso tambem requer uma autoconfiguração do IP e 
        	"O sistema de arquivos Root em NFS" sejam setados ao se construir o kernel.
        	A vantagem de não usar initrd é que o kernel é ligeiramente menor, e 
        	carregará mais rápido. uma vez que a estação de trabalho estará rodando, 
        	não há vitualmente nenhuma diferença em como a estação de 
        	trabalho funciona.
        </para>

        <para>
        	O kernel padrão do LTSP inclui um Ramdisk inicial (initrd)
        	que tem o cuidado de detectar a placa de rede, e faz solicitação
        	DHCP em área de usuário. O objetivo principal para a imagem 
        	era de faze-la o menor possível. Entçai, nós escolhemos a biblioteca 
        	de substituição uClinux libc, e o busybox para a que precisariamos
        	durante o boot.
        </para>

        <para>
        	Se você quer criar seu próprio kernel, você deve fazer o download
        	do pacote ltsp_initrd_kit. Isso contem a hierarquia do sistema de arquivos
        	raiz e o script para criar a imagem.
        </para>

        <sect2>
            <title>Obtendo os fontes do kernel</title>
 
            <para>
            	Quando criamos um kernel customizado, é comum e uma boa idéia
            	iniciar com os fontes do kernel atualizados direto do site
            	<command>ftp.kernel.org</command>. A razão para isso é que as
            	distribuições como RedHat, aplicam muitos patches aos seus 
            	fontes do kernel, deixando você com uma série de código fonte
            	que realente não estão no kernel oficial.
            </para>
    
            <para>
            	Faça o download do pacote de fontes do kernel de sua escolha, e
            	salve no diretório <filename class="directory">/usr/src</filename>.
            	O kernel é localizado no diretório 
            	<filename class="directory">/pub/linux/kernel</filename>
            	no servidor ftp.kernel.org. Você precisa pegar uma versão recente da 
            	série 2.4.x, porque você precisa incluir suporte a <command>devfs</command>.
            </para>

            <para>
            	Tambem, se você quer incluir suporte a swap via nfs ou o Patch para 
            	a barra de progresso no linux (Linux Progress Patch (LPP)), você precisa
            	ter certeza de pegar os patches e os fontes do kernel que sejam compatíveis.
            	No momento em que escrevo isso, o kernel 2.4.9 é o último que 
            	suporta essas características.
            </para>

            <para>
                Para nosso exemplo, nós iremos usar o kernel 2.4.9.
                O caminho completo é
                <filename>ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.9.tar.bz2</filename>
            </para>

            <para>
                Descompacte os fontes do kernel no diretório
                <filename class="directory">/usr/src</filename>.
                Você precisa ter cuidado, porque quando você 
                descompactar o pacote, será criado um diretório chamado 
                <filename>linux</filename>. 
                Você pode já ter um diretório chamado 
                <filename>linux</filename> 
                com um direfente código fonte, e você não deve sobrescreve-lo. Então 
                verifique a existência desse diretório, e se ele existir, renomei-o para
                outro nome antes de descompactar seus fontes.
            </para>

            <para>
            	O pacote de fontes será baixando comprimido com o utilitário de 
            	compactação <command>bzip2</command>. Então nós precisamos 
            	descompacta-lo antes de usar o programa <command>tar</command>.
            	Você pode usar o seguinte comando para descompacta-lo:
                <screen>
bunzip2 &#60;linux-2.4.9.tar.bz2 | tar xf -
		</screen>
				Quando a descompactação terminar, você terá um diretório chamado
				<filename>linux</filename> contendo a árvore de fontes completa.
				Nesse ponto, eu normalmente gosto de renomear o diretório para 
				algo mais significativo.
                <screen>
mv linux linux-2.4.9
		</screen>
				Uma vez que o diretório foi renomeado, mudaremos para dentro do
				novo diretório:
                <screen>
cd linux-2.4.9
		</screen>
            </para>
            <para>
            	Eu normalmente gosto de modificar o <filename>Makefile</filename>
            	antes de começar a configuração do novo kernel. 
            	Perto do inicio do arquivo existe uma variável chamada
            	<command>EXTRAVERSION</command>. Eu seto esta para 'ltsp-1', 
            	então o número da versão atual do kernel será '2.4.9-ltsp-1', 
            	que tornará fácil a identificação do kernel posteriormente. 
            	O topo do Makefile deverá ficar parecido com 
            	isso:
                <screen>
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 9
EXTRAVERSION = -ltsp-1
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
		</screen>
            </para>
        </sect2>

        <sect2>
            <title>Patches do Kernel</title>
            <para>
            	Após descompactar o kernel, você pode ter vários patches
            	que deseja aplicar. Por exemplo, o patch para Swap por NFS ou 
            	o Patch para barra de progresso do Linux. Esses patches DEVEM ser
            	aplicados antes de configurar o kernel.
            </para>
            <sect3>
                <title>Patch para Swap por NFS</title>
                <para>
                	O patch para Swap por NFS irá possibilitar ao kernel da
                	estação de trabalho usar um arquivo de swap localizado no servidor
                	NFS. Enquanto é normalmente recomendado ter bastante memória na estação
                	para não se fazer necessário swap, algumas vezes pode 
                	ser dificil se addicionar mais memória, especialmente em 
                	computadores antigos. Então, essa característica de fazer
                	swap via NFS pode fazer um computador sem utilidade realmente usável.
                </para>
                <para>
                	Se o diretório corrente é /usr/src/linux-2.4.9, e o patch
                	está em /usr/src, você pode fazer o seguinte para testar o 
                	patch:
                    <screen>
patch -p1 --dry-run &#60;../linux-2.4.9-nfs-swap.diff </screen>
					Isso irá testar o patch, para ter certeza que pode ser aplicado
					Se isso terminar sem erros, então você pode aplicar o patch sem a opção 
					<command>--dry-run</command>.
                    <screen>
patch -p1 &#60;../linux-2.4.9-nfs-swap.diff
		    </screen>
                </para>
            </sect3>
            <sect3>
		<title>Patch de Progesso do Linux (Linux Progress Patch - LPP)</title>
                <para>
                	O patch de progresso do linux (LPP) irá permitir que você configure
                	um logo gráfico para mostrar durante o processo de boot. As
                	mensagens normais de kernel no boot serão redirecionadas para 
                	outra tela tty, e instruções especiais serão adicionadas nos
                	scripts de boot que origina uma barra de progresso para refletir
                	quanto do processo de boot já foi feito. 
                </para>
                
                <para>
                	Como o patch para Swap NFS, você pode testar o patch LPP
                	com o comando:
                    <screen>
patch -p1 --dry-run &#60;../lpp-2.4.9
		    </screen>
			Se o teste completou com sucesso, então você pode aplicar o patch com:
                    <screen>
patch -p1 &#60;../lpp-2.4.9
		    </screen>
                </para>
            </sect3>
        </sect2>

        <sect2>
            <title>Opções de configuração do Kernel</title>
            <para>
            	Você pode agora executar o programa de configuração do kernel de sua escolha.
            	Opções disponíveis são:
                <itemizedlist>
                    <listitem>
                        <para>make xconfig</para>
                        <para>
                        	Isso irá chamar a versão X Windows do utilitário de 
                        	configuração do kernel.
                        </para>
                    </listitem>
                    <listitem>
                        <para>make menuconfig</para>
                        <para>
                        	Isso irá chamar a versão baseada em curses do utilitário
                        	de configuração do kernel.
                        </para>
                    </listitem>
                    <listitem>
                        <para>make config</para>
                        <para>
                        	Isso irá chamar a versão baseada em perguntas do utilitário
                        	de configuração do kernel.
                        </para>
                    </listitem>
                </itemizedlist>
            </para>
 
            <sect3>
                <title>Configuração do kernel para uso com o initrd</title>
                <para>

                    Configurando o kernel para uso com o initrd requer 
                    que as seguintes opções sejam setadas:
                    <itemizedlist>

                        <listitem>
                            <para>
                                File systems -> /dev filesystem support
                            </para>
                            <para>
                            	Sistema de arquivos /dev deve estar habilitado. Isso 
                            	é selecionado na seção 'File systems'.
                            	Não especifique 'Automatically mount at boot'.
                            	A montagem deve ser efetuada pelo script /linuxrc
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                Block devices -> RAM disk support
                            </para>
                            <para>
                            	Estações LTSP requerem que o kernel suporte 
                            	um disco RAM (RAM disk). Isso é setado na seção
                            	'Block devices'
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                Block devices -> Initial RAM disk (initrd) support
                            </para>
                            <para>
                            	Isso também deve ser habilitado.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                Processor type and features -> Processor family
                            </para>
                            <para>
                            	Você precisa ter certeza de que o kernel que 
                            	você está construindo pode executar na CPU da estação.
				Isso é feito na seção 'Processor type and features'. 
                            	Você deve também desligar o suporte a SMP a menos que
				você tenha realmente múltiplas CPUS.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                File systems -> Network file systems -> NFS Client support
                            </para>
                            <para>
                            	A estação estará montando seu sistema de arquivos raiz via NFS,
				então o suporte a cliente NFS é necessário.
                            </para>
                        </listitem>
                    </itemizedlist>
                    Deve-se tomar cuidado com as opções requeridas.
		    Você pode também desligar várias características do kernel,
		    para reduzir o tamanho do kernel.
                </para>
            </sect3>

            <sect3>
                <title>Configuração do kernel para uso sem initrd</title>
                <para>
                	Configuração do kernel para uso sem initrd defere de um kernel 
                	com initrd em algumas maneiras:
                    <itemizedlist>
                        <listitem>
                            <para>
                                Block devices -> RAM disk support
                            </para>
                            <para>
                            	Estações LTSP precisam que o kernel tenha suporte a Ram Disk.
                            </para>
                        </listitem>

                        <listitem>
                            <para>
                                Block devices -> Initial RAM disk (initrd) support
                            </para>
                            <para>
                            	Isso precisa ser desabilitado.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                Networking options -> IP:kernel level
                                autoconfiguration
                            </para>
                            <para>
                            	Isso precisa ser habilitado. Isso irá instruir o 
                            	kernel para configurar automaticamente a interface
                            	de rede eth0, baseado nos valores passados na linha
                            	de comando do kernel.
                            </para>
                            <para>
                            	Não é necessário especificar opçoes de DHCP, BOOTP
                            	ou RARP porque a imagem de boot Etherboot já tem 
                            	feito uma requisição de DHCP ou BOOTP, e o fará 
                            	com os parâmetros de IP disponíveis na linha de
                            	comando do kernel. Isso dispensa o kernel do 
                            	problema de fazer sua própria 
                            	requisição.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                Network device support -> Ethernet (10 or 100Mbit)
                            </para>
                            <para>
                            	Quando não é usado o initrd, você deve escolher
                            	o driver da placa de rede específico que combine
                            	com sua placa de rede. Isso DEVE ser linkado de 
                            	forma estática no kernel, porque a interface de 
                            	rede é necessária antes de montar o sistema de 
                            	arquivos raiz. Essa é a principal diferença para o
                            	kernel com initrd.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                File systems -> /dev filesystem support
                            </para>
                            <para>
                            	Com o LTSP versão 2.09pre2, o suporte a 
                                <command>devfs</command> é necessário. 
                                Isso é verdadeiro independente se initrd 
                                é usado ou não
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                File systems -> Automatically mount at boot
                            </para>
                            <para>
                            	Ao NÃO usar initrd, o sistema de arquivos /dev
                            	deve ser montado pelo kernel, durante o processo
                            	de boot. Então, diga 'Y' aqui.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                File systems -> Network file systems -> NFS
                                Client support
                            </para>
                            <para>
                            	A Estação irá montar o sistema de arquivos
                            	raiz via NFS, então o suporte a cliente NFS
                            	é necessário.
                            </para>
                        </listitem>
                    </itemizedlist>
                </para>
            </sect3>
        </sect2>

        <sect2>
            <title>Construindo o kernel</title>
 
            <para>
            	Para tornar as coisas mais faceis, uma cópia do 
                arquivo <filename>.config</filename> é incluido no pacote
                ltsp_initrd_kit. Você pode copiar isso para o diretório
                <filename>/usr/src/linux-2.4.9</filename>
            </para>

            <para>
            	Uma vez que você terminou de selecionar ou de-selecionar as opções 
            	do kernel, você precisar gerar o kernel. Os seguintes comandos devem
            	ser executados para gerar o kernel:
                <screen>
make dep
make clean
make bzImage
make modules
make modules_install </screen>
				Você pode agregá-los todos juntos como abaixo:
                <screen>
make dep &amp;&amp; make clean &amp;&amp; make bzImage &amp;&amp; make modules &amp;&amp; make modules_install </screen>
				O E comercial duplo (&amp;) significa que se o primeiro comando 
				terminar com sucesso, então o segundo comando será executado.
				Se o segundo comando terminar com sucesso, então o terceiro comando
				será executado, e assim 
				sucessivamente.
            </para>
            <para>
            	Quando a compilação do kernel finalizar, o novo kernel estará 
            	situado em
                <filename class="directory">/usr/src/linux-2.4.9/arch/i386/boot/bzImage</filename>.
            </para>
        </sect2>

        <sect2>
            <title>Marcando o Kernel para Etherboot</title>
            <para>
            	Para Etherboot carregar o kernel linux, é necessário que seja preparado.
            	Isso é chamado 'Marcar' o kernel. Este processo adicionará
            	código extra ao kernel que é executado antes do controle ser passado 
            	para o kernel. A ferramenta para marcar o kernel é chamada
            	'<command>mknbi-linux</command>'.
            </para>
            <para>
            	O ltsp_initrd_kit inclui um script shell chamado
            	<command>buildk</command> que inclui todos os comandos
            	que você precisa para preparar a imagem do kernel para boot por rede.
            </para>
        </sect2>
    </sect1>
</chapter>


<chapter>
    <title>Entradas em lts.conf</title>
    <para>
        Quando projetamos o LTSP, um dos problemas que sabíamos que teríamos
	que tratar era com a variedade de configurações de hardware das estações.
        Certamente, qualquer que seja a combinação de processador, placa de rede e
	vídeo disponíveis hoje, poderiam não estariam disponíveis em três meses,
	então queremos adicionar mais estações à rede.
    </para>
    <para>
        Então, planejamos um modo de especificar as configurações de cada estação.
        O arquivo de configuração é chamado de <filename>lts.conf</filename> e encontra-se
	no diretório <filename class="directory">/opt/ltsp/i386/etc</filename>.
    </para>

    <para>
    	O formato do lts.conf permite  configurações 'padrões' e 
    	configurações individuais por estação. Se todas as suas estações são
	idênticas, você poderia especificar todos os seus parâmetros de configuração
	na sessão '[Default]'.
    </para>

    <sect1>
        <title>Arquivo exemplo lts.conf</title>
        <para>
        	Este é um exemplo do arquivo lts.conf:
            <screen>
[Default]
        SERVER             = 192.168.0.254
        X_MOUSE_PROTOCOL   = "PS/2"
        X_MOUSE_DEVICE     = "/dev/psaux"
        X_MOUSE_RESOLUTION = 400
        X_MOUSE_BUTTONS    = 3
        USE_XFS            = N
        SCREEN_01          = startx

[ws001]
        XSERVER            = auto
        X_MOUSE_PROTOCOL   = "Microsoft"
        X_MOUSE_DEVICE     = "/dev/ttyS1"
        X_MOUSE_RESOLUTION = 50
        X_MOUSE_BUTTONS    = 3
        X_MOUSE_BAUD       = 1200

[ws002]
        XSERVER            = XF86_Mach64

[ws003]
        SCREEN_01          = shell
             </screen>
        </para>
    </sect1>

    <sect1>
        <title>Parâmetros disponíveis no arquivo lts.conf</title>
        <sect2>
            <title>Parâmetros gerais</title>
            <variablelist>

                <varlistentry>
                    <term><command>Comentários</command></term>
                    <listitem>
                        <para>
                        	Comentários iniciam com o sinal '#' e continuam até o final 
                        	da linha.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>LTSP_BASEDIR</command></term>
                    <listitem>
                        <para>
                        	Isso indica onde o sistema de arquivos raiz do LTSP
                        	está localizado. O valor padrão é
                            <filename>/opt/ltsp</filename>
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SERVER</command></term>
                    <listitem>
                        <para>
				Isso é o servidor que é usado para XDM_SERVER,
				TELNET_HOST, XFS_SERVER e SYSLOG_HOST, se qualquer
				um deles não for especificado explicitamente. Se você tem
				uma máquina que está atuando como um servidor para tudo,
				então você pode apenas especificar o endereço aqui e omitir
				os outros parâmetros de servidor. Se este valor não for setado,
				<command>192.168.0.254</command> será usado.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SYSLOG_HOST</command></term>
                    <listitem>
                        <para>
                        	Se você quer enviar as mensagens de log para uma máquina
                        	que não seja o servidor padrão, então você pode 
                        	especificar essa máquina aqui. Se este parâmetro não 
                        	for especificado, então ele irá usar o parâmetro 'SERVER'
                        	descrito acima.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>NFS_SERVER</command></term>
                    <listitem>
                        <para>
                        	Isso especifica o endereço IP do servidor NFS 
                        	usado quando o sistema de arquivos 
                        	<filename>/home</filename>é montado. 
                        	O padrão é o que quer que tenha sido setado 
                        	no parâmetro<command>SERVER</command>
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>USE_NFS_SWAP</command></term>
                    <listitem>
                        <para>
                        	Configure isso para <command>Y</command> se você
                        	quer ligar o swap por NFS. O Padrão é <command>N</command>
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SWAPFILE_SIZE</command></term>
                    <listitem>
                        <para>
                        	Isso é como você pode controlar o tamanho o 
                        	arquivo de swap. O padrão é <command>64m</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SWAP_SERVER</command></term>
                    <listitem>
                        <para>
                        	O arquivo de swap pode existir em qualquer servidor 
                        	da rede que tenha capacidade de manipulá-lo.
				Você pode especificar o endereço IP desse servidor.
				O padrão é o que quer que tenha sido setado no parâmetro NFS_SERVER.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>NFS_SWAPDIR</command></term>
                    <listitem>
                        <para>
                        	O diretório no servidor que é exportado por NFS.
				O padrão é <filename>/var/opt/ltsp/swapfiles</filename>.
				Tenha certeza que o diretório está sendo exportado no arquivo
				<filename>/etc/exports</filename>.
			</para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>TELNET_HOST</command></term>
                    <listitem>
                        <para>
                        	Se a estação está configurada para ter uma interface baseada
                        	em caracteres, então o valor desse parâmetro será usado como
                        	o host para o telnet. Se esse valor não for setado, então será
                        	usado o valor do parâmetro <command>SERVER</command> acima.
                        </para>
                        <para>
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>DNS_SERVER</command></term>
                    <listitem>
                        <para>
                        	Usado para gerar o arquivo resolv.conf.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SEARCH_DOMAIN</command></term>
                    <listitem>
                        <para>
                        	Usado para gerar o arquivo resolv.conf.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SCREEN_01</command> até <command>SCREEN_12</command></term>
                    <listitem>
                        <para>
                        	Até 12 scripts de tela pode ser configurado por
                        	estação. Isso irá permitir até 12 sessões na
                        	estação que serão acessíveis pressionando-se as teclas 
                        	Ctrl-Alt-F1 até Ctrl-Alt-F12
				<screen>
SCREEN_01   = startx
SCREEN_02   = shell
				</screen>
                        </para>

                        <para>
                        	Atualmente os valores possíveis incluem:
                            <itemizedlist>
                              <listitem><para>startx</para></listitem>
                              <listitem><para>telnet</para></listitem>
			      <listitem><para>rdesktop</para></listitem>
                              <listitem><para>shell</para></listitem>
                            </itemizedlist>
                            Olhe no diretório <filename class="directory">/opt/ltsp/i386/etc/screen.d</filename>
                            para mais scripts de tela, ou escreva seus próprios, e coloque-os lá.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>MODULE_01</command> até <command>MODULE_10</command></term>
                    <listitem>
                        <para>
                        	Até 10 módulos do kernel podem ser carregados usando
                        	essas entradas de configuração. A linha de comando 
                        	que você usaria executando o insmod pode ser
                        	especificada aqui. Por exemplo:
				<screen>
MODULE_01   = uart401.o
MODULE_02   = "sb.o io=0x220 irq=5 dma=1"
MODULE_03   = opl3.o
				</screen>
                        </para>

                        <para>
                        	Se o valor desse parâmetro é o caminho absoluto, 
                        	então <command>insmod</command> será usado para carregar
                        	esse módulo. Senão, <command>modprobe</command> será usado.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>RAMDISK_SIZE</command></term>
                    <listitem>
                        <para>
                        	Quando a estação inicializa, isso criará um ramdisk
                        	e montará no diretório /tmp. Você pode controlar
                        	o tamanho do sistema de arquivos com esse parâmetro.
                        	Especifique isso em unidade de kbytes (1024 bytes).
                    		Para criar um ramdisk de 1 megabyte, especifique 
				<command>RAMDISK_SIZE = 1024</command>
                        </para>
                        <para>
                        	Se você modificar o tamanho do ramdisk aqui, você 
                        	precisará mudar também o tamanho do ramdisk dentro do kernel.
				Isto pode ser compilado dentro, ou se você está usando Etherboot
				ou Netboot, você dirá para o kernel o tamanho do ramdisk quando
				você rotular o kernel com mknbi-linux.
                        </para>
                        <para>
                        	O valor padrão para isso é 1024 ( 1 mb )
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>RCFILE_01</command> thru <command>RCFILE_10</command></term>
                    <listitem>
                        <para>
                        	Scripts RC adicionais podem ser executados pelo script rc.local.
				Apenas coloque o script no diretório /etc/rc.d, e especifique
				o nome do script em uma dessas entradas.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SOUND</command></term>
                    <listitem>
                        <para>
                        	Se o pacote de som LTSP está instalado, você precisa
                        	configurar essa entrada para <command>Y</command> e isso 
                        	irá executar o script <command>rc.sound</command> para 
                        	configurar a placa de som e o daemon.
                        	O padrão é <command>N</command>.
                        </para>
                    </listitem>
                </varlistentry>

            </variablelist>
        </sect2>

        <sect2>
            <title>Parâmetros X-Windows</title>
            <variablelist>
                <varlistentry>
                    <term><command>XDM_SERVER</command></term>
                    <listitem>
                        <para>
                        	Se você quer apontar o XDM para uma máquina diferente do servidor padrão,
				então você deve especificar o servidor aqui. Se o parâmetro não for especificado,
				então será usado o parâmetro SERVER descrito acima.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XSERVER</command></term>
                    <listitem>
                        <para>
				Isso define qual servidor X a estação irá executar.
				Para placas de video PCI e AGP, este parâmetro não
				é necessário. O script rc.local poderá auto detectar
				a placa. Você pode também configurar esse valor para
				<command>auto</command> para indicar que ele irá tentar
				auto detectar a placa.
                        </para>

                        <para>
                        	Para placas de vídeo ISA, ou para forçar um servidor X
                        	específico, você pode especificar o nome do driver 
                        	ou Xserver nesse entrada.
                        </para>
                        <para>
                        	Se o valor iniciar com <command>XF86_</command>, então o XFree86 3.3.6 será usado.
				Senão, X.org 6.7.0 será usado. O valor padrão para isso é <command>auto</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_MODE_0</command> through <command>X_MODE_2</command></term>
                    <listitem>
                        <para>
                        	Até 3 Modelins ou resoluções podem ser configuradas para a estação.
				Esta entrada pode ter dois diferentes tipos de valores.
				Podendo ser uma resolução ou um completo modeline.
				<programlisting width=80>
X_MODE_0 = 800x600

or

X_MODE_0 = 800x600 60.75 800 864 928 1088 600 616 621 657 -HSync -VSync
				</programlisting>
                        </para>
                        <para>
                        	Se nenhuma das entradas X_MODE_x forem especificadas,
				então serão usadas as geradas em modelines, e as 
                        	resoluções de 1024x768, 800x600 and 640x480.
                        </para>
                        <para>
                        	Se uma ou mais entradas X_MODE_x forem especificadas,
				elas cancelarão completamente qualquer uma gerada em modelines.
                        </para>
                          
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_MOUSE_PROTOCOL</command></term>
                    <listitem>
                        <para>
                        	Qualquer valor que funcione no protocolo de ponteiros
				do X.org pode ser colocado aqui. Valores típicos
				incluem "Microsoft" e "PS/2".  O valor padrão para
				isso é <command>"PS/2"</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_MOUSE_DEVICE</command></term>
                    <listitem>
                        <para>
                        	Isto é o dispositivo onde o mouse está conectado.
				Se é um mouse serial, isto será uma porta serial,
                        	como <command>/dev/ttyS0</command> ou <command>/dev/ttyS1</command>.
				Se é um mouse PS/2, o valor será <command>/dev/psaux</command>.
				O valor padrão para isso é <command>/dev/psaux</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_MOUSE_RESOLUTION</command></term>
                    <listitem>
                        <para>
                        	Este é o valor 'Resolution' no arquivo <command>XF86Config</command>.
				O valor típico para um mouse serial é <command>50</command>
				e o valor típico para um mouse PS/2 é <command>400</command>.
				O valor padrão para isso é <command>400</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_BUTTONS</command></term>
                    <listitem>
                        <para>
				Isso informa ao sistema quantos botões o mouse possui.
				Normalmente é setado para <command>2</command> ou
				<command>3</command>.  O valor padrão para isso é <command>3</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_MOUSE_EMULATE3BTN</command></term>
                    <listitem>
                        <para>
                        	Isso informa ao servidor X para copiar um mouse de 3 botões
                        	aceitando um clique de ambos, os botões da esquerda e da
                        	direita simultaneamente. O valor padrão é <command>N</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_MOUSE_BAUD</command></term>
                    <listitem>
                        <para>
                            Para um mouse serial, isso define a taxa de baud.
                            O valor padrão para isso é
                            <command>1200</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_COLOR_DEPTH</command></term>
                    <listitem>
                        <para>
                        	Isto é o número de bits usados para a profundidade de 
                        	cores. Valores possíveis são <command>8</command>,
				<command>15</command>, <command>16</command>, <command>24</command> e
				<command>32</command>. 8 bits teremos 256 cores, 16 teremos 65536 cores,
				24 teremos 16 milhões de cores e 32 bits teremos 4.2 bilhões de cores!
				Nem todos os servidores X suportam todos esses valores.
				O Valor padrão para isso é <command>16</command>
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>USE_XFS</command></term>
                    <listitem>
                        <para>
                        	Você tem a escolha de executar um servidor de fontes X 
                        	(XFS) ou ler as fontes através de um sistema de 
                        	arquivos NFS. O servidor de fontes deve oferecer uma
                        	maneira simples de manter todas as fontes em um lugar,
                        	mas existem alguns problemas quando o número de estações
                        	cresce aproximadamente para mais de 40. Os 2 valores 
                        	para essa opção são: <command>Y</command> e 
                        	<command>N</command>. Se você quer utilizar um servidor 
                        	de fontes, então você deve usar a entrada 
                        	<command>XFS_SERVER</command> para 
                        	especificar qual host irá atuar como um servidor 
                        	de fontes.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XFS_SERVER</command></term>
                    <listitem>
                        <para>
                        	Se você esta usando um servidor de fontes X para fornecer fontes,
                        	então você pode usar essa entrada para especificar o 
                        	endereço IP do host que está atuando como um servidor 
                        	de fontes. Se isso não for especificado, será usado
                        	o servidor padrão, que está especificado na entrada
                        	<command>SERVER</command> descrita acima.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_HORZSYNC</command></term>
                    <listitem>
                        <para>
                        	Isto configura o parâmetro de configuração 
                        	<command>HorizSync</command> do X.org.
                        	O padrão é <command>"31-62"</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_VERTREFRESH</command></term>
                    <listitem>
                        <para>
                        	Isto configura o parâmetro de configuração 
                        	<command>VertRefresh</command> do X.org.
                        	O padrão é <command>"55-90"</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XF86CONFIG_FILE</command></term>
                    <listitem>
                        <para>
                        	Se você quer criar seu próprio arquivo
                        	XF86Config completo você pode fazer isso 
                        	colocando-o no diretório <command>/opt/ltsp/i386/etc</command>.
                        	Então, o que quer que você decida chamar é necessário 
                        	ser colocado como valor para essa variável de configuração.
                        	Por exemplo:
                            <screen>
XF86CONFIG_FILE = XF86Config.ws004
			    </screen>
                        </para>
                    </listitem>
                </varlistentry>
            </variablelist>
        </sect2>

        <sect2>
            <title>Parâmetros para telas de toque (Touch screen)</title>
            <variablelist>
                <varlistentry>
                    <term><command>USE_TOUCH</command></term>
                    <listitem>
                        <para>
                            Se você está conectando uma touch screen na
                            estação, você pode habilitá-la configurando 
                            esta entrada para <command>Y</command>. Se habilitada,
                            as entradas de configurações adicionais irão configurar
                            os aspectos específicos da touch screen. O 
                            valor padrão é <command>N</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_TOUCH_DEVICE</command></term>
                    <listitem>
                        <para>
                            Uma touch screen funciona como um mouse e normalmente
                            é interfaceada com a estação através de uma 
                            porta serial. Você pode especificar qual porta serial
                            com essa entrada. Por exemplo, você pode configurá-la
                            igual a <command>/dev/ttyS0</command>.  Não 
                            há valor padrão para essa entrada.
                        </para>
                    </listitem>
                </varlistentry>
    
                <varlistentry>
                    <term><command>X_TOUCH_MINX</command></term>
                    <listitem>
                        <para>
                        	Entrada de calibração para um touch screen EloTouch.
				Padrão é <command>433</command>.
                        </para>
                    </listitem>
                </varlistentry>
         
                <varlistentry>
                    <term><command>X_TOUCH_MAXX</command></term>
                    <listitem>
                        <para>
                        	Entrada de calibração para um touch screen EloTouch.
				Padrão é <command>3588</command>.
                        </para>
                    </listitem>
                </varlistentry>
         
                <varlistentry>
                    <term><command>X_TOUCH_MINY</command></term>
                    <listitem>
                        <para>
                        	Entrada de calibração para um touch screen EloTouch.
				Padrão é <command>569</command>.
                        </para>
                    </listitem>
                </varlistentry>
         
                <varlistentry>
                    <term><command>X_TOUCH_MAXY</command></term>
                    <listitem>
                        <para>
                        	Entrada de calibração para um touch screen EloTouch.
				Padrão é <command>3526</command>.
                        </para>
                    </listitem>
                </varlistentry>
         
                <varlistentry>
                    <term><command>X_TOUCH_UNDELAY</command></term>
                    <listitem>
                        <para>
                        	Entrada de calibração para um touch screen EloTouch.
				Padrão é <command>10</command>.
                        </para>
                    </listitem>
                </varlistentry>
         
                <varlistentry>
                    <term><command>X_TOUCH_RPTDELAY</command></term>
                    <listitem>
                        <para>
                        	Entrada de calibração para um touch screen EloTouch.
				Padrão é <command>10</command>.
                        </para>
                    </listitem>
                </varlistentry>
            </variablelist>
        </sect2>

        <sect2>
            <title>Parâmetros para aplicações locais</title>
            <variablelist>
                <varlistentry>
                    <term><command>LOCAL_APPS</command></term>
                    <listitem>
                        <para>
                        	Se você quer a capacidade de executar aplicações
                        	localmente na estação, configure esta variável para
				<command>Y</command>. Diversos passos adicionais
				devem ser feitos no servidor para habilitar aplicações locais.
				Verifique a seção 'Local Apps' no manual do LTSP para mais informações.
				O valor padrão é <command>N</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>NIS_DOMAIN</command></term>
                    <listitem>
                        <para>
                        	Se você configurou LOCAL_APPS, então você deve ter 
                        	um servidor NIS na rede. A entrada NIS_DOMAIN
                        	é onde você especifica o nome do domínio NIS.
                        	É necessário combinar o nome do domínio com o que 
                        	foi definido no servidor NIS. Isso não é o mesmo que
                        	um domínio Internet. O valor padrão é <command>ltsp</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>NIS_SERVER</command></term>
                    <listitem>
                        <para>
                        	Configure isso com o endereço IP de seu servidor NIS
                        	se você não quiser enviar um broadcast que irá localizar
                        	o servidor NIS.
                        </para>
                    </listitem>
                </varlistentry>
            </variablelist>
        </sect2>

        <sect2>
            <title>Parâmetros de teclado</title>
            <para>
            	Todos os arquivos de suporte de teclado são copiados 
            	dentro da hierarquia /opt/ltsp/i386 , para configurar 
            	suporte a teclado internacional é simplesmente uma questão
            	de configurar o X.org.
            	Existem vários parâmetros de configuração para isso.
            </para>
            <para>
            	Os valores para os parâmetros abaixo são da documentação do X.org.
            	O que é valido para o X.org é valido para estes parâmetros.
            </para>
            <para>
            	Gostaríamos de adicionar documentação para mostrar quais 
            	valores são necessários para cada tipo de teclado internacional.
            	Se você trabalha com isso e quer configurar seu teclado internacional,
            	dê um retorno para o grupo de desenvolvimento do LTSP que
		será muito valorizado.
            </para>
            <variablelist>
                <varlistentry>
                    <term><command>XkbTypes</command></term>
                    <listitem>
                        <para>
                            O valor padrão para isso é a palavra
                             '<command>default</command>'.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XkbCompat</command></term>
                    <listitem>
                        <para>
                            O valor padrão para isso é a palavra
                             '<command>default</command>'.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XkbSymbols</command></term>
                    <listitem>
                        <para>
                            O valor padrão para isso é
                            '<command>us(pc101)</command>'.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XkbModel</command></term>
                    <listitem>
                        <para>
                            O valor padrão para isso é
                            '<command>pc101</command>'.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XkbLayout</command></term>
                    <listitem>
                        <para>
                            O valor padrão para isso é
                            '<command>us</command>'.
                        </para>
                    </listitem>
                </varlistentry>
            </variablelist>
        </sect2>

        <sect2>
            <title>Parâmetros de configuração de impressoras</title>
            <para>
            	Até três impressoras podem ser conectadas a uma estação diskless.
            	A combinação de impressoras seriais e paralelas pode ser configurada
            	através das seguintes entradas no arquivo <command>lts.conf</command>:
            </para>

            <variablelist>
                <varlistentry>
                    <term><command>PRINTER_0_DEVICE</command></term>
                    <listitem>
                        <para>
                        	O nome do primeiro dispositivo de impressão. Nomes como
                            <command>/dev/lp0</command>,
                            <command>/dev/ttyS0</command> ou
                            <command>/dev/ttyS1</command> são permitidos.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_0_TYPE</command></term>
                    <listitem>
                        <para>
                        	O tipo de impressora. Opções válidas são
                            '<command>P</command>' para Paralela,
                            e '<command>S</command>' para Serial.
                        </para>
                    </listitem>
                </varlistentry>
               
                <varlistentry>
                    <term><command>PRINTER_0_PORT</command></term>
                    <listitem>
                        <para>
                        	A número de porta TCP/IP a ser usado. Por padrão, será 
                        	usado '<command>9100</command>'
                        </para>
                    </listitem>
                </varlistentry>
                   
                <varlistentry>
                    <term><command>PRINTER_0_SPEED</command></term>
                    <listitem>
                        <para>
                        	Se a impressora é serial, essa é a configuração 
                        	para selecionar a velocidade (baud rate). Por padrão, 
                        	'<command>9600</command>' será usado.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_0_FLOWCTRL</command></term>
                    <listitem>
                        <para>
                            Para impressoras seriais, o controle de fluxo pode ser 
                            especificado. Use '<command>S</command>' para 
                            controle de fluxo por software (XON/XOFF) ou 
                            '<command>H</command>' para controle de fluxo por
                            Hardware (CTS/RTS). Se nenhum deles for especificado,
                            '<command>S</command>' será usado.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_0_PARITY</command></term>
                    <listitem>
                        <para>
                        	Para impressoras seriais, a Paridade pode ser especificada.
                            As opções são: '<command>E</command>'-Even,
                            '<command>O</command>'-Odd ou
                            '<command>N</command>'-None.  Se não for específicada,
                            '<command>N</command>' será usado.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_0_DATABITS</command></term>
                    <listitem>
                        <para>
                        	Para impressoras seriais, o número de data bits pode
                        	ser especificado. As opções são:
                            '<command>5</command>', '<command>6</command>',
                            '<command>7</command>' e '<command>8</command>'. 
                            Se não for especificado, '<command>8</command>' será usado.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_DEVICE</command></term>
                    <listitem><para>Nome do segundo dispositivo de impressão</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_TYPE</command></term>
                    <listitem><para>Tipo do segundo dispositivo de impressão</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_PORT</command></term>
                    <listitem><para>Porta TCP/IP do segundo dispositivo de impressão</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_SPEED</command></term>
                    <listitem><para>Velocidade (baud rate) da segunda impressora (serial)</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_FLOWCTRL</command></term>
                    <listitem><para>Controle de fluxo da segunda impressora (serial)</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_PARITY</command></term>
                    <listitem><para>Paridade da segunda impressora (serial)</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_DATABITS</command></term>
                    <listitem><para>Bits de dados da segunda impressora (serial)</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_DEVICE</command></term>
                    <listitem>
                       <para>
                          Nome da terceira impressora
                       </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_TYPE</command></term>
                    <listitem>
                       <para>
                          Tipo da terceira impressora
                       </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_PORT</command></term>
                    <listitem><para>Porta TCP/IP da terceira  impressora
                              </para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_SPEED</command></term>
                    <listitem>
                       <para>
                          Velocidade (baud rate) da terceira impressora (serial)
                       </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_FLOWCTRL</command></term>
                    <listitem>
                       <para>
                          Controle de fluxo da terceira impressora (serial)
                       </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_PARITY</command></term>
                    <listitem>
                       <para>
                          Paridade da terceira impressora (serial)
                       </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_DATABITS</command></term>
                    <listitem>
                       <para>
                          Bits de dados da terceira impressora (serial)
                       </para>
                    </listitem>
                </varlistentry>
            </variablelist>
        </sect2>
    </sect1>
</chapter>

<chapter>
    <title>Aplicações Locais</title>
    <para>
    	Em um ambiente LTSP, você tem a opção de rodar as aplicações localmente na estação,
	ou remotamente no servidor.
    </para>

    <para>
    	De longe, a maneira mais fácil de configurar um ambiente LTSP é 
    	rodar as aplicações no servidor. Isto é, a aplicação cliente roda no 
    	servidor usando CPU e memória do servidor, enquanto é mostrado a saída de 
    	tela na estação e usando o teclado e mouse da estação.
    </para>

    <para>
    	Isso é uma capacidade fundamental do X Windows. A estação funciona como um 
    	terminal X Windows padrão.
    </para>

    <para>
    	Para que um usuário execute uma aplicação na estação, esta precisa de
    	algumas informações sobre o usuário. Informções sobre o seguinte:
        <itemizedlist>
            <listitem>
                <para>
                    Id de usuário
                </para>
            </listitem>
            <listitem>
                <para>
                    Grupo primário que o usuário pertence
                </para>
            </listitem>
            <listitem>
                <para>
                    O diretório home do usuário
                </para>
            </listitem>
        </itemizedlist>
        LTSP confia no Network Information Service NIS, (chamado anteriormente
        de <emphasis role="strong">Yellow Pages</emphasis>) para tornar as 
        informações de usuários e grupos disponíveis nas estações.
    </para>

    <sect1>
        <title>Benefícios da execução de aplicações localmente</title>
        <para>
        	Há benefícios da execução de aplicações na estação.
        </para>
        <para>
            <itemizedlist>
                <listitem>
                    <para>
                    	Reduz a carga do servidor. Em grandes redes com o uso intensivo de
                    	memória, tais como Netscape, rodando a aplicação na estação
                    	é possível obter um desempenho melhor, quando a estação é potente
                    	o suficiente para fazê-lo
                    </para>
                </listitem>
                <listitem>
                    <para>
                    	Aplicações em execução não afetarão outros usuários.
                    </para>
                </listitem>
                <listitem>
                    <para>
                    	O suporte de som é muito fácil de configurar quando a 
                    	aplicação que tocará o som esta rodando na estação.
                    </para>
                </listitem>
            </itemizedlist>
        </para>
    </sect1>

    <sect1>
        <title>Questões com a configuração do suporte de aplicações locais</title>
        <para>
        	Configurar a capacidade de executar aplicações localmente necessita de 
        	muito mais.
            <itemizedlist>
                <listitem>
                    <para>
                    	Uma maior demanda na estação. Isso necessita de mais RAM e
                    	de uma CPU mais poderosa. É um ponto de partida muito bom 64mb de ram na estação.
                    </para>
                </listitem>
                <listitem>
                    <para>
                    	NIS - Para executar aplicações na estação, você primeiramente 
                    	deve indentificar você mesmo para a estação. Isso é, a 
                    	estação precisar saber quem você é. Isso necessita de alguma
                    	forma de autenticação por senha. NIS foi escolhido como o método
                    	de autenticar os usuários na rede.
                    </para>
                </listitem>
                <listitem>
                    <para>
                    	Diretórios adicionais precisam ser exportados da estação
                    	para serem montados via NFS.
                    </para>
                </listitem>
                <listitem>
                    <para>
                    	A partida das aplicações é mais lenta, porque necessitam ser
                    	lidas via NFS, causando um aumento da atividade de rede.
                    	Também, porque cada cópia do programa é executada em sua 
                    	própria CPU, você não terá a vantagem da capacidade do 
                    	Linux/Unix de compartilhar segmentos de código entre múltiplas 
                    	instâncias do mesmo programa, que reduziria o tempo para 
                    	segundos e execuções sucessivas do programa.
                    </para>
                </listitem>
            </itemizedlist>
        </para>
    </sect1>

    <sect1>
        <title>Configuração do servidor para aplicações locais</title>
        <sect2>
            <title>Entradas no lts.conf</title>
            <para>
            	Algumas entradas devem ser configuradas no arquivo
                <filename>lts.conf</filename>:
                <variablelist>
                  <varlistentry>
                    <term><command>LOCAL_APPS</command></term>
                    <listitem>
                      <para>
                        Isto deve ser setado para <command>Y</command>.
                        Fará com que os seguintes passos aconteçam durante a 
                        processo de boot da estação. 
                        <orderedlist>
                          <listitem>
                            <para>
                              O diretório <filename>/home</filename> no servidor será montado via NFS.
                            </para>
                          </listitem>
                          <listitem>
                            <para>
                              O <filename>/var/yp/nicknames</filename> será criado na estação.
                            </para>
                          </listitem>
                          <listitem>
                            <para>
                              O <command>portmapper</command> será iniciado na estação.
                            </para>
                          </listitem>
                          <listitem>
                            <para>
                              <command>xinetd</command> será iniciado na estação.
                            </para>
                          </listitem>
                          <listitem>
                            <para>
                              O arquivo <filename>/etc/yp.conf</filename> será criado na estação.
                            </para>
                          </listitem>
                          <listitem>
                            <para>
                              O comando <command>domainname</command> será executado 
                              com o valor da entrada <command>NIS_DOMAIN</command> do arquivo
                              lts.conf.
                            </para>
                          </listitem>
                          <listitem>
                            <para>
                              O <command>ypbind</command> irá executar na estação.
                            </para>
                          </listitem>
                        </orderedlist>
                      </para>
                    </listitem>
                  </varlistentry>
                  <varlistentry>
                    <term><command>NIS_DOMAIN</command></term>
                    <listitem>
                      <para>
                        Com NIS, todos os pontos na rede que querem ser associados 
                        a um servidor NIS específico precisam pertencer ao mesmo
                        domínio NIS (isso não é relacionado de forma alguma a 
                        domínio DNS). Você usa a entrada NIS_DOMAIN para especificar
                        o nome do domínio NIS que a estação irá pertencer.
                      </para>
                    </listitem>
                  </varlistentry>
                  <varlistentry>
                    <term><command>NIS_SERVER</command></term>
                    <listitem>
                      <para>
                        NIS irá tentar conectar com um servidor NIS específico, ou 
                        irá enviar um broadcast para a rede, procurando por um servidor.
                        Se você quer escolher um servidor específico, então entre com o 
                        endereço IP do servidor na entrada NIS_SERVER.
                      </para>
                    </listitem>
                  </varlistentry>
                </variablelist>
            </para>
        </sect2>

        <sect2>
            <title>Network Information Service - NIS</title>
            <para>
            	NIS é um tipo de serviço Cliente/Servidor. No servidor, 
            	há um daemon rodando, que irá aceitar requisições de clientes
            	(estações de trabalho). O daemon no servidor é chamado <command>ypserv</command>.
            </para>
            <para>
            	Na estação, existe um processo chamado <command>ypbind</command>.
            	Quando a estação precisa localizar uma informação sobre um usuário, 
            	tais como a verificação de uma senha ou localização do dirtório home 
            	de um usuário, usará o ypbind para estabelecer uma conexão com o ypserv, 
            	no servidor.
            </para>
            <para>
            	Se você já está rodando NIS em seu ambiente de rede,
		então não será necessário configurar o servidor LTSP para 
            	rodar ypserv. Você pode apenas configurar as entradas NIS_DOMAINNAME e 
            	NIS_SERVER no lts.conf para combinar com seu esquema NIS atual.
            </para>
            <para>
            	Se você não esta rodando NIS em sua rede, então você deverá configurar
            	o servidor para rodar o <command>ypserv</command>.
            </para>
            <para>
	    	Para uma completa informação na configuração de um servidor NIS,
		consulte o documento HOWTO no site LDP chamado <emphasis role="strong">The Linux NIS(YP)/NYS/NIS+ HOWTO</emphasis>.
		Consulte a lista de outras fontes de informação no final deste documento.
            </para>
	</sect2>
    </sect1>

    <sect1>
        <title>Configuração de Aplicações</title>
        <para>
        	Para configurar uma aplicação para executar na estação, você
        	precisa colocar todos os componentes da aplicação em um lugar onde
        	a estação possa vê-la.
        </para>

        <para>
        	Com as versões antigas do LTSP (2.08 e anteriores), vários diretórios
        	eram exportados no servidor e montados na estação.
        	Diretórios como  <filename>/bin</filename>, <filename>/usr/bin</filename>, <filename>/lib</filename> e <filename>/usr</filename>
		foram expostos para a estação.
        </para>

        <para>
        	O problema com esse esquema é que isto só funciona se a 
        	estação e o servidor forem da mesma arquitetura. Na verdade, 
        	mesmo com as diferenças, como o servidor é um Pentiun II (i686)
        	e a estação um Pentium Clássico (i586) isso pode ser um problema,
        	porque o servidor irá ter as bibliotecas i686 e não as bibliotecas 
        	i386, i486 ou i586.
        </para>

        <para>
        	Então, a maneira mais clara de resolver isto é ter uma árvore completa
        	com todos os binários e bibliotecas que a estação irá precisar, 
        	independente das bibliotecas e binários do servidor.
        </para>

        <para>
        	Configurando uma aplicação para execução local requer a colocação
        	de todas as peças necessárias na árvore. Um desses pacotes disponíveis 
        	para download no site do LTSP é o pacote do netscape local, que instala 
        	muito dos arquivos no diretório <filename>/opt/ltsp/i386/usr/local/netscape</filename>.
        	Coisas como classes java, arquivos de Help, arquivos binários 
        	executáveis e scripts são colocados ali.
        </para>

        <para>
        	Netscape não precisa de quaisquer bibliotecas de sistema adicionais, 
        	então não há nada a adicionar no diretório <filename>/opt/ltsp/i386/lib</filename> .
		Muitas aplicações requerem bibliotecas adicionais. 
        </para>

        <para>
        	Então, como você pode determinar quais bibliotecas serão necessárias?  
        	Isto é o que o comando <command>ldd</command> torna acessível.
        </para>
        <para>
        	Vamos pressupor que você precisa configurar uma certa aplicação para
        	rodar localmente. Escolheremos <command>gaim</command> como 
        	exemplo. <command>gaim</command> é um cliente de Mensagens Instantâneas 
        	da AOL, isso irá permitir que você se comunique com outras pessoas nos 
        	foruns da AOL.
        </para>
        <para>
        	A primeira coisa que você vai precisar fazer é localizar o arquivo binário
        	executável do <command>gaim</command>. Em um sistema Redhat 7.2, ele está localizado 
        	no diretório <filename>/usr/bin</filename> .
        </para>
        <para>
            Uma vez localizado o binário do <command>gaim</command>, você
            pode executar <command>ldd</command> nele:
	    <programlisting>
[jam@server /]$ ldd /usr/bin/gaim
libaudiofile.so.0    => /usr/lib/libaudiofile.so.0 (0x40033000)
libm.so.6            => /lib/i686/libm.so.6 (0x40051000)
libnsl.so.1          => /lib/libnsl.so.1 (0x40074000)
libgnomeui.so.32     => /usr/lib/libgnomeui.so.32 (0x4008a000)
libart_lgpl.so.2     => /usr/lib/libart_lgpl.so.2 (0x4015d000)
libgdk_imlib.so.1    => /usr/lib/libgdk_imlib.so.1 (0x4016c000)
libSM.so.6           => /usr/X11R6/lib/libSM.so.6 (0x40191000)
libICE.so.6          => /usr/X11R6/lib/libICE.so.6 (0x4019a000)
libgtk-1.2.so.0      => /usr/lib/libgtk-1.2.so.0 (0x401b1000)
libdl.so.2           => /lib/libdl.so.2 (0x402df000)
libgdk-1.2.so.0      => /usr/lib/libgdk-1.2.so.0 (0x402e3000)
libgmodule-1.2.so.0  => /usr/lib/libgmodule-1.2.so.0 (0x40319000)
libXi.so.6           => /usr/X11R6/lib/libXi.so.6 (0x4031d000)
libXext.so.6         => /usr/X11R6/lib/libXext.so.6 (0x40325000)
libX11.so.6          => /usr/X11R6/lib/libX11.so.6 (0x40333000)
libgnome.so.32       => /usr/lib/libgnome.so.32 (0x40411000)
libgnomesupport.so.0 => /usr/lib/libgnomesupport.so.0 (0x40429000)
libesd.so.0          => /usr/lib/libesd.so.0 (0x4042e000)
libdb.so.2           => /usr/lib/libdb.so.2 (0x40436000)
libglib-1.2.so.0     => /usr/lib/libglib-1.2.so.0 (0x40444000)
libcrypt.so.1        => /lib/libcrypt.so.1 (0x40468000)
libc.so.6            => /lib/i686/libc.so.6 (0x40495000)
libz.so.1            => /usr/lib/libz.so.1 (0x405d1000)
/lib/ld-linux.so.2   => /lib/ld-linux.so.2 (0x40000000)
             </programlisting>
        </para>
        <para>
        	A listagem acima mostra todas as bibliotecas que o programa 
            <command>gaim</command> é dinamicamente linkado em posição contrária.
        </para>
        <para>
        	A maioria dos programas usam bibliotecas compartilhadas, confie no carregador
        	dinâmico <command>ld-linux</command> para localizar e carregar cada uma das
		bibliotecas compartilhadas. Entretanto, alguns programas, no entanto, carregam
		as bibliotecas manualmente com chamadas a função <command>dlopen()</command>.
        	Para essas aplicações, <command>ldd</command> não irá mostrar as bibliotecas.
		Neste caso, <command>strace</command> deve ser usado para rastrear a execução
		desse programa, e você deverá ver as chamadas ao <command>dlopen()</command>,
		com o nome da biblioteca listada em seus argumentos.
        </para>
        <para>
        	Uma vez que a lista de bibliotecas for coletada, as bibliotecas
        	necessárias deverão ser copiadas para seus locais apropriados na 
        	árvore <filename>/opt/ltsp/i386</filename>.
        </para>
        
    </sect1>

    <sect1>
        <title>Executando aplicações locais</title>
        <para>
        	No X Windows, os programas funcionam normalmente em relação ao lugar 
        	onde o gerenciador de janelas está sendo executado. Isto é, se o 
        	gerenciador de janelas está executando no servidor, mostrando sua 
        	saída na estação, então todos os programas que serão chamados,
        	serão executados no servidor, enviando sua saída para a estação.
        </para>
        <para>
        	O truque é o servidor dizer para a estação executar o programa.
		Isso é feito tipicamente com o comando <command>rsh</command> .
        </para>
        <para>
            Aqui está um exemplo de como executar o programa <command>gaim</command> na estação:
		<programlisting>
HOST=`echo $DISPLAY | awk -F: '{ print $1 }'`
rsh ${HOST} /usr/bin/gaim -display ${DISPLAY}
		</programlisting>
        </para>
        <para>
        	O exemplo acima pode ser digitado em uma janela <command>xterm</command>,
		ou pode ser colocado em um shell script, e ser executado por um ícone na área de trabalho.
        </para>
        <para>
        	De modo similar é feita a execução local do Netscape, mas uma variável
		de ambiente adicional deve ser setada antes de executar o programa.
		<programlisting>
HOST=`echo $DISPLAY | awk -F: '{ print $1 }'`
rsh ${HOST} MOZILLA_HOME=/usr/local/netscape \
    /usr/local/netscape/netscape -display ${DISPLAY}
		</programlisting>
        </para>
    </sect1>

</chapter>


<chapter>
    <title>Exemplos de Configuração</title>
    <para>
    	Quase todos os aspectos de uma estação podem ser configurados com entradas
    	no arquivo <filename>lts.conf</filename>, que geralmente está localizado no 
        diretório <filename>/opt/ltsp/i386/etc</filename> .
    </para>
    <sect1>
        <title>Mouse Serial</title>
        <para>
            Aqui está um exemplo das entradas no arquivo <filename>lts.conf</filename> para
            um mouse serial padrão de 2 botões:
            <screen>
X_MOUSE_PROTOCOL    = "Microsoft"
X_MOUSE_DEVICE      = "/dev/ttyS0"
X_MOUSE_RESOLUTION  = 400
X_MOUSE_BUTTONS     = 2
X_MOUSE_EMULATE3BTN = Y
</screen>
        </para>
    </sect1>

    <sect1>
        <title>Mouse PS/2 com roda</title>
        <para>
            Aqui está um exemplo das entradas no arquivo <filename>lts.conf</filename> para
            o uso de um Intellimouse:
            <screen>
X_MOUSE_PROTOCOL    = "IMPS/2"
X_MOUSE_DEVICE      = "/dev/psaux"
X_MOUSE_RESOLUTION  = 400
X_MOUSE_BUTTONS     = 5
X_ZAxisMapping      = "4 5"
</screen>
        </para>
    </sect1>

    <sect1>
        <title>Impressora USB em um ThinkNic</title>
        <para>
            A estação ThinkNIC possui uma porta USB, que pode ser usada
            para conectar uma impressora local.  Aqui está um exemplo das
            entradas necessárias no arquivo <filename>lts.conf</filename> :
            <screen>
MODULE_01           = usb-ohci
MODULE_02           = printer
PRINTER_0_DEVICE    = /dev/usb/lp0
PRINTER_0_TYPE      = S
	    </screen>
        </para>
    </sect1>

    <sect1>
        <title>Forçando a estação a carregar o Xserver XFree86 3.3.6</title>
        <para>
            Por padrão, X.org 6.7.0 será usado para a estação.
            Se você quer forçar a estação a usar o antigo Xserver XFree86 3.3.6,
            você deve primeiramente carregar o pacote Xserver 3.3.6 apropriado.
            Então, você precisa adicionar a entrada no arquivo <filename>lts.conf</filename>.
            Este é um exemplo da especificação do <command>SVGA</command> Xserver:
            <screen>
XSERVER = XF86_SVGA
</screen>
        </para>
    </sect1>

</chapter>


<chapter>
    <title>Outras fontes de informação</title>
    <sect1>
        <title>Referências Online</title>
        <para>
            <orderedlist>
                <listitem>
                    <para>
                        The LTSP home page&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink url="http://www.LTSP.org">
                            <citetitle>www.LTSP.org</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>
                        
                <listitem>
                    <para>
                        Diskless-Nodes HOW-TO document for Linux&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink url="http://www.linuxdoc.org/HOWTO/Diskless-HOWTO.html">
                            <citetitle>www.linuxdoc.org/HOWTO/Diskless-HOWTO.html</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        Etherboot Home Page&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink url="http://etherboot.sourceforge.net">
                            <citetitle>etherboot.sourceforge.net</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        The Rom-O-Matic site&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink url="http://www.rom-o-matic.net">
                            <citetitle>www.Rom-O-Matic.net</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        X.org Mouse Support&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink url="http://www.xfree86.org/current/mouse.html">
                            <citetitle>www.xfree86.org/current/mouse.html</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        XFree86-Video-Timings-HOWTO&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink url="http://www.linuxdoc.org/HOWTO/XFree86-Video-Timings-HOWTO.html">
                            <citetitle>www.linuxdoc.org/HOWTO/XFree86-Video-Timings-HOWTO.html</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        The Linux NIS(YP)/NYS/NIS+ HOWTO&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink url="http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html">
                            <citetitle>www.linuxdoc.org/HOWTO/NIS-HOWTO.html</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>


            </orderedlist>
        </para>
    </sect1>

    <sect1>
        <title>Publicações Impressas</title>
        <para>
            <orderedlist>
                <listitem>
                    <para>
                        <literalLayout>
Managing NFS and NIS
Hal Stern
O'Reilly &amp; Associates, Inc.
1991
ISBN 0-937175-75-7
                        </literalLayout>
                    </para>                        
                </listitem>

                <listitem>
                    <para>                        
                        <literalLayout>
TCP/IP Illustrated, Volume 1
W. Richard Stevens
Addison-Wesley
1994
ISBN 0-201-63346-9
                        </literalLayout>
                    </para>                        
                </listitem>

                <listitem>
                    <para>                        
                        <literalLayout>
X Window System Administrator's Guide
Linda Mui and Eric Pearce
O'Reilly &amp; Associates, Inc.
1993
ISBN 0-937175-83-8
(Volume 8  of the The Definitive Guides to the X Window System)
                        </literalLayout>
                    </para>                        
                </listitem>
            </orderedlist>
        </para>
    </sect1>
</chapter>
</book>
