Diskless: mudanças entre as edições

De Pontão Nós Digitais
Ir para navegaçãoIr para pesquisar
Sem resumo de edição
(X11)
 
(89 revisões intermediárias por 3 usuários não estão sendo mostradas)
Linha 1: Linha 1:
D I S K L E S S
[[imagem:Modelo 3 - rede centralizada - diskless-fine.png|thumb|right||650px|Modelo de rede baseada no conceito de Terminais Inteligentes. Clique na imagem para ampliar.]]


* 1 SERVIDOR
== Sistema Diskless ==
* 1.1 Diskless
=== O que é Diskless? ===
* 1.1.1 O que é?
* 1.1.2 Vantagem e desvantagem
* 1.1.3 Como funciona
* 1.1.4 Placa de rede Cliente
* 1.1.5 Estrutura de diretório
* 1.1.6 Problemas com /var


* 1.2 Instalando Linux Ubuntu 8.04
<p align=”Justify”> É um conjunto de serviços, instalados em um servidor, que fornecem todos os arquivos necessários para a montagem de um sistema operacional transparente - cliente -, via rede, como se fosse local.</p>
* 1.2.1 Particionando disco, export (partição Diskless)
<p align=”Justify”> Seu conceito de uso está baseado na idéia de rede centralizada formada por Fat Clients ou Terminais Inteligentes, na qual cada computador-cliente é dependente de um servidor. Diferentemente do modelo Thin Client (Terminais Inteligentes), este modelo utiliza o processamento e os recursos que o computador-cliente oferece. Na prática isso significa que quanto mais recursos de hardware o computador-cliente oferece mais desempenho a estação poderá ter. </p>
* 1.2.2 Configurando rede
=== Histórico ===
* 1.2.3 Compartilhando internet
<p align=”Justify”>O intento de criar, dentro de um modelo centralizado, um software ou um conjunto de ferramentas que atendessem, administrativamente, computadores-clientes com mais recursos de hardware foi uma preocupação de muitos programadores durante bastante tempo na história da evolução do computadores pessoais. </p>
* 1.2.4 Atualizando lista de programas
<p align=”Justify”>Partindo dessa necessidade e desta problemática, a empresa [http://www.async.com.br/ Async Open Source] criou a solução Diskless Desktop, uma arquitetura de rede que, como o próprio nome diz, trabalha sem disco rígido e possibilita compartilhamento de arquivos, impressoras, serviço de e-mail, intranet e bases de dados, ficando os dados de seus usuários em servidores protegidos. Esta documentação é fruto da releitura da pequena documentação inicial produzida pela Async Open Source e pela contribuição dos instrutores do Pontão Nós Digitais.</p>


* 1.3 Instalando serviços iniciais DHCP e TFTP
=== Vantagens e desvantagens ===
* 1.3.1 Placa rede Cliente - http://rom-o-matic.net
<table border="0" cellpadding="1" cellpadding="1" cellspacing="1" align="center">
* 1.3.2 DHCP
<tr>
* 1.3.3 TFPT-HPA
<th style="background:#98FB98;">Vantagens</th>
</tr>


* 1.4 Debootstrap
<tr><td>
* 1.5 NFS
:* '''Segurança de um sistema operacional GNU/Linux'''
* 1.6 NIS
::Usar um sistema operacional GNU/Linux como provedor de serviços em servidor aumenta consideravelmente a segurança do sistema operacional em si e a segurança dos dados armazenados por ele.
</td> </tr>


* 2 CLIENTE
<tr><td>
* 2.1 Scripts de inicialização, /var
:* '''Atualização de fácil administração'''
* 2.2 Rede /etc/network/interfaces
::Quando temos uma rede descentralizada, a atualização dos sistemas operacionais que compõem a rede, em muitos casos, torna-se bastante demorada e despendiosa ao Administrador de Rede. Utilizando uma rede baseada em Terminais Inteligentes esta problemática deixa de existir pois a atualização do servidor tem efeito para todos os terminais.
* 2.3 Configurando partições
</td></tr>
* 2.3.1 /etc/fstab
* 2.4 NFS
* 2.5 NIS
* 2.6 Instalando X Window e Desktop
* 2.7 Instalando novo cliente


<tr><td>
:* '''Inserção fácil de novas máquinas na Rede'''
::Colocar um novo computador na Rede de Terminais Inteligentes é muito mais fácil, bastando ao administrador editar alguns poucos arquivos!
</td></tr>


* 1.1 - Diskless SERVIDOR
<tr><td>
:* '''Acesso aos seus arquivos em qualquer computador-cliente'''


* 1.1.1 – O que é Diskless?
::Imagine uma rede com 10 computadores na qual todos aqueles que fazem uso destas máquinas diariamente não tem máquina definida para trabalhar. Imagine um telecentro com 20 (vinte) ou mais computadores cujos utilizadores podem armazenar seus arquivos por um determinado período de tempo. Como fica o gerenciamento dos arquivos utilizados por essas pessoas? Numa rede descentralizada cada qual terá de utilizar o mesmo computador que utilizou no dia anterior. Isto não ocorre no uso de Terminais Inteligentes. Todos os arquivos ficam salvos no servidor, dentro da pasta pessoal de cada usuário, e o acesso a eles pode se dar a partir de qualquer computador-cliente.
</td></tr>


É um conjunto de serviços em um servidor capazes de fornecer todos os arquivo necessários para montar um sistema operacional transparente, como se fosse local.
<tr><td>
:* '''Economia de valor na compra de disco'''
::Terminais inteligentes não fazem uso de disco rígido - Hard Disk - para armazenamento de quaisquer dados. Isto diminui o valor de custo empregado na montagem de uma rede além de contar com a diminuição de ruido do disco rígido - sempre presente em máquinas desktop completas.
</td></tr>


* 1.1.2 - Vantagem e desvantagem
<th style="background:#FFD700;">Desvantagens</th>
<tr><td>
:* '''Efeito para todos os terminais em caso de problema, quebra do sistema'''
</td></tr>


'''Vantagens'''<br>
<tr><td>
Segurança Linux<br>
:* '''Chaves criptografadas para cada cliente'''  
Atualização de apenas um sistema para efeitos em todos os  terminais<br>
</td></tr>  
Colocar um novo computador na rede<br>
Acesso aos seus arquivos em qualquer computador cliente<br>
Diminui o ruido do disco rídigo<br>
Economia de valor na compra de disco


'''Desvantagens'''<br>
</table>
Efeito para todos os terminais em caso de problema, quebra do sistema<br>
Chaves criptogradas para cada cliente


=== Como funciona? ===
Tudo começa pela interface/placa de rede ethernet, pois é o ponto de partida para a configuração do computador-cliente. A partir do boot pela placa de rede, a Diskless começa a funcionar. A placa de rede carregará o driver e as informações da rede local passada pelo serviço '''DHCP''' e '''TFTP'''. Nesse momento já teremos a placa de rede com um ip e o tftp será o responsável pela transferência dos arquivos iniciais do sistema.
Outro serviço importante é o NFS. Ele será o responsável para que o computador-cliente tenha acesso aos arquivos do servidor. Após montado, o sistema está mapeado para executar os próximos serviços e carregar os restante dos arquivos necessários da Diskless.
NIS tem o papel de validação do usuário e senha do computador cliente.
+------------------------------ +
|     SERVIDOR            |                          COMPUTADOR CLIENTE, SEM DISCO RIGIDO.
        |                              |             +---------------+
|  +-------------------------+ |          REDE LAN     |     |
|  |    01 DHCP     | | <------------------------>|    CLIENTE    |
|  |    02 TFPT-BOOT     | |                  |              |
|  |    03 NFS             | |     +---------------+
|  | 04 NIS             | |                     
|  | 05 OUTROS     | |
|  | ...                | |
|  +-------------------------+ |
|       ^        |
|       |        |
        |  Sistema Diskless  v        |
        |  +-------------------------+  |
        |  |                        |  |
        |  |    /export              |  |
        |  |                        |  |
        |  +-------------------------+  |
        |                              |   
        +------------------------------ +
=== Tutorial de Instalação ===
Este tutorial é dividido em duas partes principais: Servidor e Cliente. Em cada uma das partes será tratado o modelo de construção de cada um destes elementos. Aqui está elencado passo-a-passo todo processo de montagem de uma rede baseada no modelo de Terminais Inteligentes - Fat Client.
=== Variáveis de ambiente ===
Variáveis de ambiente '''DESSE EXEMPLO''', faça as alterações necessárias de acordo com o seu ambiente.
REDE
endereço 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
dominio reggae.com.br


1.1.3 – Como funciona?
SERVIDOR
ip 192.168.0.1


+------------------------------ + +---------------+
INTERFACES DE REDE SERVIDOR (placa de rede)
| SERVIDOR |         | |
  eth0 - rede local / LAN
| |      ETHERNET | |
eth1 - internet  / WAN
|      01 DHCP | <------------------------> | CLIENTE |
|      02 TFPT-BOOT |              |              |
|      03 NFS | | |
| 04 DISKLESS |                      +---------------+
| 05 NIS |
| 06 OUTROS SERVIÇOS |
| 07 OUTROS SERVIÇOS |
| 08 OUTROS SERVIÇOS |
| 09 OUTROS SERVIÇOS |
| 10 OUTROS SERVIÇOS |
| 11 OUTROS SERVIÇOS |
+------------------------------ +


CLIENTES
jimicliff 192.168.0.10
natirutis 192.168.0.11


NIS
domain rock


SERVIDOR<br>
=== Ambiente de comandos ===
'''1 - Instalando Linux Ubuntu 8.04'''
Quando executado o comando '''sudo chroot /export/diskless/.''' estaremos simulando um cliente Diskless para algumas operações que só funcionam se o sistema existiver '''montado'''.  Qualquer comando que for executado depois desse, ('''sudo chroot /export/diskless/.''')  está sendo executado dentro da Diskless, no cliente Diskless, por isso sempre verifique em qual ambiente você está antes de executar qualquer comando. A documentação foi dividida em duas partes, servido e cliente para evitar erros.


'''1.2.1 - Particionando disco, /export (partição Diskless)'''<br>
linha de comando do servidor:
{desenho do cat do /etc/fstab do servidor com particoes ja criada}<br>
              bobmarley@bobmarley:/export$ sudo chroot /export/diskless
O servidor deve ter suas patições comuns e uma '''/export''', onde ficará todo a diskless.
              [sudo] password for bobmarley: <digite a senha>


Essa partição deve ter um tamanho razoável dependendo do tamanho total do seu disco.<br>
linha de comando da Diskless:
É sempre bom lembrar que a tendência do tamanho da imagem é sempre aumentar, pois temos os updates, softwares, /var e outros que ocuparam mais espaço no futuro, tudo depende da quantidade clientes na rede.<br>
Aqui já estamos simulando o sistema Diskless
Acredito que 20GB ou mais é um espaço bom para este exemplo que vamos montar. Crie as partições comuns e uma (/export) onde ficará a diskless.<br>
              root@bobmarley:/#
Feito o particionamento, faça a instalação padrão do sistema escolhendo um usuário e senha que terá permissão de root para os próximos passos.<br>
Após iniciar o sistema volte ao passo 1.1.5 e crie a estrutura de diretórios da Diskless.


* 1.1.5 – Estrutura de diretórios
Tudo que estiver dentro do quadro serrilhado e '''negrito''' é um comando:
''' COMANDO '''


Comando para criar a Estrutura de Diretórios do Diskless.<br>
dentro do quadro serrilhado é um texto informativo importante ou o conteudo de arquivo seguido do comando em negrito: 
'''cd /export'''<br>
CONTEUDOO DO ARQUIVO
'''sudo mkdir -p hardy state tftpboot/boot tftpboot/pxe'''<br>
 
 
=== Estrutura de diretórios ===
Até o final da documentação, você terá criado a estrutura de diretórios abaixo, '''NÂO É NECESSÁRIO CRIAR NADA AGORA'''


  / (raiz)
  / (raiz)
  /export/hardy (diskless image)
  /export/hardy (diskless image)
  /export/state (/var clientes)
  /export/state                   (Diretorio temporario /var dos clientes)
  /export/diskless -> hardy (link diskless)
  /export/diskless -> hardy (link diskless)
/export/diskless/state           (Diretorio temporario /var
  /export/tftpboot/boot (sistema de boot)
  /export/tftpboot/boot (sistema de boot)
  /export/tftpboot/boot/vmlinuz    -> ../../diskless/vmlinuz (link para arquivo do sistema)
  /export/tftpboot/boot/vmlinuz    -> ../../diskless/vmlinuz (link para arquivo do sistema)
Linha 107: Linha 140:
  /export/tftpboot/pxe         (Imagem boot-rom)
  /export/tftpboot/pxe         (Imagem boot-rom)


=== Placa rede Cliente ===
Essa é uma parte bastante importante na Diskless. Partimos do princípio que o cliente não tem sistema algum para iniciar. Para todo cliente deve existir uma placa de rede Ethernet 10/100 ou 10/100/1000 mbit, quanto mais rápida melhor. Temos que descobrir a marca e modelo da placa de rede do cliente para fazer a configuração personalizada no DHCP para cada cliente.
Nessa configuração utilizaremos a imagem GPXE para a placa de rede ethernet se comunicar com o servidor a partir do serviço DHCP. Abordaremos mais na configuração do DHCP. (http://etherboot.org/wiki/start#etherbootgpxe_wiki)
Leia, http://etherboot.org/wiki/romburning
=== Abordando problemas com /var ===
------------------------
No /var não é preciso criar diretório/arquivos, pois tem dois scripts que irão realizar isso.
/var é um diretório do sistema que inclui diversos arquivos do tipo, histórico do sistema, erros, estado atual de cada serviço e outros, gerando um log.
Como a Diskless é uma “imagem” de um sistema operacional, tudo mostra que todos os clientes teriam o mesmo /VAR, com isso, clientes diferentes precisam fazer tarefas diferentes no mesmo arquivo ao mesmo tempo.
Por isso o /var de cada cliente deverá ser montado separado. Não haverá alteração para o cliente, mas no servidor esses arquivos serão guardados em  '''/export/state/nome_cliente/var'''.
== Servidor: instalando o sistema ==
O servidor dos Terminais Inteligentes será o provedor de acesso de sistema de todos os demais computadores-clientes da rede. Sua configuração e instalação é mais demorada e deve ser feita com zelo e critério, pois este será a base dos demais serviços do qual desfrutarão os computadores-clientes.
=== Instalando GNU/Linux Ubuntu 8.04 ===
-----------------------------------------
Instale o sistema operacional GNU/Linux Ubuntu 8.04 Servidor ou Destkop na máquina que será o servidor de sua rede. Segue o modelo a seguir para um servidor que irá ter muitos usuários e arquivos comuns entre eles.
'''Qual a diferença?'''
  Ubuntu Server
  Tempo de atualização, quatro anos
  Opção de RAID para os discos
  Não instala parte gráfica por padrão
  Ubuntu Desktop
  Tempo de atualização, dois anos
  Sem Opção de RAID para os discos
  Instala parte gráfica por padrão
'''- Importante -'''
Durante a instalação, particione o disco com um ponto de montagem chamado '''/export'''. Este ponto de montagem será o local onde ficarão armazenados todos os arquivos do sistema Diskless.
Suponhamos um HD de 120GB como exemplo, ajuste de acordo com suas necessidades:
49GB      / (raiz, /boot /usr /var /tmp outros)
35GB     /home      (arquivos dos usuários)
35GB     /export    (arquivos do sistema diskless)
1GB     swap        (sistema de memória temporária)
É importante alertar que a tendência do tamanho dos arquivos e das imagens de cada cliente Diskless é sempre aumentar, pois temos os updates, softwares, /var e outros que ocuparam mais espaço no futuro, tudo depende da quantidade de clientes e usuários na rede.
Feito o particionamento, faça a instalação padrão do sistema escolhendo um usuário e senha que terá permissão de root para os próximos passos.


'''SERVIDOR'''<br>
Após iniciar o sistema volte a este ponto e prossiga com as orientações do tutorial.
'''* 1.1 Rede'''


Tudo começa pela placa de rede ethernet, pois é tudo que o cliente tem. A partir do boot pela placa de rede, a Diskless começa a funcionar. A placa de rede carrega o drive e as informações da rede local passada pelo serviço DHCP. Nessa hora já temos a placa de rede com um ip e o ftpt é o responsável pela transferência dos arquivos iniciais do sistema.
Para iniciar a contrução da Diskless, faz-se necessário a criação de alguns diretórios próprios. Crie os diretórios.
NFS é o serviço que faz com que o computador cliente tenha acesso aos arquivos do servidor, após montado, o sistema está mapeado para executar os próximos serviços e carregar os restante dos arquivos necessários da Diskless. NIS tem o papel de validação do usuário e senha do computador cliente.


* '''1.1.4 – Placa rede Cliente'''
Comando para criar a Estrutura de Diretórios do Diskless.
'''cd /export'''
'''sudo mkdir -p hardy state tftpboot/boot tftpboot/pxe'''


Essa é uma parte bastante importante na Diskless. Partimos do princípio que o cliente não tem sistema algum para iniciar. Para todo cliente deve existir uma placa de rede Ethernet 10/100 ou 10/100/100mbit, quanto mais rápida melhor. Temos que descobrir a marca e modelo da placa de rede do cliente para fazer a configuração personalizada no DHCP para cada cliente.
Remover tabela de montagem e fazer um link para outro arquivo
'''sudo rm /etc/mtab'''
'''sudo ln -s /proc/mounts /etc/mtab'''


Nessa configuração utilizaremos a imagem GPXE para a placa de rede ethernet se comunicar com o servidor a partir do serviço DHCP. Abordaremos mais na configuração do DHCP. (http://etherboot.org/wiki/start#etherbootgpxe_wiki)
Criar link de diretorio hardy para ambiente diskless. Hardy é o nome da versão do Ubuntu que vamos usar e para facilitar a identificação de versão e organização criamos o dirtorio com próprio nome.
'''cd /export'''
'''sudo ln -s hardy diskless'''
'''cd /export/diskless'''


Remover tabela de montagem e fazer um link para outro arquivo<br>
Criar o arquivo '''/export/tftpboot/boot/generic.script'''
'''sudo rm /etc/mtab'''<br>
'''sudo ln -s /proc/mounts /etc/mtab'''<br>


Criar link de diretorio hardy para ambiente diskless:<br>
'''sudo nano /export/tftpboot/boot/generic.script'''
'''cd /export'''<br>
'''sudo ln -s hardy diskless'''<br>
'''cd /export/diskless'''<br>
'''sudo mkdir state'''


conteudo:


Criar o arquivo '''sudo nano /export/tftpboot/boot/generic.script''' com o seguinte conteudo:
  #!gpxe  
  #!gpxe  
  kernel tftp://192.168.0.1//export/tftpboot/boot/vmlinuz vga=normal quiet splash  
  kernel tftp://192.168.0.1//export/tftpboot/boot/vmlinuz vga=normal quiet splash  
Linha 139: Linha 212:
  boot
  boot


* '''1.1.6 – Problemas com /var'''
=== Configurando arquivos de interface de rede ===
 
Partimos do princípio que todos os clientes terão acesso a internet, por isso o servidor deve ter duas placas de rede, uma onde chega a internet (rede WAN) e outra que atenderá os clientes da diskless (rede LAN).
 
Para esse exemplo usaremos a range de IP 192.168.0.0 para a rede LAN, pode ser alterado de acordo com a sua necessidade. O IP da rede WAN normalmente é fornecido pelo provedor quando não existe um IP fixo, utilizaremos um exemplo para  diferenciar uma rede da outra.


No /var não é preciso criar diretorio/arquivos, pois tem dois scripts irão realizar isso.<br>
Vamos PÁRAR ao serviço de rede:
/var é um diretório do sistema que inclui diversos arquivos do tipo, histórico do sistema, erros, estado atual de cada serviço e outros, gerando um log.<br>
Como a Diskless é uma “imagem” de um sistema operacional, tudo mostra que todos os clientes teriam o mesmo /VAR, com isso, clientes diferentes precisam fazer tarefas diferentes no mesmo arquivo ao mesmo tempo.<br>
Por isso o /var de cada cliente deverá ser montado separado. Não haverá aleração para o cliente, mas no servidor esses arquivos serão guardados em '''/export/state/nome_cliente/var'''.


'''sudo /etc/init.d/networking stop'''


* '''1.2.2 – Configurando rede'''
Edite o arquivo, '''/etc/network/interfaces'''


Partimos do princípio que todos os clientes terão acesso a internet, por isso o servidor deve ter duas placas de rede, uma onde chega a internet (rede WAN) e outra que atenderá os clientes da diskless (rede LAN).<br>
'''sudo nano /etc/network/interfaces'''
Para esse exemplo usaremos a range de IP 192.168.0.0 para a rede LAN, pode ser alterado de acordo com a sua necessidade. O IP da rede WAN normalmente é fornecido pelo provedor quando não existe um IP fixo, utilizaremos um exemplo para  diferenciar uma rede da outra.
 
conteudo do arquivo:


Encerre a interface de rede:<br>
'''sudo /etc/init.d/networking stop'''<br>
Edite o arquivo, '''sudo nano /etc/network/interfaces'''
  auto lo
  auto lo
  iface lo inet loopback
  iface lo inet loopback
<br>
  # REDE LAN
  # REDE LAN
  auto eth0
  auto eth0
Linha 168: Linha 240:
  network 192.168.0.0
  network 192.168.0.0
         # classe da rede geral
         # classe da rede geral
<br>
  # REDE WAN
  # REDE WAN
  auto eth1
  auto eth1
  iface eth1 inet dhcp
  iface eth1 inet dhcp
  # para ip dinamico. pode variar dependendo da sua conexao.
  # para ip dinamico. pode variar dependendo da sua conexão.
 
 
Ligar interface de rede:<br>
'''sudo /etc/init.d/networking start'''
 


SERVIDOR
Iniciaro serviço de rede:
'''sudo /etc/init.d/networking start'''


* '''1.2.3 – Compartilhando Internet'''
=== Compartilhando Internet ===


Lembramos que eth0 é placa de rede LAN, e interface de rede eth1 e para internet/WAN, o nat deve ser feito sempre para a interface de internet/WAN, faça as modificações necessárias se precisar.<br>
Lembramos que eth0 é placa de rede LAN, e interface de rede eth1 e para internet/WAN, o nat deve ser feito sempre para a interface de internet/WAN, faça as modificações necessárias se precisar.<br>
Edite o arquivo '''sudo nano /etc/rc.local''' e adicione as seguintes linhas:
Edite o arquivo '''sudo nano /etc/rc.local''' e adicione as seguintes linhas:
  # LIMPA REGRAS
  # LIMPA REGRAS
  iptables -F  
  iptables -F  
  iptables -X  
  iptables -X  
  iptables -Z  
  iptables -Z  
<br>
 
  # NAT  
  # NAT  
  iptables -F -t nat  
  iptables -F -t nat  
Linha 195: Linha 264:
  iptables -X -t nat
  iptables -X -t nat
  <br>
  <br>
  # CARREGA MODULOS
  # CARREGA MODULOS
  modprobe iptable_nat  
  modprobe iptable_nat  
Linha 200: Linha 270:
  modprobe ip_conntrack  
  modprobe ip_conntrack  
  modprobe ip_nat_ftp
  modprobe ip_nat_ftp
<br>
 
  iptables -t nat -A POSTROUTING -o ethX -j MASQUERADE
  iptables -t nat -A POSTROUTING -o ethX -j MASQUERADE
  #                              a ethX deve apontar sua interface Wan/Internet
  #                              a ethX deve apontar sua interface Wan/Internet
<br>
  exit 0
  exit 0


Rodar o script para o compartilhamento de internet ter efeito.<br>
Rodar o script para o compartilhamento de internet ter efeito.<br>
'''sudo /etc/rc.local'''
'''sudo /etc/rc.local'''


Edite o arquivo '''sudo nano /etc/sysctl.conf''' e descomente as linhas que por padrão vem comentada:
Edite o arquivo '''sudo nano /etc/sysctl.conf''' e descomente as linhas que por padrão vem comentada:
Linha 217: Linha 285:


Carregar configurações:<br>
Carregar configurações:<br>
'''sudo sysctl -p'''
'''sudo sysctl -p'''


Pode aparecer uma mensagem dizendo que IPv6 não esta "conhecido" "habilitado"...não se preocupar. Rede IPv6 não esta usando.
Pode aparecer uma mensagem dizendo que IPv6 não esta "conhecido" "habilitado"...não se preocupar. Rede IPv6 não esta usando.


=== Atualizando lista de programas ===
Agora que temos internet, temos que atualizar a lista de pacotes do Ubuntu para fazer instalar o servidores, segue os passos:<br>


*'''1.2.4 - Atualizando lista de programas'''
'''sudo apt-get update'''<br>


Agora que temos internet, temos que atualizar a lista de pacotes do Ubuntu para fazer instalar o servidores, segue os passos:<br>
'''sudo apt-get update'''<br>
aguarde até finalizar a atualização.
aguarde até finalizar a atualização.


SERVIDOR
=== ROM MATIC ===
 
Placa rede Cliente
*'''1.3 - Instalando serviços iniciais DHCP e TFTP'''


1.3.1 - Placa rede Cliente<br>
ROM-o-matic.net dynamically generates gPXE and Etherboot network booting images.<br>
ROM-o-matic.net dynamically generates gPXE and Etherboot network booting images.<br>
O endereço http://rom-o-matic.net é o site onde encontraremos o PXE para download e configurar o serviço DHCP, abra o endereço no navegador.
O endereço http://rom-o-matic.net é o site onde encontraremos o PXE para download e configurar o serviço DHCP, abra o endereço no navegador.


Passos:<br>
Passos:<br>
  No computador client, rode o live cd do ubuntu para encontrar as informações necessárias.<br> leia, http://etherboot.org/wiki/romburning <br>
'''#lspci -vnn | grep Ethernet'''  
'''#lspci -vnn | grep Ethernet'''  
  03:00.0 Ethernet controller [0200]: Broadcom Corporation BCM4401-B0 100Base-TX [14e4:170c] (rev 02)
  03:00.0 Ethernet controller [0200]: Broadcom Corporation BCM4401-B0 100Base-TX '''[14e4:170c]''' (rev 02) <br><br>
para exemplo, vamos usar o '''b44:14e4170c -- [14e4,170c], vendor and device IDs (14e4 e 170c respectivamente). ''' <br><br>
lembre-se que o código dever ser trocado o : por ,  ficando assim '''14e4,170c''' <br><br>
 
gPXE Releases; Current top of Development Tree; gPXE git (current-top-of-git-tree) Image Generator:


'''[14e4:170c]''' É o modelo do drive para pegar no: http://rom-o-matic.net/
Escolha a marca e versão da placa de rede <br>
1 - Choose NIC/ROM type:
<br><br>
Escolha o formato '''PXE'''
2 - Choose ROM output format:
<br><br>
Download
3 - “GET ROOM”
<br><br>
Salve na sua Area de trabalho (Desktop) e depois copie com permissão de root para dentro do diretório '''/export/tftpboot/pxe/'''. Para o exemplo, o nome desse arquivo será rom-matic'''.pxe'''<br><br>
Exemplo:
'''
'''cd <enter>'''


gPXE Releases; Current top of Development Tree; gPXE git (current-top-of-git-tree) Image Generator:
'''sudo cp Desktop/gpxe-git-b44.pxe  /export/tftpboot/pxe/'''


Escolha a marca e versão da placa de rede e depois botao “GET ROOM” para download. Salve em uma pasta qualquer e depois copie com permissão de root para dentro do diretório '''/export/tftpboot/pxe/'''. Para o exemplo, o nome desse arquivo será rom-matic'''.pxe'''<br>
Se o seu Ubuntu está em português o diretorio Desktop muda de nome:<br>
Exemplo: '''cp Desktop/gpxe.placa.rede.pxe /export/tftpboot/pxe/'''
sudo cp Área\ de\ Trabalho/gpxe-git-b44.pxe   /export/tftpboot/pxe/


'''1.3.2 – DHCP'''
=== Serviço DHCP ===


Antes de qualquer coisa precisamos instalar o pacote DHCP:<br>
Antes de qualquer coisa precisamos instalar o pacote DHCP:
'''sudo apt-get install dhcp3-server'''
'''sudo apt-get install dhcp3-server'''


Mova o arquivo original para deixar ele como esta.<br>
Mova o arquivo original para deixar ele como esta.<br>
'''sudo mv /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf.original '''
'''sudo mv /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf.original '''
 
Obtenha o número MAC - endereço físico - dos computadores clientes.
 
Dica: para obter o endereço físico do computador-cliente você poderá usar o comando '''ifconfig'''.
Proceda da seguinte maneira: no computador cliente, insira um live cd e faça-o rodar.
Abra um terminal de comandos ou use o sistema diretamente no modo texto. No terminal, digite '''ifconfig''' e veja a linha:
''eth0      Link encap:Ethernet  Endereço de HW '''00:00:ec:5d:c3:33''' ''
O número em negrito é o endereço físico da placa de rede do cliente.
 
Edite o arquivo '''sudo nano /etc/dhcp3/dhcpd.conf''' e adicione as linhas indicadas nos comentários.


Edite o arquivo '''sudo nano /etc/dhcp3/dhcpd.conf''' e adicione as linhas:
  authoritative;
  authoritative;
  use-host-decl-names on;
  use-host-decl-names on;
Linha 274: Linha 365:
   option domain-name-servers 192.168.0.1;
   option domain-name-servers 192.168.0.1;
   # Dominio
   # Dominio
   option domain-name "diskless.com.br";
   option domain-name "raggea.com.br";
  <br>   
  <br>   
   # nome da maquina, utilizaremos em outros arquivos
   # nome da maquina, utilizaremos em outros arquivos
   host cliente_diskless0 {  
   host jimicliff {  
         # endereço fisico da placa de rede do cliente
         # endereço fisico da placa de rede do cliente
         hardware ethernet 00:15:f2:c8:22:54;  
         hardware ethernet 00:15:f2:c8:22:54;  
        # raiz
        option root-path "192.168.0.1:/export/diskless";
         # IP que esse cliente irá receber
         # IP que esse cliente irá receber
       fixed-address 192.168.0.10;  
       fixed-address 192.168.0.10;  
         if not exists gpxe.bus-id {  
         if not exists gpxe.bus-id {  
   # Drive da placa de rede do cliente, passo 1.3.1
   # Drive da placa de rede do cliente, passo 1.3.1
       filename "/export/tftpboot/pxe/gpxe-git-forcedeth-10de0057.pxe";
       filename "/export/tftpboot/pxe/gpxe-git-b44.pxe";
       } else {  
       } else {  
  # Script de inicialização com parametros do tftpboot
  # Script de inicialização com parametros do tftpboot
Linha 290: Linha 383:
         }  
         }  
     }  
     }  
  host cliente_diskless1 {
        # endereço fisico da placa de rede do cliente
        hardware ethernet 00:15:f2:c8:23:54;
# IP que esse cliente irá receber
      fixed-address 192.168.0.11;
        if not exists gpxe.bus-id {
# Drive da placa de rede do cliente, passo 1.3.1
      filename "/export/tftpboot/pxe/gpxe-git-forcedeth-10de0057.pxe";
      } else {
  # Script de inicialização com parametros do tftpboot
        filename "/export/tftpboot/boot/generic.script";
        }
  }
  }
  }


Linha 308: Linha 388:
'''sudo /etc/init.d/dhcp3-server restart'''
'''sudo /etc/init.d/dhcp3-server restart'''


esse é um log do cerviço que está funcionando corretamente, <br>
'''comando tail -f /var/log/syslog'''
Sep  1 16:09:45 bobmarley dhcpd: Internet Systems Consortium DHCP Server V3.0.6<br>
Sep  1 16:09:45 bobmarley dhcpd: Copyright 2004-2007 Internet Systems Consortium.<br>
Sep  1 16:09:45 bobmarley dhcpd: All rights reserved.<br>
Sep  1 16:09:45 bobmarley dhcpd: For info, please visit http://www.isc.org/sw/dhcp/<br>
Sep  1 16:09:45 bobmarley dhcpd: WARNING: Host declarations are global.  They are not limited to the scope you declared them in.<br>
Sep  1 16:09:46 bobmarley dhcpd: WARNING: Host declarations are global.  They are not limited to the scope you declared them in.<br>
Sep  1 16:09:46 bobmarley dhcpd: Wrote 0 deleted host decls to leases file.<br>
Sep  1 16:09:46 bobmarley dhcpd: Wrote 0 new dynamic host decls to leases file.<br>
Sep  1 16:09:46 bobmarley dhcpd: Wrote 0 leases to leases file.<br>
Sep  1 16:09:46 bobmarley dhcpd: <br>
Sep  1 16:09:46 bobmarley dhcpd: No subnet declaration for eth0 (200.200.200.2) REDE WAN <br>
Sep  1 16:09:46 bobmarley dhcpd: ** Ignoring requests on eth0.  If this is not what<br>
Sep  1 16:09:46 bobmarley dhcpd:    you want, please write a subnet declaration<br>
Sep  1 16:09:46 bobmarley dhcpd:    in your dhcpd.conf file for the network segment<br>
Sep  1 16:09:46 bobmarley dhcpd:    to which interface eth0 is attached. **<br>
Sep  1 16:09:46 bobmarley dhcpd:


'''SERVIDOR'''
A linha '''No subnet declaration for eth0 (200.200.200.2) REDE WAN ** Ignoring requests on eth0''' <br>
diz que requisições vinda pela ETH0 serão ignoradas.
 
===Servidor: adicionando máquinas===


'''Somente adicione''' o nomes das maquinas cliente no arquivo:<br>
'''Somente adicione''' o nomes das maquinas cliente no arquivo:<br>
'''sudo nano /etc/hosts'''<br>
'''sudo nano /etc/hosts'''<br>
  127.0.0.1     localhost
 
  127.0.1.1     diskless-desktop # aqui fica o nome da maquina que informou na instalação...não retirar.
  127.0.0.1       localhost
  192.168.0.1   servidor
  127.0.1.1       bobmarley
  192.168.0.10 cliente_diskless0
  192.168.0.1     bobmarley
192.168.0.11 cliente_diskless1
  192.168.0.10 jimicliff
# listar todas seus clientes aqui
 
# nao remover nada a mais...apenas adicionar.
listar todas seus terminais aqui.
Não remover nada, apenas adicionar, a ordem não tem efeito no resultado.


Vamos dar permissão para que todas as máquinas da rede local tenham acesso ao portmap, adicione a seguinte linha no arquivo:<br>
Vamos dar permissão para que todas as máquinas da rede local tenham acesso ao portmap, adicione a seguinte linha no arquivo:<br>
'''sudo nano /etc/hosts.allow'''<br>
'''sudo nano /etc/hosts.allow'''
conteudo
  ALL : 192.168.0.0
  ALL : 192.168.0.0


 
===Servidor: TFPT-HPA===
'''SERVIDOR'''<br>
--------------
* '''1.3.3 – TFPT-HPA'''
Antes de qualquer coisa, instale o pacote necessário:<br>
Antes de qualquer coisa, instale o pacote necessário:<br>
'''sudo apt-get install tftpd-hpa'''
'''sudo apt-get install tftpd-hpa'''
Linha 339: Linha 442:
  tftp        dgram  udp wait    root    /usr/sbin/in.tftpd -s /export/tftpboot/ -r blksize -vvvvvv
  tftp        dgram  udp wait    root    /usr/sbin/in.tftpd -s /export/tftpboot/ -r blksize -vvvvvv


=== Debootstrap ===
Debootstrap é uma ferramenta que cria a estrutura do sistema operacional, nesse momento os arquivos da Diskless serão instalado em /export/hardy.


*'''1.4  Debootstrap'''
Instale o pacote:<br>
'''sudo apt-get install debootstrap'''


Debootstrap é uma ferramenta que cria a estrutura do sistema operacional, fazermos junto a configuração do boot.
E em seguinda execute o debootstrap:<br>


Instale o pacote:<br>
'''sudo debootstrap hardy /export/hardy'''<br>
'''sudo apt-get install debootstrap'''


E em seguinda execute o debootstrap:<br>
'''sudo debootstrap hardy /export/hardy'''<br>
e espere, isso pode levar horas dependendo a máquina.
e espere, isso pode levar horas dependendo a máquina.


Linha 356: Linha 459:


Se terminar a instalação com frase acima...foi tudo certo.
Se terminar a instalação com frase acima...foi tudo certo.
Terminado o download e instalado os pacotes, vamos reiniciar o sistema/maquina e fazer com que a diskless seja nosso sistema nativo para finalizar a instalação da imagem.


Execute:<br>
=== Serviço NFS ===
'''sudo chroot /export/diskless'''<br>
Criar links de boot<br>
'''mount none /proc -t proc'''
 
a partir de agora estamos dentro da imagem da Diskless.
 
* Instalando a imagem:<br>
'''apt-get install linux-image nano nis'''
 
* Precisamos alterar o arquivo:<br>
'''nano /etc/initramfs-tools/initramfs.conf'''<br>
para poder bootar via NFS, alterar de BOOT=local para '''BOOT=nfs'''
 
 
* Recriando o initrd.img:<br>
'''update-initramfs -u'''


vamos para o diretŕio do sistema
'''cd /export/tftpboot/boot'''


'''1.5  NIS no Cliente'''
criando links simbólicos do sistema para o boot:
'''sudo ln -s ../../diskless/vmlinuz vmlinuz'''<br>


Aumentar o tempo para a execução do NIS, pois o NIS necessita de outros serviços para iniciar.<br>
criando links simbólicos do sistema para o boot:
'''sudo chroot /export/diskless'''<br>
'''sudo ln -s ../../diskless/initrd.img  initrd.img'''
'''update-rc.d -f nis remove'''<br>
'''ln -s /etc/init.d/nis /etc/rcS.d/S70nis'''


etwork File System, é com essa serviço que vamos acessar e tornar os arquivos remotos como se fossem locais, de modo transparente.


'''SAIA DO CHROOT ANTES DE EXCUTAR OS PRÓXIMOS COMANDOS, DIGITE exit'''
Instalando pacotes NFS:
 
'''sudo apt-get install nfs-common nfs-kernel-server'''
Criar links de boot<br>
'''cd /export/tftpboot/boot'''<br>
'''sudo ln -s ../../diskless/vmlinuz vmlinuz'''<br>
'''sudo ln -s ../../diskless/initrd.img  initrd.img'''
 
'''SERVIDOR'''<br>
*'''1.6 NFS'''


Network File System, é com essa serviço que vamos acessar e tornar os arquivos remotos com se fossem locais.
Editar o arquivo '''/etc/exports''' para permitir a montagem do cliente
'''sudo nano /etc/exports'''


Instalando pacotes:<br>
conteudo
'''sudo apt-get install nfs-common nfs-kernel-server'''


Editar o arquivo '''sudo nano /etc/exports''' para permitir a montagem do cliente
  /home      192.168.0.0/255.255.255.0(no_root_squash,rw,no_subtree_check,async)  
  /home      192.168.0.0/255.255.255.0(no_root_squash,rw,no_subtree_check,async)  
  /export    192.168.0.0/255.255.255.0(no_root_squash,rw,no_subtree_check,sync,insecure_locks)
  /export    192.168.0.0/255.255.255.0(no_root_squash,rw,no_subtree_check,sync,insecure_locks)


Reiniciar<br>
Reiniciar o serviço NFS
'''sudo /etc/init.d/nfs-common restart'''<br>
'''sudo /etc/init.d/nfs-common restart'''<br>
'''sudo /etc/init.d/nfs-kernel-server restart'''
'''sudo /etc/init.d/nfs-kernel-server restart'''


=== Serviço NIS ===


'''SERVIDOR'''<br>
NIS (Network Information Service), responsável pela validação do usuário e senha criados no Servidor.
*'''1.6 NIS'''


NIS (Network Information Service), responsável pela validação do usuário e senha criados no Servidor.
Instalando pacotes:
'''sudo apt-get install portmap nis'''<br>


Instalando pacotes:<br>
Durante instalação, será solicitado um nome para o NIS, para exemplo vamos usar: '''rock'''
'''sudo apt-get install portmap nis'''<br>
Durante instalação, será solicitado um nome para o NIS, para exemplo vamos usar: '''servidor'''<br>
Poderá ocorrer um erro (verá um [Fail]), mas não se preocupe.
Poderá ocorrer um erro (verá um [Fail]), mas não se preocupe.


Adicione o nome do servidor NIS da instalação no:<br>
Edite o arquivo '''sudo nano /etc/default/nis''' e altere o parâmentro NISSERVER:
'''sudo nano /etc/hosts'''
127.0.0.1    localhost
192.168.0.1 servidor            # referente ao NIS
192.168.0.10 cliente_diskless0
192.168.0.11 cliente_diskless1
# abaixo deixar sem retirar..somente adicionar
 
 
Edite o arquivo '''sudo nano /etc/default/nis''' e altere o parâmentro NISSERVER que esta no inicio, para:
  # Are we a NIS server and if so what kind (values: false, slave, master)?
  # Are we a NIS server and if so what kind (values: false, slave, master)?
  NISSERVER=master
  de NISSERVER=false
para NISSERVER=master


Edite o arquivo '''sudo nano /etc/yp.conf''' e adicione a seguinte linha:  
Edite o arquivo '''sudo nano /etc/yp.conf''' e adicione a seguinte linha:  
Linha 448: Linha 520:


Agora que temos tudo configurado, vamos iniciar servidor NIS:<br>
Agora que temos tudo configurado, vamos iniciar servidor NIS:<br>
'''sudo /etc/init.d/nis restart'''
'''sudo /etc/init.d/nis restart'''


E também temos que gerar o base de dados no NIS pela primeira vez, execute:<br>
E também temos que gerar o base de dados no NIS pela primeira vez, execute:<br>
'''sudo /usr/lib/yp/ypinit -m'''
'''sudo /usr/lib/yp/ypinit -m'''


Digite o nome do servidor que escolhemos na instalação do NIS: '''servidor''' e tecle '''CTRL+D''' para sai.<br>
Vai aparecer o nome do '''SERVIDOR bobmarley''' nas seguintes linhas,  verifique se o nome do servidor está correto e tecle '''CTRL+D'', veja se o resultado é o mesmo que segue abaixo seguido de '''UPDATING....'''
Em seguida deve aparecer varias linhas contendo a palavra Updating... , fora isso ouve algum erro.


Vai acontece algo proximo a isso:
bobmarley@bobmarley:/export/tftpboot/boot$ sudo /usr/lib/yp/ypinit -m
  At this point, we have to construct a list of the hosts which will run NIS
  At this point, we have to construct a list of the hosts which will run NIS
  servers.  diskless-laptop is in the list of NIS server hosts.  Please continue to add
  servers.  bobmarley is in the list of NIS server hosts.  Please continue to add
  the names for the other hosts, one per line.  When you are done with the
  the names for the other hosts, one per line.  When you are done with the
  list, type a <control D>.
  list, type a <control D>.
        next host to add:  diskless-desktop
        next host to add:  bobmarley
        next host to add:   
        next host to add:   
  The current list of NIS servers looks like this:
  The current list of NIS servers looks like this:
  <br>
  bobmarley
diskless-desktop
  Is this correct?  [y/n: y]  y
<br>
  Is this correct?  [y/n: y]  y
  We need a few minutes to build the databases...
  We need a few minutes to build the databases...
  Building /var/yp/nserver/ypservers...
  Building /var/yp/rock/ypservers...
  Running /var/yp/Makefile...
  Running /var/yp/Makefile...
  make[1]: Entering directory `/var/yp/nserver'
  make[1]: Entrando no diretório `/var/yp/rock'
  Updating passwd.byname...
  Updating passwd.byname...
  Updating passwd.byuid...
  Updating passwd.byuid...
  .....................varios Updating
  Updating group.byname...
Updating group.bygid...
Updating hosts.byname...
Updating hosts.byaddr...
Updating rpc.byname...
Updating rpc.bynumber...
Updating services.byname...
Updating services.byservicename...
Updating netid.byname...
Updating protocols.bynumber...
Updating protocols.byname...
Updating netgroup...
Updating netgroup.byhost...
  Updating netgroup.byuser...
  Updating netgroup.byuser...
  Updating shadow.byname...
  Updating shadow.byname...
  make[1]: Leaving directory `/var/yp/nserver'
  make[1]: Saindo do diretório `/var/yp/rock'
<br>
 
  diskless-desktop has been set up as a NIS master server.
  bobmarley has been set up as a NIS master server.
<br>
Now you can run ypinit -s diskless-desktop on all slave server.


Now you can run ypinit -s bobmarley on all slave server.


Para testar o NIS digitamos: '''ypcat passwd''', se tudo estiver ok!, aparecerá uma linha nesse formato:
Para testar o NIS digitamos: '''ypcat passwd''', se tudo estiver ok!, aparecerá uma linha nesse formato:
  usuario:x:1000::1000:usuario,,,:/home/usuario:/bin/bash
  usuario:x:1000::1000:usuario,,,:/home/usuario:/bin/bash
=== Log ===
Segue baixo o log do DHCP do SERVIDOR das REQUISIÇÕES do CLIENTE DISKLESS. Esse sistema  não está funcionando por completo, porque ainda temos que configura-ló. '''Na boot, o YPBIND vai ficar procurando um servidor que não existe, isso é normal, espere até que o sistema continue com o boot.'''
sudo tail -n 100 /var/log/syslog
Sep 21 15:02:52 bobmarley kernel: [  225.436112] eth1: link down
Sep 21 15:02:56 bobmarley kernel: [  229.204523] eth1: link up, 100Mbps, full-duplex, lpa 0xC1E1
Sep 21 15:03:13 bobmarley kernel: [  246.298295] eth1: link down
Sep 21 15:03:15 bobmarley kernel: [  247.941352] eth1: link up, 100Mbps, full-duplex, lpa 0xC1E1
Sep 21 15:03:17 bobmarley dhcpd: DHCPDISCOVER from '''00:15:f2:c8:22:2f via eth1'''
Sep 21 15:03:17 bobmarley dhcpd: DHCPOFFER on '''192.168.0.10''' to 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:21 bobmarley dhcpd: DHCPREQUEST for '''192.168.0.10''' (192.168.0.1) from '''00:15:f2:c8:22:2f''' via eth1
Sep 21 15:03:21 bobmarley dhcpd: DHCPACK on 192.168.0.10 to 00:15:f2:c8:22:2f via eth1
'''Sep 21 15:03:21 bobmarley -s[6491]: RRQ from 192.168.0.10 filename /export/tftpboot/pxe/gpxe-git-forcedeth.pxe'''
Sep 21 15:03:21 bobmarley -s[6491]: tftp: client does not accept options
'''Sep 21 15:03:21 bobmarley -s[6493]: RRQ from 192.168.0.10 filename /export/tftpboot/pxe/gpxe-git-forcedeth.pxe'''
Sep 21 15:03:21 bobmarley kernel: [  254.048871] eth1: link down
Sep 21 15:03:23 bobmarley kernel: [  256.158345] eth1: link up, 100Mbps, full-duplex, lpa 0xC5E1
Sep 21 15:03:25 bobmarley dhcpd: DHCPDISCOVER from 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:25 bobmarley dhcpd: DHCPOFFER on 192.168.0.10 to 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:26 bobmarley dhcpd: DHCPDISCOVER from 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:26 bobmarley dhcpd: DHCPOFFER on 192.168.0.10 to 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:28 bobmarley dhcpd: DHCPREQUEST for 192.168.0.10 (192.168.0.1) from 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:28 bobmarley dhcpd: DHCPACK on 192.168.0.10 to 00:15:f2:c8:22:2f via eth1
'''Sep 21 15:03:29 bobmarley -s[6495]: RRQ from 192.168.0.10 filename /export/tftpboot/boot/generic.script'''
'''Sep 21 15:03:30 bobmarley -s[6498]: RRQ from 192.168.0.10 filename /export/tftpboot/boot/vmlinuz'''
'''Sep 21 15:03:30 bobmarley -s[6501]: RRQ from 192.168.0.10 filename /export/tftpboot/boot/initrd.img'''
Sep 21 15:03:35 bobmarley kernel: [  268.189017] eth1: link down
Sep 21 15:03:37 bobmarley kernel: [  270.289487] eth1: link up, 100Mbps, full-duplex, lpa 0xC5E1
Sep 21 15:03:39 bobmarley dhcpd: DHCPDISCOVER from 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:39 bobmarley dhcpd: DHCPOFFER on 192.168.0.10 to 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:39 bobmarley dhcpd: DHCPREQUEST for 192.168.0.10 (192.168.0.1) from 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:39 bobmarley dhcpd: DHCPACK on 192.168.0.10 to 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:40 bobmarley dhcpd: DHCPREQUEST for 192.168.0.10 (192.168.0.1) from 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:40 bobmarley dhcpd: DHCPACK on 192.168.0.10 to 00:15:f2:c8:22:2f via eth1
'''Sep 21 15:03:40 bobmarley mountd[5554]: authenticated mount request from 192.168.0.10:1016 for /export/hardy (/export)'''


Aqui finalizamos as configurações do servidor.
Aqui finalizamos as configurações do servidor.


'''NAO SEGUIR PARA O PRÓXIMO PASSO SE O COMPUTADOR CLIENTE NÃO ESTIVER BOOTANDO MESMO COM OS ERROS APARECENDO NO BOOT!'''
== Cliente: Configurando o sistema ==
Todas as configurações intituladas '''Cliente''' deve ser feitas no ambiente '''chroot'''. Todos os arquivos dentro de '''/export/diskless''' são do sistema Diskless, qualquer arquivo modificado dentro desse diretório tem efeito direto sobre o sistema Diskless.
''' ERRO '''
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = "pt_BR:pt:en",
        LC_ALL = (unset),
        LANG = "pt_BR.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
'''Esse erro vai aparecer na hora de instalar de alguns pacotes, não se preocupe ele será resolvido nos próximos passos.'''
=== Inicial ===
Aqui simulamos o ambiente cliente Diskless:
'''sudo chroot /export/diskless'''<br>
A partir de agora estaremos configurando o sistema Diskless que será usado pelos clientes.<br>
Vamos instalar e configurar cada serviço para não perder o foco.
Montamos o sistema /proc:
'''mount none /proc -t proc'''
atualizando a lista de pacotes:
'''apt-get update'''
pacotes de linguagen:
'''apt-get install language-pack-br language-pack-br-base'''
A seguir vamos apagar o NOME do COMPUTADOR CLIENTE. como se trata de diversas máquinas com nomes diferentes, o nome ao cliente será fornecido pelo serviço de DHCP do servidor.
Apagar o arquivo:
'''rm /etc/hostname'''
vamos criar um arquivo em branco:
'''touch /etc/hostname'''
Criar diretorio, por padrão isso não vem criado. <br>
'''mkdir /var/run/network'''
Somente adicione''' o nomes das maquinas cliente no arquivo:<br>
'''sudo nano /etc/hosts'''<br>
127.0.0.1      localhost
192.168.0.1    bobmarley
192.168.0.10 jimicliff
'''Configurando rede de cliente/Ambiente Diskless'''
Vamos editar o arquivo '''/etc/network/interfaces''' e adicionar as linhas abaixo, por padrão esse arquivo está vazio.
''' NAO ADICIONAR AUTO ETH0, QUEBRA O SISTEMA NA INICIALIZAÇÃO '''
nano /etc/network/interfaces
auto lo
  iface lo inet loopback
  iface eth0 inet dhcp
salva e sai do editor.
Portmap é um serviço que "lista" alguns serviços do sistema, não todos, o serviço tem que ter suporte ao Portmap.
Edite o arquivo '''/etc/hosts.allow''' para restrição de conexão, apenas o servidor pode conectar, adiciona a linha:
'''nano /etc/hosts.allow'''
adicione o parâmetro na última linha
'''portmap : 192.168.0.1'''
===NIS===
NIS é o serviço responsavél pela autenticação do usuário e senha. Mais informações [http://www.linux-nis.org/]
Vamos instalar o NIS<br />
'''apt-get install nis'''
Vamos Aumentar o tempo para a execução do NIS, pois o NIS necessita que outros serviços estajam funcionando para iniciar.<br>
'''update-rc.d -f nis remove'''<br>
'''ln -s /etc/init.d/nis /etc/rcS.d/S70nis'''
Aqui vamos configurar o NIS para ele se comunicar com o servidor, onde vai validar o usuário e senha. Edite o arquivo '''/etc/yp.conf''' e configure a linha do servidor:
'''nano /etc/yp.conf'''
adicionar o parâmetro na ultima linha:
ypserver 192.168.0.1
salva e sai do editor.


A diferença entre os três próximos arquivos é a quantidade de dois pontos (:) de uma para o outro, deve ser colocado no final de cada arquivo. Acontece o seguinte, o NIS verifica o arquivo de autenticação local, não encontrando aquele usuário na maquina local, ele vai verificar no servidor se existe ou não.


Abra os arquivos a seguir e adicione as linhas necessárias:
'''nano /etc/passwd''' e adicione na última linha:
+::::::  #(seis :)


'''Cliente/Diskless'''<br>
salva e sai.
'''2.1 Scripts de inicialização, /var'''
 
'''nano /etc/group''' e adicione na última linha:
+:::  #(três :)
salva e sai.
 
'''nano /etc/shadow''' e adicione na última linha:
+::::::::  #(oito :)
salva e sai.
 
 
UM EXEMPLO DO /etc/passwd
 
stunnel4:x:123:126::/var/run/stunnel4:/bin/false
festival:x:124:29::/home/festival:/bin/false
'''+::::::  < ULTIMA LINHA >'''
 
=== Linux Image (Kernel) ===
 
Vamos instalar o Kernel (linux-image):
'''apt-get install linux-image'''
 
Como o sistema funciona com base em um rede e não local (discos, HD), precisamos alterar o parametro '''BOOT''' do arquivo '''/etc/initramfs-tools/initramfs.conf''' e gerar o novo '''initrd.img''' em seguida. Com isso faremos com que o sistema de boot do cliente (sistema Diskless) carregue modulos de rede para ter acesso ao servidor e seus serviços.
 
* Precisamos alterar o arquivo: '''nano /etc/initramfs-tools/initramfs.conf''' para poder bootar via NFS, altere:
de
'''BOOT=local'''
para
'''BOOT=nfs'''  
 
salva e saia do editor.
 
Agora que temos o arquivo alterado, vamos atualizar o sistema de boot:
 
* Recriando o initrd.img:<br>
'''update-initramfs -u'''
 
esse mensagem deverá aparecer:
 
root@bobmarley:/# update-initramfs -u
update-initramfs: Generating /boot/initrd.img-2.6.24-16-generic
 
=== NFS ===
NFS é serviço para disponibilizar um determinado diretorio do servidor em modo transparente, como se os arquivos estivessem localmente, evitando problemas. É extramente necessário o funcionamento desse serviço, já que os arquivos do sistema é todo remoto em todo o tempo para o client, boot, trabalho e na hora de desligar.
 
Vamos instalar o serviço:
 
'''apt-get install nfs-common'''
 
'''Configurando sistema de arquivos'''
 
Inserir estas linhas no arquivo '''/etc/fstab'''
 
'''nano /etc/fstab'''
 
/dev/root      /              nfs    defaults,rw,nolock,tcp  0 0
none            /tmp            tmpfs  defaults                0 0
none            /media          tmpfs  defaults                0 0
none            /var/tmp        tmpfs  noexec                  0 0
none            /var/yp/binding tmpfs  defaults,mode=755 0 0
192.168.0.1:/home  /home      nfs  defaults,nfsvers=3,tcp,async,noatime,rw,rsize=32768,wsize=32768 0 0
 
 
===Scripts de inicialização, /VAR ===


Esses scripts foram desenvolvidos para resolver o problema do /var.<br>
Esses scripts foram desenvolvidos para resolver o problema do /var.<br>
Linha 499: Linha 778:
Isso é importante para os computadores que já estão funcionando como aqueles que serão inseridos no futuro.
Isso é importante para os computadores que já estão funcionando como aqueles que serão inseridos no futuro.


'''Edite os dois arquivos e arrume o parametro SERVER de acordo com o IP do seu servidor.'''
'''Edite os dois arquivos e arrume o parametro SERVER de acordo com o IP do seu servidor, se estiver usando as configurações e parâmetros do tutorial não é necessário alterar nada.'''
 
  DESC="NFS diskless common setup"
  DESC="NFS diskless common setup"
  SERVER="192.168.0.1"    # possivel alterar para sua rede
  SERVER="192.168.0.1"    # possivel alterar para sua rede


Para executar o próximo passo, temos que ter o sistema da Diskless montado, pois ele irá criar os links:
Criar arquivo '''mountnfs-diskless.sh'''.  Inicialmente estará em branco pois o arquivo está sendo criado.
'''nano /etc/init.d/mountnfs-diskless.sh'''


Remover '''/etc/hostname''' do Cliente/Diskless<br>
'''rm /etc/hostname'''<br>
'''touch /etc/hostname'''
Criar arquivo dentro do Cliente<br>
'''mkdir /var/run/network'''
Criar arquivo '''mountnfs-diskless.sh'''<br>
'''nano /etc/init.d/mountnfs-diskless.sh'''
  ### BEGIN INIT INFO
  ### BEGIN INIT INFO
  # Provides:          mountnfs-diskless
  # Provides:          mountnfs-diskless
Linha 588: Linha 859:
  : exit 0
  : exit 0


Criar arquivo: '''nfs-common-diskless'''. Inicialmente estará em branco pois o arquivo está sendo criado.
'''nano /etc/init.d/nfs-common-diskless'''


Criar arquivo: '''nfs-common-diskless'''<br>
'''nano /etc/init.d/nfs-common-diskless'''
  ### BEGIN INIT INFO
  ### BEGIN INIT INFO
  # Provides:          nfs-common-diskless
  # Provides:          nfs-common-diskless
Linha 621: Linha 893:
  log_end_msg $?
  log_end_msg $?


Dar permissao de execucao:<br>
Vamos dar permissão de execução para os dois arquivos criados:<br>
'''chmod +x /etc/init.d/mountnfs-diskless.sh'''<br>
'''chmod +x /etc/init.d/mountnfs-diskless.sh'''
'''chmod +x /etc/init.d/nfs-common-diskless'''
depois
'''chmod +x /etc/init.d/nfs-common-diskless'''


Fazer links simbolicos<br>
Fazer links simbólicos para a inicialização do sistema:
'''ln -s /etc/init.d/mountnfs-diskless.sh  /etc/rcS.d/S45mountnfs-diskless'''<br>
'''ln -s /etc/init.d/nfs-common-diskless  /etc/rcS.d/S43nfs-common-diskless'''


'''ln -s /etc/init.d/mountnfs-diskless.sh  /etc/rcS.d/S45mountnfs-diskless'''
depois
'''ln -s /etc/init.d/nfs-common-diskless  /etc/rcS.d/S43nfs-common-diskless'''


'''2.1 – Cliente'''
== '''Ambiente gráfico ''' ==


A partir de agora estaremos configurando a imagem/ambiente Diskless que será passada aos clientes.<br>
Para finalizar vamos instalar o ambiente gráfico.
Antes de começarmos, vamos instalar o alguns pacotes necessários com o comando:<br>
'''apt-get update'''<br>
'''mount none /proc -t proc'''<br>
'''apt-get install language-pack-br language-pack-br-base'''<br>
'''apt-get install nfs-common portmap'''


X-Window é o servidor gráfico do Linux, sem ele os gerenciadores de janela, Gnome, KDE, XFCE e outros não tem funcionalidade, por isso vamos instalar o servidor mais o gerenciador de janelas padrão do Ubuntu, o Gnome.


*'''2.2 Configurando partições'''<br>
Isso pode levar um bom tempo dependendo da velocidade da conexão da internet que você tem, por isso vá tomar uma água, ler e-mails, jogar WII e outros... ;)
Inserir estas linhas no arquivo '''nano /etc/fstab'''
/dev/root      /              nfs    defaults,rw,nolock,tcp  0 0
none            /tmp            tmpfs  defaults                0 0
none            /media          tmpfs  defaults                0 0
none            /var/tmp        tmpfs  noexec                  0 0
none            /var/yp/binding tmpfs  defaults,mode=755 0 0
192.168.0.1:/home  /home      nfs  defaults,nfsvers=3,tcp,async,noatime,rw,rsize=32768,wsize=32768 0 0


Altere o valor do ip dentro do /etc/fstab, referente a sua rede:
Demora porque será feito o download dos arquivos necessários, +-500MB. Essa instalação irá resolver o problema de "PERL LOCALES" que falamos acima.  
192.168.0.1:/home
 
*'''2.3 Configurando rede de cliente/Ambiente Diskless'''<br>
Vamos editar o arquivo '''nano /etc/network/interfaces''' e adicionar as linhas abaixo, por padrão esse arquivo está vazio.
auto lo
iface lo inet loopback
<br>
iface eth0 inet dhcp


'''apt-get install ubuntu-desktop'''


'''!! NAO ADICIONAR AUTO ETH0 , QUEBRA O SISTEMA NA INICIALIZAÇÃO''''
Chegamos ao final da configuração do cliente. Teoricamente o sistema Diskless já está funcionando. O não funcionamento dos serviços, devem ser verificados os '''LOGS''' do sistema no servidor, '''/var/log/syslog''' ou  '''/var/log/messages'''. Os serviços foram montados com nivél de prioridade, pois um depende do outro para funcionar.


== Acesso de admin ==
Como o próprio nome diz, admistrador. Um usuário com acesso ao admin, no grupo admin, tem acesso a comandos restritos como instalar programas, atualizações do sistema, adicionar novos usuários e etc. Tudo isso com o comando '''sudo <comando>'''


Edite o arquivo '''nano /etc/hosts.allow''' , para restrição de conexão, apenas o servidor pode conectar, adiciona a linha:
Para acesso admin dentro do sistema Diskless, adicione o grupo ADMIN:
portmap : 192.168.0.1
'''groupadd admin'''


*'''2.4 NIS'''
Editar o arquivo '''/etc/sudoers'''.  
Edite o arquivo '''nano /etc/yp.conf''' e configure a linha do servidor.
ypserver 192.168.0.1


para acessar o servidor NIS.
Altere a linha ou adicione


A diferença entre os três próximos arquivos é a quantidade de dois pontos (:) de uma para o outro, deve ser colocado no final de cada arquivo:
'''nano /etc/sudoers'''
de
  #%sudo ALL=NOPASSWD: ALL


Abra os arquivo:<br>
Para:
'''nano /etc/passwd''' e adicione
+::::::  #(seis :)
 
'''nano /etc/group''' e adicione
+:::  #(três :)
 
'''nano /etc/shadow''' e adicione
+::::::::  #(oito :)
 
 
Para acesso admin dentro do cliente/Ambiente Diskless:<br>
'''groupadd admin'''
 
Editar '''nano /etc/sudoers'''<br>
Altere a linha ou adicione<br>
#%sudo ALL=NOPASSWD: ALL
 
Para:<br>
  %admin  ALL=(ALL) ALL
  %admin  ALL=(ALL) ALL


*'''2.5 Instalando X Window e Desktop'''<br>
Colocando um usuário no grupo admin:
'''apt-get install ubuntu-desktop'''
'''sudo usermod -g admin'''
 
Este passo pode demorar, pois sera feito download de arquivos do sistema.


veja mais opções em chmod --help.  Diferença entre -g e -G


== Adicionando nova máquina no sistema Diskless ==
Adicionando mais terminais/maquinas na sua rede.
*'''2.6 Instalando nova máquina'''


Editar o arquivo '''sudo nano /etc/dhcp3/dhcpd.conf''', e colocar os parametros necessários para o novo cliente.<br>
Editar o arquivo '''sudo nano /etc/dhcp3/dhcpd.conf''', e colocar os parametros necessários para o novo cliente.
Não esquecendo que precisamos saber a marca e modelo da placa de rede, vai para o passo 1.3.1 caso não lembre.
Não esquecendo que precisamos saber a marca e modelo da placa de rede, vai para o passo 1.3.1 caso não lembre.
   host cliente_disklessX {   
    
host natirutis {   
   # endereço fisico da placa de rede do cliente
   # endereço fisico da placa de rede do cliente
           hardware ethernet XX:XX:XX:XX:XX;  
           hardware ethernet XX:XX:XX:XX:XX;  
   # IP que esse cliente irá receber
   # IP que esse cliente irá receber
           fixed-address 192.168.0.X;  
           fixed-address 192.168.0.11;  
           if not exists gpxe.bus-id {  
           if not exists gpxe.bus-id {  
   # Drive da placa de rede do cliente, passo 1.3.1
   # Drive da placa de rede do cliente, passo 1.3.1
Linha 721: Linha 958:
           }  
           }  
       }
       }
'''/etc/init.d/dhcp3-server restart'''


Abre o arquivo '''sudo nano /etc/hosts''' e insere o nome e IP do novo cliente,
uma parte desse arquivo desse ficar assim:
  192.168.0.X cliente_disklessX
 
# nome da maquina, utilizaremos em outros arquivos
  host jimicliff {
        # endereço fisico da placa de rede do cliente
        hardware ethernet 00:15:f2:c8:22:54;
        # IP que esse cliente irá receber
      fixed-address 192.168.0.10;
        if not exists gpxe.bus-id {
  # Drive da placa de rede do cliente, passo 1.3.1
      filename "/export/tftpboot/pxe/gpxe-git-b44.pxe";
      } else {
# Script de inicialização com parametros do tftpboot
      filename "/export/tftpboot/boot/generic.script";
        }
    }
 
  host natirutis {
        # endereço fisico da placa de rede do cliente
        hardware ethernet 00:15:f2:c8:23:54;
# IP que esse cliente irá receber
      fixed-address 192.168.0.11;
        if not exists gpxe.bus-id {
# Drive da placa de rede do cliente, passo 1.3.1
      filename "/export/tftpboot/pxe/gpxe-git-forcedeth-10de0057.pxe";
      } else {
  # Script de inicialização com parametros do tftpboot
        filename "/export/tftpboot/boot/generic.script";
        }
 
 
reinciar o serviço DHCPD para que as alterações tenham efeito:
'''/etc/init.d/dhcp3-server restart'''
 
Edite o arquivo '''/etc/hosts''' e declare o nome e IP do novo terminal na ultima linha:
127.0.0.1      localhost
192.168.0.1    bobmarley
192.168.0.10 jimicliff
'''192.168.0.11 natirutis'''
 
salva e sai do arquivo.
 
Com todas essas inserções no sistema, o novo terminal pode ser ligado. A principio os sistema /var será criado no boot, por isso reinicie o terminal.
Usando qualquer usuário cadastrado no sistema tem acesso ao novo terminal, nenhuma mudança é necessária.
 
=== X11 e xorg.conf ===
 
Caso o boot reclamar que nao consegue iniciar o modo grafico, entao
edite no servidor o arquivo de configuracao do modo grafico dos clientes. No
caso especifico do setup da Teia, edite:
 
/export/intrepid/etc/X11/xorg.conf
 
e coloque secoes Screen e ServerLayout apropriadas. Uma dica e' copiar a
configuracao detectada no /etc/X11/xorg.conf do livecd do ubuntu no cliente.
Na maioria dos casos basta copiar uma configuracao ja existente de uma maquina
similar.
 
== Criando usuário ==
Antes disso vamos alterar algumas coisas no sistema.
 
Alterar o arquivo '''/etc/adduser.conf'''. Esse arquivo tem os parâmetros do comando '''adduser''' que por padrão não vem configurado com os grupos necessários para o sistema. Esses grupos servem para que o usuário tenha acesso a alguns dispositivos da máquina, som, impressora, pendrive e outros.
 
procure pelo parametro:
#EXTRA_GROUPS="dialout cdrom floppy audio video plugdev users"


remove a # inicial da linha, ficando:
EXTRA_GROUPS="dialout cdrom floppy audio video plugdev users"


procure por:
#ADD_EXTRA_GROUPS=1


remove a # inicial da linha:
ADD_EXTRA_GROUPS=1


Adicionando mais usuarios no servidor para usar nos terminais


'''*4 - Adicionando mais usuarios.'''<br>
Adicionando usuario com login Rogers
Adicionando usuario teste<br>
'''adduser rogers'''
'''adduser teste'''
digite e confirme a senha


Colocar na base de dados do NIS<br>
Depois de adicionar um usuário, é necessário gerar o novo banco de acessos do NIS, para isso execute os comandos a seguir:
'''cd /var/yp'''<br>
'''make'''


Colocar na base de dados do NIS
'''cd /var/yp'''<br>


'''*** SAIA DO CHROOT ANTES DE EXCUTAR OS PRÓXIMOS COMANDOS, DIGITE exit ***'''
gerar o banco de dados no sistema NIS
'''make'''


[[Categorias:Diskless]]
[[Categoria:Diskless]]
[[Categoria:Redes]]
[[Categoria:Linux]]

Edição atual tal como às 20h01min de 5 de agosto de 2011

Modelo de rede baseada no conceito de Terminais Inteligentes. Clique na imagem para ampliar.

Sistema Diskless

O que é Diskless?

É um conjunto de serviços, instalados em um servidor, que fornecem todos os arquivos necessários para a montagem de um sistema operacional transparente - cliente -, via rede, como se fosse local.

Seu conceito de uso está baseado na idéia de rede centralizada formada por Fat Clients ou Terminais Inteligentes, na qual cada computador-cliente é dependente de um servidor. Diferentemente do modelo Thin Client (Terminais Inteligentes), este modelo utiliza o processamento e os recursos que o computador-cliente oferece. Na prática isso significa que quanto mais recursos de hardware o computador-cliente oferece mais desempenho a estação poderá ter.

Histórico

O intento de criar, dentro de um modelo centralizado, um software ou um conjunto de ferramentas que atendessem, administrativamente, computadores-clientes com mais recursos de hardware foi uma preocupação de muitos programadores durante bastante tempo na história da evolução do computadores pessoais.

Partindo dessa necessidade e desta problemática, a empresa Async Open Source criou a solução Diskless Desktop, uma arquitetura de rede que, como o próprio nome diz, trabalha sem disco rígido e possibilita compartilhamento de arquivos, impressoras, serviço de e-mail, intranet e bases de dados, ficando os dados de seus usuários em servidores protegidos. Esta documentação é fruto da releitura da pequena documentação inicial produzida pela Async Open Source e pela contribuição dos instrutores do Pontão Nós Digitais.

Vantagens e desvantagens

Vantagens
  • Segurança de um sistema operacional GNU/Linux
Usar um sistema operacional GNU/Linux como provedor de serviços em servidor aumenta consideravelmente a segurança do sistema operacional em si e a segurança dos dados armazenados por ele.
  • Atualização de fácil administração
Quando temos uma rede descentralizada, a atualização dos sistemas operacionais que compõem a rede, em muitos casos, torna-se bastante demorada e despendiosa ao Administrador de Rede. Utilizando uma rede baseada em Terminais Inteligentes esta problemática deixa de existir pois a atualização do servidor tem efeito para todos os terminais.
  • Inserção fácil de novas máquinas na Rede
Colocar um novo computador na Rede de Terminais Inteligentes é muito mais fácil, bastando ao administrador editar alguns poucos arquivos!
  • Acesso aos seus arquivos em qualquer computador-cliente
Imagine uma rede com 10 computadores na qual todos aqueles que fazem uso destas máquinas diariamente não tem máquina definida para trabalhar. Imagine um telecentro com 20 (vinte) ou mais computadores cujos utilizadores podem armazenar seus arquivos por um determinado período de tempo. Como fica o gerenciamento dos arquivos utilizados por essas pessoas? Numa rede descentralizada cada qual terá de utilizar o mesmo computador que utilizou no dia anterior. Isto não ocorre no uso de Terminais Inteligentes. Todos os arquivos ficam salvos no servidor, dentro da pasta pessoal de cada usuário, e o acesso a eles pode se dar a partir de qualquer computador-cliente.
  • Economia de valor na compra de disco
Terminais inteligentes não fazem uso de disco rígido - Hard Disk - para armazenamento de quaisquer dados. Isto diminui o valor de custo empregado na montagem de uma rede além de contar com a diminuição de ruido do disco rígido - sempre presente em máquinas desktop completas.
Desvantagens
  • Efeito para todos os terminais em caso de problema, quebra do sistema
  • Chaves criptografadas para cada cliente

Como funciona?

Tudo começa pela interface/placa de rede ethernet, pois é o ponto de partida para a configuração do computador-cliente. A partir do boot pela placa de rede, a Diskless começa a funcionar. A placa de rede carregará o driver e as informações da rede local passada pelo serviço DHCP e TFTP. Nesse momento já teremos a placa de rede com um ip e o tftp será o responsável pela transferência dos arquivos iniciais do sistema.

Outro serviço importante é o NFS. Ele será o responsável para que o computador-cliente tenha acesso aos arquivos do servidor. Após montado, o sistema está mapeado para executar os próximos serviços e carregar os restante dos arquivos necessários da Diskless.

NIS tem o papel de validação do usuário e senha do computador cliente.


	+------------------------------	+				
	|	    SERVIDOR            |                           COMPUTADOR CLIENTE, SEM DISCO RIGIDO.
        |                               |		            +---------------+
	|  +-------------------------+	|          REDE LAN 	    |		    |
	|  |     01 DHCP	     |	| <------------------------>|    CLIENTE    |
	|  |     02 TFPT-BOOT	     |	|               	    |               |
	|  |     03 NFS	             |	|			    +---------------+
	|  |	 04 NIS	             |	|                      		
	|  |	 05 OUTROS	     |	|
	|  |	 ...                 |	|
	|  +-------------------------+	|
	|		      ^         |
	|		      |         | 
        |  Sistema Diskless   v         |
        |  +-------------------------+  |
        |  |                         |  |
        |  |    /export              |  |
        |  |                         |  |
        |  +-------------------------+  |
        |                               |    
        +------------------------------ +

Tutorial de Instalação

Este tutorial é dividido em duas partes principais: Servidor e Cliente. Em cada uma das partes será tratado o modelo de construção de cada um destes elementos. Aqui está elencado passo-a-passo todo processo de montagem de uma rede baseada no modelo de Terminais Inteligentes - Fat Client.

Variáveis de ambiente

Variáveis de ambiente DESSE EXEMPLO, faça as alterações necessárias de acordo com o seu ambiente.

REDE

endereço 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
dominio reggae.com.br

SERVIDOR

ip 192.168.0.1

INTERFACES DE REDE SERVIDOR (placa de rede)

eth0 - rede local / LAN
eth1 - internet   / WAN

CLIENTES

jimicliff 192.168.0.10 
natirutis 192.168.0.11

NIS

domain rock

Ambiente de comandos

Quando executado o comando sudo chroot /export/diskless/. estaremos simulando um cliente Diskless para algumas operações que só funcionam se o sistema existiver montado. Qualquer comando que for executado depois desse, (sudo chroot /export/diskless/.) está sendo executado dentro da Diskless, no cliente Diskless, por isso sempre verifique em qual ambiente você está antes de executar qualquer comando. A documentação foi dividida em duas partes, servido e cliente para evitar erros.

linha de comando do servidor:

             bobmarley@bobmarley:/export$ sudo chroot /export/diskless
             [sudo] password for bobmarley: <digite a senha>

linha de comando da Diskless: Aqui já estamos simulando o sistema Diskless

             root@bobmarley:/# 

Tudo que estiver dentro do quadro serrilhado e negrito é um comando:

 COMANDO 

dentro do quadro serrilhado é um texto informativo importante ou o conteudo de arquivo seguido do comando em negrito:

CONTEUDOO DO ARQUIVO


Estrutura de diretórios

Até o final da documentação, você terá criado a estrutura de diretórios abaixo, NÂO É NECESSÁRIO CRIAR NADA AGORA

	/								(raiz)
	/export/hardy							(diskless image)
	/export/state		  			                (Diretorio temporario /var dos clientes)
	/export/diskless -> hardy					(link diskless)
	/export/tftpboot/boot						(sistema de boot)
	/export/tftpboot/boot/vmlinuz     -> ../../diskless/vmlinuz	(link para arquivo do sistema)
	/export/tftpboot/boot/initrd.img  -> ../../diskless/initrd.img	(link para arquivo do sistema)
	/export/tftpboot/boot/generic.script			        (FTPT Boot)
	/export/tftpboot/pxe					        (Imagem boot-rom)

Placa rede Cliente

Essa é uma parte bastante importante na Diskless. Partimos do princípio que o cliente não tem sistema algum para iniciar. Para todo cliente deve existir uma placa de rede Ethernet 10/100 ou 10/100/1000 mbit, quanto mais rápida melhor. Temos que descobrir a marca e modelo da placa de rede do cliente para fazer a configuração personalizada no DHCP para cada cliente.

Nessa configuração utilizaremos a imagem GPXE para a placa de rede ethernet se comunicar com o servidor a partir do serviço DHCP. Abordaremos mais na configuração do DHCP. (http://etherboot.org/wiki/start#etherbootgpxe_wiki) Leia, http://etherboot.org/wiki/romburning

Abordando problemas com /var


No /var não é preciso criar diretório/arquivos, pois tem dois scripts que irão realizar isso. /var é um diretório do sistema que inclui diversos arquivos do tipo, histórico do sistema, erros, estado atual de cada serviço e outros, gerando um log. Como a Diskless é uma “imagem” de um sistema operacional, tudo mostra que todos os clientes teriam o mesmo /VAR, com isso, clientes diferentes precisam fazer tarefas diferentes no mesmo arquivo ao mesmo tempo. Por isso o /var de cada cliente deverá ser montado separado. Não haverá alteração para o cliente, mas no servidor esses arquivos serão guardados em /export/state/nome_cliente/var.

Servidor: instalando o sistema

O servidor dos Terminais Inteligentes será o provedor de acesso de sistema de todos os demais computadores-clientes da rede. Sua configuração e instalação é mais demorada e deve ser feita com zelo e critério, pois este será a base dos demais serviços do qual desfrutarão os computadores-clientes.

Instalando GNU/Linux Ubuntu 8.04


Instale o sistema operacional GNU/Linux Ubuntu 8.04 Servidor ou Destkop na máquina que será o servidor de sua rede. Segue o modelo a seguir para um servidor que irá ter muitos usuários e arquivos comuns entre eles.

Qual a diferença?

 Ubuntu Server
  Tempo de atualização, quatro anos
  Opção de RAID para os discos
  Não instala parte gráfica por padrão
 Ubuntu Desktop
  Tempo de atualização, dois anos
  Sem Opção de RAID para os discos
  Instala parte gráfica por padrão

- Importante - Durante a instalação, particione o disco com um ponto de montagem chamado /export. Este ponto de montagem será o local onde ficarão armazenados todos os arquivos do sistema Diskless.

Suponhamos um HD de 120GB como exemplo, ajuste de acordo com suas necessidades:
49GB       /		(raiz, /boot /usr /var /tmp outros)
35GB 	    /home       (arquivos dos usuários)
35GB 	    /export     (arquivos do sistema diskless)
1GB 	    swap        (sistema de memória temporária) 

É importante alertar que a tendência do tamanho dos arquivos e das imagens de cada cliente Diskless é sempre aumentar, pois temos os updates, softwares, /var e outros que ocuparam mais espaço no futuro, tudo depende da quantidade de clientes e usuários na rede.

Feito o particionamento, faça a instalação padrão do sistema escolhendo um usuário e senha que terá permissão de root para os próximos passos.

Após iniciar o sistema volte a este ponto e prossiga com as orientações do tutorial.

Para iniciar a contrução da Diskless, faz-se necessário a criação de alguns diretórios próprios. Crie os diretórios.

Comando para criar a Estrutura de Diretórios do Diskless.

cd /export
sudo mkdir -p hardy state tftpboot/boot tftpboot/pxe

Remover tabela de montagem e fazer um link para outro arquivo

sudo rm /etc/mtab
sudo ln -s /proc/mounts /etc/mtab

Criar link de diretorio hardy para ambiente diskless. Hardy é o nome da versão do Ubuntu que vamos usar e para facilitar a identificação de versão e organização criamos o dirtorio com próprio nome.

cd /export
sudo ln -s hardy diskless
cd /export/diskless

Criar o arquivo /export/tftpboot/boot/generic.script

sudo nano /export/tftpboot/boot/generic.script

conteudo:

#!gpxe 
kernel tftp://192.168.0.1//export/tftpboot/boot/vmlinuz vga=normal quiet splash 
initrd tftp://192.168.0.1//export/tftpboot/boot/initrd.img
boot

Configurando arquivos de interface de rede

Partimos do princípio que todos os clientes terão acesso a internet, por isso o servidor deve ter duas placas de rede, uma onde chega a internet (rede WAN) e outra que atenderá os clientes da diskless (rede LAN).

Para esse exemplo usaremos a range de IP 192.168.0.0 para a rede LAN, pode ser alterado de acordo com a sua necessidade. O IP da rede WAN normalmente é fornecido pelo provedor quando não existe um IP fixo, utilizaremos um exemplo para diferenciar uma rede da outra.

Vamos PÁRAR ao serviço de rede:

sudo /etc/init.d/networking stop

Edite o arquivo, /etc/network/interfaces

sudo nano /etc/network/interfaces

conteudo do arquivo:

auto lo
iface lo inet loopback
# REDE LAN
auto eth0
iface eth0 inet static
	address 192.168.0.1	   
       # ip do servidor
	netmask 255.255.255.0
       # mascara de rede
       broadcast 192.168.0.255    
	network 192.168.0.0
       # classe da rede geral
# REDE WAN
auto eth1
iface eth1 inet dhcp
# para ip dinamico. pode variar dependendo da sua conexão.

Iniciaro serviço de rede:

sudo /etc/init.d/networking start

Compartilhando Internet

Lembramos que eth0 é placa de rede LAN, e interface de rede eth1 e para internet/WAN, o nat deve ser feito sempre para a interface de internet/WAN, faça as modificações necessárias se precisar.
Edite o arquivo sudo nano /etc/rc.local e adicione as seguintes linhas:

# LIMPA REGRAS
iptables -F 
iptables -X 
iptables -Z 
# NAT 
iptables -F -t nat 
iptables -Z -t nat 
iptables -X -t nat

# CARREGA MODULOS
modprobe iptable_nat 
modprobe ip_conntrack_ftp 
modprobe ip_conntrack 
modprobe ip_nat_ftp
iptables -t nat -A POSTROUTING -o ethX -j MASQUERADE
#                               a ethX deve apontar sua interface Wan/Internet
exit 0

Rodar o script para o compartilhamento de internet ter efeito.

sudo /etc/rc.local

Edite o arquivo sudo nano /etc/sysctl.conf e descomente as linhas que por padrão vem comentada:

# Uncomment the next line to enable packet forwarding for IPv4 
net.ipv4.ip_forward=1 
# Uncomment the next line to enable packet forwarding for IPv6 
net.ipv6.ip_forward=1

Carregar configurações:

sudo sysctl -p

Pode aparecer uma mensagem dizendo que IPv6 não esta "conhecido" "habilitado"...não se preocupar. Rede IPv6 não esta usando.

Atualizando lista de programas

Agora que temos internet, temos que atualizar a lista de pacotes do Ubuntu para fazer instalar o servidores, segue os passos:

sudo apt-get update

aguarde até finalizar a atualização.

ROM MATIC

Placa rede Cliente

ROM-o-matic.net dynamically generates gPXE and Etherboot network booting images.
O endereço http://rom-o-matic.net é o site onde encontraremos o PXE para download e configurar o serviço DHCP, abra o endereço no navegador.

Passos:

  No computador client, rode o live cd do ubuntu para encontrar as informações necessárias.
leia, http://etherboot.org/wiki/romburning

#lspci -vnn | grep Ethernet

03:00.0 Ethernet controller [0200]: Broadcom Corporation BCM4401-B0 100Base-TX [14e4:170c] (rev 02) 

para exemplo, vamos usar o b44:14e4170c -- [14e4,170c], vendor and device IDs (14e4 e 170c respectivamente).

lembre-se que o código dever ser trocado o : por , ficando assim 14e4,170c

gPXE Releases; Current top of Development Tree; gPXE git (current-top-of-git-tree) Image Generator:

Escolha a marca e versão da placa de rede
1 - Choose NIC/ROM type:

Escolha o formato PXE 2 - Choose ROM output format:

Download 3 - “GET ROOM”

Salve na sua Area de trabalho (Desktop) e depois copie com permissão de root para dentro do diretório /export/tftpboot/pxe/. Para o exemplo, o nome desse arquivo será rom-matic.pxe

Exemplo:

cd <enter>
sudo cp Desktop/gpxe-git-b44.pxe  /export/tftpboot/pxe/

Se o seu Ubuntu está em português o diretorio Desktop muda de nome:
sudo cp Área\ de\ Trabalho/gpxe-git-b44.pxe /export/tftpboot/pxe/

Serviço DHCP

Antes de qualquer coisa precisamos instalar o pacote DHCP:

sudo apt-get install dhcp3-server

Mova o arquivo original para deixar ele como esta.

sudo mv /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf.original 

Obtenha o número MAC - endereço físico - dos computadores clientes.

Dica: para obter o endereço físico do computador-cliente você poderá usar o comando ifconfig.
Proceda da seguinte maneira: no computador cliente, insira um live cd e faça-o rodar.
Abra um terminal de comandos ou use o sistema diretamente no modo texto. No terminal, digite ifconfig e veja a linha:
eth0      Link encap:Ethernet  Endereço de HW 00:00:ec:5d:c3:33 
O número em negrito é o endereço físico da placa de rede do cliente.

Edite o arquivo sudo nano /etc/dhcp3/dhcpd.conf e adicione as linhas indicadas nos comentários.

authoritative;
use-host-decl-names on;

# gPXE stuff - Padrao PXE option space gpxe; option gpxe-encap-opts code 175 = encapsulate gpxe; option gpxe.bus-id code 177 = string;
# Sub-rede subnet 192.168.0.0 netmask 255.255.255.0 { # IP servidor, caminho raiz para os arquivos necessários option root-path "192.168.0.1:/export/diskless"; # Gateway option routers 192.168.0.1; # DNS option domain-name-servers 192.168.0.1; # Dominio option domain-name "raggea.com.br";
# nome da maquina, utilizaremos em outros arquivos host jimicliff { # endereço fisico da placa de rede do cliente hardware ethernet 00:15:f2:c8:22:54; # raiz option root-path "192.168.0.1:/export/diskless"; # IP que esse cliente irá receber fixed-address 192.168.0.10; if not exists gpxe.bus-id { # Drive da placa de rede do cliente, passo 1.3.1 filename "/export/tftpboot/pxe/gpxe-git-b44.pxe"; } else { # Script de inicialização com parametros do tftpboot filename "/export/tftpboot/boot/generic.script"; } } }

Religar o dhcp3-server:
sudo /etc/init.d/dhcp3-server restart

esse é um log do cerviço que está funcionando corretamente,

comando tail -f /var/log/syslog

Sep 1 16:09:45 bobmarley dhcpd: Internet Systems Consortium DHCP Server V3.0.6
Sep 1 16:09:45 bobmarley dhcpd: Copyright 2004-2007 Internet Systems Consortium.
Sep 1 16:09:45 bobmarley dhcpd: All rights reserved.
Sep 1 16:09:45 bobmarley dhcpd: For info, please visit http://www.isc.org/sw/dhcp/
Sep 1 16:09:45 bobmarley dhcpd: WARNING: Host declarations are global. They are not limited to the scope you declared them in.
Sep 1 16:09:46 bobmarley dhcpd: WARNING: Host declarations are global. They are not limited to the scope you declared them in.
Sep 1 16:09:46 bobmarley dhcpd: Wrote 0 deleted host decls to leases file.
Sep 1 16:09:46 bobmarley dhcpd: Wrote 0 new dynamic host decls to leases file.
Sep 1 16:09:46 bobmarley dhcpd: Wrote 0 leases to leases file.
Sep 1 16:09:46 bobmarley dhcpd:
Sep 1 16:09:46 bobmarley dhcpd: No subnet declaration for eth0 (200.200.200.2) REDE WAN
Sep 1 16:09:46 bobmarley dhcpd: ** Ignoring requests on eth0. If this is not what
Sep 1 16:09:46 bobmarley dhcpd: you want, please write a subnet declaration
Sep 1 16:09:46 bobmarley dhcpd: in your dhcpd.conf file for the network segment
Sep 1 16:09:46 bobmarley dhcpd: to which interface eth0 is attached. **
Sep 1 16:09:46 bobmarley dhcpd:

A linha No subnet declaration for eth0 (200.200.200.2) REDE WAN ** Ignoring requests on eth0
diz que requisições vinda pela ETH0 serão ignoradas.

Servidor: adicionando máquinas

Somente adicione o nomes das maquinas cliente no arquivo:
sudo nano /etc/hosts

127.0.0.1       localhost
127.0.1.1       bobmarley
192.168.0.1     bobmarley
192.168.0.10 	 jimicliff

listar todas seus terminais aqui. Não remover nada, apenas adicionar, a ordem não tem efeito no resultado.

Vamos dar permissão para que todas as máquinas da rede local tenham acesso ao portmap, adicione a seguinte linha no arquivo:

sudo nano /etc/hosts.allow

conteudo

ALL : 192.168.0.0

Servidor: TFPT-HPA


Antes de qualquer coisa, instale o pacote necessário:
sudo apt-get install tftpd-hpa

Alterar o arquivo sudo nano /etc/inetd.conf como mostra a seguir:
De:

tftp        dgram   udp wait    root    /usr/sbin/in.tftpd  /usr/sbin/in.tftpd -s /var/lib/tftpboot

Para:

tftp        dgram   udp wait    root    /usr/sbin/in.tftpd -s /export/tftpboot/ -r blksize -vvvvvv

Debootstrap

Debootstrap é uma ferramenta que cria a estrutura do sistema operacional, nesse momento os arquivos da Diskless serão instalado em /export/hardy.

Instale o pacote:

sudo apt-get install debootstrap

E em seguinda execute o debootstrap:

sudo debootstrap hardy /export/hardy

e espere, isso pode levar horas dependendo a máquina.

I: Configuring libc6...
I: Configuring initramfs-tools...
I: Base system installed successfully.

Se terminar a instalação com frase acima...foi tudo certo.

Serviço NFS

Criar links de boot

vamos para o diretŕio do sistema

cd /export/tftpboot/boot

criando links simbólicos do sistema para o boot:

sudo ln -s ../../diskless/vmlinuz vmlinuz

criando links simbólicos do sistema para o boot:

sudo ln -s ../../diskless/initrd.img  initrd.img

etwork File System, é com essa serviço que vamos acessar e tornar os arquivos remotos como se fossem locais, de modo transparente.

Instalando pacotes NFS:

sudo apt-get install nfs-common nfs-kernel-server

Editar o arquivo /etc/exports para permitir a montagem do cliente

sudo nano /etc/exports

conteudo

/home      192.168.0.0/255.255.255.0(no_root_squash,rw,no_subtree_check,async) 
/export    192.168.0.0/255.255.255.0(no_root_squash,rw,no_subtree_check,sync,insecure_locks) 	

Reiniciar o serviço NFS

sudo /etc/init.d/nfs-common restart
sudo /etc/init.d/nfs-kernel-server restart

Serviço NIS

NIS (Network Information Service), responsável pela validação do usuário e senha criados no Servidor.

Instalando pacotes:

sudo apt-get install portmap nis

Durante instalação, será solicitado um nome para o NIS, para exemplo vamos usar: rock Poderá ocorrer um erro (verá um [Fail]), mas não se preocupe.

Edite o arquivo sudo nano /etc/default/nis e altere o parâmentro NISSERVER:

# Are we a NIS server and if so what kind (values: false, slave, master)?
de NISSERVER=false
para NISSERVER=master

Edite o arquivo sudo nano /etc/yp.conf e adicione a seguinte linha:

 # ypserver ypserver.network.com
 ypserver 192.168.0.1

Edite o arquivo sudo nano /etc/ypserv.securenets coloque as seguintes linhas para que apenas os membros da sua rede local tenham acesso.

# Always allow access for localhost
255.0.0.0	127.0.0.0

# This line gives access to everybody. PLEASE ADJUST! # 0.0.0.0 0.0.0.0 # comente esta linha acima
# esta e sua rede local do diskless 255.255.255.0 192.168.0.0

Agora que temos tudo configurado, vamos iniciar servidor NIS:

sudo /etc/init.d/nis restart

E também temos que gerar o base de dados no NIS pela primeira vez, execute:

sudo /usr/lib/yp/ypinit -m

Vai aparecer o nome do SERVIDOR bobmarley' nas seguintes linhas, verifique se o nome do servidor está correto e tecle CTRL+D, veja se o resultado é o mesmo que segue abaixo seguido de UPDATING....

bobmarley@bobmarley:/export/tftpboot/boot$ sudo /usr/lib/yp/ypinit -m
At this point, we have to construct a list of the hosts which will run NIS
servers.  bobmarley is in the list of NIS server hosts.  Please continue to add
the names for the other hosts, one per line.  When you are done with the
list, type a <control D>.
       next host to add:  bobmarley
       next host to add:  
The current list of NIS servers looks like this:
bobmarley
Is this correct?  [y/n: y]  y  
We need a few minutes to build the databases...
Building /var/yp/rock/ypservers...
Running /var/yp/Makefile...
make[1]: Entrando no diretório `/var/yp/rock'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
Updating hosts.byname...
Updating hosts.byaddr...
Updating rpc.byname...
Updating rpc.bynumber...
Updating services.byname...
Updating services.byservicename...
Updating netid.byname...
Updating protocols.bynumber...
Updating protocols.byname...
Updating netgroup...
Updating netgroup.byhost...
Updating netgroup.byuser...
Updating shadow.byname...
make[1]: Saindo do diretório `/var/yp/rock'
bobmarley has been set up as a NIS master server.
Now you can run ypinit -s bobmarley on all slave server.

Para testar o NIS digitamos: ypcat passwd, se tudo estiver ok!, aparecerá uma linha nesse formato:

usuario:x:1000::1000:usuario,,,:/home/usuario:/bin/bash

Log

Segue baixo o log do DHCP do SERVIDOR das REQUISIÇÕES do CLIENTE DISKLESS. Esse sistema não está funcionando por completo, porque ainda temos que configura-ló. Na boot, o YPBIND vai ficar procurando um servidor que não existe, isso é normal, espere até que o sistema continue com o boot.

sudo tail -n 100 /var/log/syslog

Sep 21 15:02:52 bobmarley kernel: [  225.436112] eth1: link down
Sep 21 15:02:56 bobmarley kernel: [  229.204523] eth1: link up, 100Mbps, full-duplex, lpa 0xC1E1
Sep 21 15:03:13 bobmarley kernel: [  246.298295] eth1: link down
Sep 21 15:03:15 bobmarley kernel: [  247.941352] eth1: link up, 100Mbps, full-duplex, lpa 0xC1E1
Sep 21 15:03:17 bobmarley dhcpd: DHCPDISCOVER from 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:17 bobmarley dhcpd: DHCPOFFER on 192.168.0.10 to 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:21 bobmarley dhcpd: DHCPREQUEST for 192.168.0.10 (192.168.0.1) from 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:21 bobmarley dhcpd: DHCPACK on 192.168.0.10 to 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:21 bobmarley -s[6491]: RRQ from 192.168.0.10 filename /export/tftpboot/pxe/gpxe-git-forcedeth.pxe 
Sep 21 15:03:21 bobmarley -s[6491]: tftp: client does not accept options 
Sep 21 15:03:21 bobmarley -s[6493]: RRQ from 192.168.0.10 filename /export/tftpboot/pxe/gpxe-git-forcedeth.pxe 
Sep 21 15:03:21 bobmarley kernel: [  254.048871] eth1: link down
Sep 21 15:03:23 bobmarley kernel: [  256.158345] eth1: link up, 100Mbps, full-duplex, lpa 0xC5E1
Sep 21 15:03:25 bobmarley dhcpd: DHCPDISCOVER from 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:25 bobmarley dhcpd: DHCPOFFER on 192.168.0.10 to 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:26 bobmarley dhcpd: DHCPDISCOVER from 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:26 bobmarley dhcpd: DHCPOFFER on 192.168.0.10 to 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:28 bobmarley dhcpd: DHCPREQUEST for 192.168.0.10 (192.168.0.1) from 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:28 bobmarley dhcpd: DHCPACK on 192.168.0.10 to 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:29 bobmarley -s[6495]: RRQ from 192.168.0.10 filename /export/tftpboot/boot/generic.script 
Sep 21 15:03:30 bobmarley -s[6498]: RRQ from 192.168.0.10 filename /export/tftpboot/boot/vmlinuz 
Sep 21 15:03:30 bobmarley -s[6501]: RRQ from 192.168.0.10 filename /export/tftpboot/boot/initrd.img 
Sep 21 15:03:35 bobmarley kernel: [  268.189017] eth1: link down
Sep 21 15:03:37 bobmarley kernel: [  270.289487] eth1: link up, 100Mbps, full-duplex, lpa 0xC5E1
Sep 21 15:03:39 bobmarley dhcpd: DHCPDISCOVER from 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:39 bobmarley dhcpd: DHCPOFFER on 192.168.0.10 to 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:39 bobmarley dhcpd: DHCPREQUEST for 192.168.0.10 (192.168.0.1) from 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:39 bobmarley dhcpd: DHCPACK on 192.168.0.10 to 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:40 bobmarley dhcpd: DHCPREQUEST for 192.168.0.10 (192.168.0.1) from 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:40 bobmarley dhcpd: DHCPACK on 192.168.0.10 to 00:15:f2:c8:22:2f via eth1
Sep 21 15:03:40 bobmarley mountd[5554]: authenticated mount request from 192.168.0.10:1016 for /export/hardy (/export)

Aqui finalizamos as configurações do servidor.

NAO SEGUIR PARA O PRÓXIMO PASSO SE O COMPUTADOR CLIENTE NÃO ESTIVER BOOTANDO MESMO COM OS ERROS APARECENDO NO BOOT!

Cliente: Configurando o sistema

Todas as configurações intituladas Cliente deve ser feitas no ambiente chroot. Todos os arquivos dentro de /export/diskless são do sistema Diskless, qualquer arquivo modificado dentro desse diretório tem efeito direto sobre o sistema Diskless.

ERRO

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
       LANGUAGE = "pt_BR:pt:en",
       LC_ALL = (unset),
       LANG = "pt_BR.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

Esse erro vai aparecer na hora de instalar de alguns pacotes, não se preocupe ele será resolvido nos próximos passos.

Inicial

Aqui simulamos o ambiente cliente Diskless: sudo chroot /export/diskless

A partir de agora estaremos configurando o sistema Diskless que será usado pelos clientes.
Vamos instalar e configurar cada serviço para não perder o foco.

Montamos o sistema /proc:

mount none /proc -t proc

atualizando a lista de pacotes:

apt-get update

pacotes de linguagen:

apt-get install language-pack-br language-pack-br-base

A seguir vamos apagar o NOME do COMPUTADOR CLIENTE. como se trata de diversas máquinas com nomes diferentes, o nome ao cliente será fornecido pelo serviço de DHCP do servidor.

Apagar o arquivo:

rm /etc/hostname

vamos criar um arquivo em branco:

touch /etc/hostname

Criar diretorio, por padrão isso não vem criado.

mkdir /var/run/network

Somente adicione o nomes das maquinas cliente no arquivo:

sudo nano /etc/hosts
127.0.0.1       localhost
192.168.0.1     bobmarley
192.168.0.10 	 jimicliff

Configurando rede de cliente/Ambiente Diskless

Vamos editar o arquivo /etc/network/interfaces e adicionar as linhas abaixo, por padrão esse arquivo está vazio.

NAO ADICIONAR AUTO ETH0, QUEBRA O SISTEMA NA INICIALIZAÇÃO

nano /etc/network/interfaces
auto lo
  iface lo inet loopback
  iface eth0 inet dhcp 

salva e sai do editor.

Portmap é um serviço que "lista" alguns serviços do sistema, não todos, o serviço tem que ter suporte ao Portmap. Edite o arquivo /etc/hosts.allow para restrição de conexão, apenas o servidor pode conectar, adiciona a linha:

nano /etc/hosts.allow

adicione o parâmetro na última linha

portmap : 192.168.0.1

NIS

NIS é o serviço responsavél pela autenticação do usuário e senha. Mais informações [1]

Vamos instalar o NIS

apt-get install nis

Vamos Aumentar o tempo para a execução do NIS, pois o NIS necessita que outros serviços estajam funcionando para iniciar.

update-rc.d -f nis remove
ln -s /etc/init.d/nis /etc/rcS.d/S70nis

Aqui vamos configurar o NIS para ele se comunicar com o servidor, onde vai validar o usuário e senha. Edite o arquivo /etc/yp.conf e configure a linha do servidor:

nano /etc/yp.conf

adicionar o parâmetro na ultima linha:

ypserver 192.168.0.1

salva e sai do editor.

A diferença entre os três próximos arquivos é a quantidade de dois pontos (:) de uma para o outro, deve ser colocado no final de cada arquivo. Acontece o seguinte, o NIS verifica o arquivo de autenticação local, não encontrando aquele usuário na maquina local, ele vai verificar no servidor se existe ou não.

Abra os arquivos a seguir e adicione as linhas necessárias:

nano /etc/passwd e adicione na última linha:
+::::::  #(seis :)

salva e sai.

nano /etc/group e adicione na última linha: 
+:::  #(três :)

salva e sai.

nano /etc/shadow e adicione na última linha:
+::::::::  #(oito :)

salva e sai.


UM EXEMPLO DO /etc/passwd

stunnel4:x:123:126::/var/run/stunnel4:/bin/false
festival:x:124:29::/home/festival:/bin/false
+::::::  < ULTIMA LINHA >

Linux Image (Kernel)

Vamos instalar o Kernel (linux-image): apt-get install linux-image

Como o sistema funciona com base em um rede e não local (discos, HD), precisamos alterar o parametro BOOT do arquivo /etc/initramfs-tools/initramfs.conf e gerar o novo initrd.img em seguida. Com isso faremos com que o sistema de boot do cliente (sistema Diskless) carregue modulos de rede para ter acesso ao servidor e seus serviços.

  • Precisamos alterar o arquivo: nano /etc/initramfs-tools/initramfs.conf para poder bootar via NFS, altere:

de

BOOT=local 

para

BOOT=nfs 

salva e saia do editor.

Agora que temos o arquivo alterado, vamos atualizar o sistema de boot:

  • Recriando o initrd.img:

update-initramfs -u

esse mensagem deverá aparecer:

root@bobmarley:/# update-initramfs -u
update-initramfs: Generating /boot/initrd.img-2.6.24-16-generic

NFS

NFS é serviço para disponibilizar um determinado diretorio do servidor em modo transparente, como se os arquivos estivessem localmente, evitando problemas. É extramente necessário o funcionamento desse serviço, já que os arquivos do sistema é todo remoto em todo o tempo para o client, boot, trabalho e na hora de desligar.

Vamos instalar o serviço:

apt-get install nfs-common

Configurando sistema de arquivos

Inserir estas linhas no arquivo /etc/fstab

nano /etc/fstab
/dev/root       /               nfs     defaults,rw,nolock,tcp  0 0 
none            /tmp            tmpfs   defaults                0 0 
none            /media          tmpfs   defaults                0 0 
none            /var/tmp        tmpfs   noexec                  0 0 
none            /var/yp/binding tmpfs   defaults,mode=755 	 0 0 
192.168.0.1:/home   /home       nfs  defaults,nfsvers=3,tcp,async,noatime,rw,rsize=32768,wsize=32768 0 0


Scripts de inicialização, /VAR

Esses scripts foram desenvolvidos para resolver o problema do /var.
Ele faz algumas verificações de diretórios, caso não exista, ele crie.
Isso é importante para os computadores que já estão funcionando como aqueles que serão inseridos no futuro.

Edite os dois arquivos e arrume o parametro SERVER de acordo com o IP do seu servidor, se estiver usando as configurações e parâmetros do tutorial não é necessário alterar nada.

DESC="NFS diskless common setup"
SERVER="192.168.0.1"     # possivel alterar para sua rede

Criar arquivo mountnfs-diskless.sh. Inicialmente estará em branco pois o arquivo está sendo criado.

nano /etc/init.d/mountnfs-diskless.sh
### BEGIN INIT INFO
# Provides:          mountnfs-diskless
# Required-Start:    mountnfs
# Required-Stop:
# Default-Start:     S
# Default-Stop:
# Short-Description: Mount diskless file systems
# Description:       Mount diskless file systems
### END INIT INFO

. /lib/lsb/init-functions
DESC="NFS diskless common setup" SERVER="192.168.0.1"
log_daemon_msg "Mounting station-specific directories"
MTOPTS="rsize=32768,async,wsize=32768,nfsvers=3,tcp"
# Start off with mounting the state directory mount -o $MTOPTS $SERVER:/export/state /state
DIR="/state/`hostname`/var/spool/" if [ ! -d $DIR ] ; then log_daemon_msg "Creating spool directory $DIR" mkdir -p $DIR cd $DIR ln -s ../mail mail
# Copy postfix skeleton environment over #cp -R --preserve /etc/server-skel/postfix/ .
mkdir cron mkdir texmf
#mkdir cups #chown cupsys:lpadmin cups #chmod 710 cups fi mount -o $MTOPTS,nolock $SERVER:/export${DIR} /var/spool/
DIR="/state/`hostname`/var/log/" if [ ! -d $DIR ] ; then log_daemon_msg "Creating log directory $DIR" mkdir $DIR cd $DIR
mkdir apt mkdir ksymoops mkdir gdm mkdir news chown news:proxy news chmod 2755 news
#mkdir postgresql #chgrp postgres postgresql #chmod 775 postgresql
#mkdir cups #chown cupsys:lpadmin cups fi mount -o $MTOPTS,nolock $SERVER:/export${DIR} /var/log/
DIR="/state/`hostname`/etc/cups/" if [ -d $DIR ] ; then log_daemon_msg "Mounting station-specific CUPS directory" mount -o $MTOPTS $SERVER:/export${DIR} /etc/cups fi
log_end_msg $?
: exit 0

Criar arquivo: nfs-common-diskless. Inicialmente estará em branco pois o arquivo está sendo criado.

nano /etc/init.d/nfs-common-diskless
### BEGIN INIT INFO
# Provides:          nfs-common-diskless
# Required-Start:    $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: NFS support files common to client and server
# Description:       NFS is a popular protocol for file sharing across
#                    TCP/IP networks. This service provides various
#                    support functions for NFS mounts.
### END INIT INFO

. /lib/lsb/init-functions
DESC="NFS diskless common setup" SERVER="192.168.0.1"
log_daemon_msg "Starting $DESC"
DIR="/var/lib/nfs/`hostname`" if mount | grep -qs /var/lib/nfs; then log_daemon_msg "NFS state directory already mounted" exit 1 fi if [ ! -d $DIR ] ; then log_daemon_msg "New machine; creating NFS directory." mkdir -p $DIR fi mount -o $MTOPTS,nolock $SERVER:/export/diskless/${DIR} /var/lib/nfs/ log_end_msg $?

Vamos dar permissão de execução para os dois arquivos criados:

chmod +x /etc/init.d/mountnfs-diskless.sh

depois

chmod +x /etc/init.d/nfs-common-diskless

Fazer links simbólicos para a inicialização do sistema:

ln -s /etc/init.d/mountnfs-diskless.sh  /etc/rcS.d/S45mountnfs-diskless

depois

ln -s /etc/init.d/nfs-common-diskless   /etc/rcS.d/S43nfs-common-diskless

Ambiente gráfico

Para finalizar vamos instalar o ambiente gráfico.

X-Window é o servidor gráfico do Linux, sem ele os gerenciadores de janela, Gnome, KDE, XFCE e outros não tem funcionalidade, por isso vamos instalar o servidor mais o gerenciador de janelas padrão do Ubuntu, o Gnome.

Isso pode levar um bom tempo dependendo da velocidade da conexão da internet que você tem, por isso vá tomar uma água, ler e-mails, jogar WII e outros... ;)

Demora porque será feito o download dos arquivos necessários, +-500MB. Essa instalação irá resolver o problema de "PERL LOCALES" que falamos acima.

apt-get install ubuntu-desktop

Chegamos ao final da configuração do cliente. Teoricamente o sistema Diskless já está funcionando. O não funcionamento dos serviços, devem ser verificados os LOGS do sistema no servidor, /var/log/syslog ou /var/log/messages. Os serviços foram montados com nivél de prioridade, pois um depende do outro para funcionar.

Acesso de admin

Como o próprio nome diz, admistrador. Um usuário com acesso ao admin, no grupo admin, tem acesso a comandos restritos como instalar programas, atualizações do sistema, adicionar novos usuários e etc. Tudo isso com o comando sudo <comando>

Para acesso admin dentro do sistema Diskless, adicione o grupo ADMIN:

groupadd admin

Editar o arquivo /etc/sudoers.

Altere a linha ou adicione

nano /etc/sudoers

de

 #%sudo ALL=NOPASSWD: ALL

Para:

%admin  ALL=(ALL) ALL

Colocando um usuário no grupo admin:

sudo usermod -g admin

veja mais opções em chmod --help. Diferença entre -g e -G

Adicionando nova máquina no sistema Diskless

Editar o arquivo sudo nano /etc/dhcp3/dhcpd.conf, e colocar os parametros necessários para o novo cliente. Não esquecendo que precisamos saber a marca e modelo da placa de rede, vai para o passo 1.3.1 caso não lembre.

host natirutis {  
 		# endereço fisico da placa de rede do cliente
         	hardware ethernet XX:XX:XX:XX:XX; 
 		# IP que esse cliente irá receber
         	fixed-address 192.168.0.11; 
         	if not exists gpxe.bus-id { 
  			# Drive da placa de rede do cliente, passo 1.3.1
              	filename "/export/tftpboot/pxe/rom-matic.pxe"; 
          	} else { 
  			# Script de inicialização com parametros do tftpboot
             	filename "/export/tftpboot/boot/generic.script"; 
         	}	 
     	}

uma parte desse arquivo desse ficar assim:

# nome da maquina, utilizaremos em outros arquivos
  host jimicliff { 
        # endereço fisico da placa de rede do cliente
        hardware ethernet 00:15:f2:c8:22:54; 
        # IP que esse cliente irá receber
     	 fixed-address 192.168.0.10; 
        if not exists gpxe.bus-id { 
 	 # Drive da placa de rede do cliente, passo 1.3.1
      		filename "/export/tftpboot/pxe/gpxe-git-b44.pxe";
      	} else { 
		# Script de inicialização com parametros do tftpboot
	       	filename "/export/tftpboot/boot/generic.script"; 
        }	 
   } 
  host natirutis { 
        # endereço fisico da placa de rede do cliente
        hardware ethernet 00:15:f2:c8:23:54; 
	 # IP que esse cliente irá receber
      	 fixed-address 192.168.0.11; 
        if not exists gpxe.bus-id { 
	 # Drive da placa de rede do cliente, passo 1.3.1
      		filename "/export/tftpboot/pxe/gpxe-git-forcedeth-10de0057.pxe";
      	} else { 
  	# Script de inicialização com parametros do tftpboot
       	filename "/export/tftpboot/boot/generic.script"; 
       }


reinciar o serviço DHCPD para que as alterações tenham efeito:

/etc/init.d/dhcp3-server restart

Edite o arquivo /etc/hosts e declare o nome e IP do novo terminal na ultima linha:

127.0.0.1       localhost
192.168.0.1     bobmarley
192.168.0.10 	 jimicliff
192.168.0.11 	 natirutis

salva e sai do arquivo.

Com todas essas inserções no sistema, o novo terminal pode ser ligado. A principio os sistema /var será criado no boot, por isso reinicie o terminal. Usando qualquer usuário cadastrado no sistema tem acesso ao novo terminal, nenhuma mudança é necessária.

X11 e xorg.conf

Caso o boot reclamar que nao consegue iniciar o modo grafico, entao edite no servidor o arquivo de configuracao do modo grafico dos clientes. No caso especifico do setup da Teia, edite:

/export/intrepid/etc/X11/xorg.conf

e coloque secoes Screen e ServerLayout apropriadas. Uma dica e' copiar a configuracao detectada no /etc/X11/xorg.conf do livecd do ubuntu no cliente. Na maioria dos casos basta copiar uma configuracao ja existente de uma maquina similar.

Criando usuário

Antes disso vamos alterar algumas coisas no sistema.

Alterar o arquivo /etc/adduser.conf. Esse arquivo tem os parâmetros do comando adduser que por padrão não vem configurado com os grupos necessários para o sistema. Esses grupos servem para que o usuário tenha acesso a alguns dispositivos da máquina, som, impressora, pendrive e outros.

procure pelo parametro:

#EXTRA_GROUPS="dialout cdrom floppy audio video plugdev users"

remove a # inicial da linha, ficando:

EXTRA_GROUPS="dialout cdrom floppy audio video plugdev users"

procure por:

#ADD_EXTRA_GROUPS=1

remove a # inicial da linha:

ADD_EXTRA_GROUPS=1


Adicionando usuario com login Rogers

adduser rogers

digite e confirme a senha

Depois de adicionar um usuário, é necessário gerar o novo banco de acessos do NIS, para isso execute os comandos a seguir:

Colocar na base de dados do NIS

cd /var/yp

gerar o banco de dados no sistema NIS

make