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 |
---|
|
|
|
|
|
Desvantagens |
|
|
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 | | | | | ETHERNET | | | 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 | +------------------------------ +
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.
Antes de começar - 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.
== Servidor: instalando os serviços principais ==
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 na máquina que será o servidor de sua rede. Se quiser, siga o modelo de instalação do artigo Instalando Linux Ubuntu 8.04.
- 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 de configuração da 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 computador-cliente é sempre aumentar, pois temos os updates, softwares, /var e outros que ocuparam mais espaço no futuro, tudo depende da quantidade clientes 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.
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.
Estrutura de diretórios
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
Até o final da documentação, você terá criado esse estrutura de diretórios baixo, 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)
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 sudo nano /export/tftpboot/boot/generic.script com o seguinte 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.
Encerre a interface de rede:
sudo /etc/init.d/networking stop
Edite o arquivo, sudo nano /etc/network/interfaces
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.
Ligar interface 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.
Instalando serviços iniciais DHCP e TFTP
1.3.1 - 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:
#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]
lembre-se que o código dever ser trocado o : por , ficando assim 14e4,170c
14e4,170c é o modelo do drive para pegar no: http://rom-o-matic.net/ Se você não encontrar pela marca, veja depois pela sigla [14e4,170c] é um trabalho e tanto. Se não encontrar das duas formas, você pode o olhar o codigo fonte HTML dessa página com o Web Developer e depois procurar pelo código, 14e4,170c é uma alternativa que resolve rápido. https://addons.mozilla.org/pt-BR/firefox/addon/60 - use a opção Visualizar código-fonte gerado.
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/
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; # 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"; } } }
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.10 jimicliff 192.168.0.11 natirutis
- listar todas seus clientes 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
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.
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:
sudo chroot /export/diskless
mount none /proc -t proc
a partir de agora estamos dentro da imagem da Diskless.
- Instalando a imagem:
apt-get install linux-image nano nis
- Precisamos alterar o arquivo:
nano /etc/initramfs-tools/initramfs.conf
para poder bootar via NFS, alterar de BOOT=local para BOOT=nfs
- Recriando o initrd.img:
update-initramfs -u
Cliente
Todas as configurações intituladas Cliente deve ser feitas no ambiente chroot.
NIS no Cliente
Aumentar o tempo para a execução do NIS, pois o NIS necessita de outros serviços para iniciar.
sudo chroot /export/diskless
update-rc.d -f nis remove
ln -s /etc/init.d/nis /etc/rcS.d/S70nis
SAIA DO CHROOT ANTES DE EXCUTAR OS PRÓXIMOS COMANDOS, DIGITE exit
Servidor: NFS
Criar links de boot
cd /export/tftpboot/boot
sudo ln -s ../../diskless/vmlinuz vmlinuz
sudo ln -s ../../diskless/initrd.img initrd.img
NFS
Network File System, é com essa serviço que vamos acessar e tornar os arquivos remotos com se fossem locais.
Instalando pacotes:
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) /export 192.168.0.0/255.255.255.0(no_root_squash,rw,no_subtree_check,sync,insecure_locks)
Reiniciar
sudo /etc/init.d/nfs-common restart
sudo /etc/init.d/nfs-kernel-server restart
SERVIDOR: 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: servidor
Poderá ocorrer um erro (verá um [Fail]), mas não se preocupe.
Adicione o nome do servidor NIS da instalação no:
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)? 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
Digite o nome do servidor que escolhemos na instalação do NIS: servidor e tecle CTRL+D para sai.
Em seguida deve aparecer varias linhas contendo a palavra Updating... , fora isso ouve algum erro.
Vai acontece algo proximo a isso:
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 the names for the other hosts, one per line. When you are done with the list, type a <control D>. next host to add: diskless-desktop next host to add: The current list of NIS servers looks like this:
diskless-desktop
Is this correct? [y/n: y] y We need a few minutes to build the databases... Building /var/yp/nserver/ypservers... Running /var/yp/Makefile... make[1]: Entering directory `/var/yp/nserver' Updating passwd.byname... Updating passwd.byuid... .....................varios Updating Updating netgroup.byuser... Updating shadow.byname... make[1]: Leaving directory `/var/yp/nserver'
diskless-desktop has been set up as a NIS master server.
Now you can run ypinit -s diskless-desktop 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
Aqui finalizamos as configurações do servidor.
Cliente/Diskless
Scripts de inicialização e /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.
DESC="NFS diskless common setup" 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:
Remover /etc/hostname do Cliente/Diskless
rm /etc/hostname
touch /etc/hostname
Criar arquivo dentro do Cliente
mkdir /var/run/network
Criar arquivo mountnfs-diskless.sh
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
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 $?
Dar permissao de execucao:
chmod +x /etc/init.d/mountnfs-diskless.sh
chmod +x /etc/init.d/nfs-common-diskless
Fazer links simbolicos
ln -s /etc/init.d/mountnfs-diskless.sh /etc/rcS.d/S45mountnfs-diskless
ln -s /etc/init.d/nfs-common-diskless /etc/rcS.d/S43nfs-common-diskless
2.1 – Cliente
A partir de agora estaremos configurando a imagem/ambiente Diskless que será passada aos clientes.
Antes de começarmos, vamos instalar o alguns pacotes necessários com o comando:
apt-get update
mount none /proc -t proc
apt-get install language-pack-br language-pack-br-base
apt-get install nfs-common portmap
- 2.2 Configurando partições
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:
192.168.0.1:/home
- 2.3 Configurando rede de cliente/Ambiente Diskless
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
iface eth0 inet dhcp
!! NAO ADICIONAR AUTO ETH0 , QUEBRA O SISTEMA NA INICIALIZAÇÃO'
Edite o arquivo nano /etc/hosts.allow , para restrição de conexão, apenas o servidor pode conectar, adiciona a linha:
portmap : 192.168.0.1
- 2.4 NIS
Edite o arquivo nano /etc/yp.conf e configure a linha do servidor.
ypserver 192.168.0.1
para acessar o servidor NIS.
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:
Abra os arquivo:
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:
groupadd admin
Editar nano /etc/sudoers
Altere a linha ou adicione
#%sudo ALL=NOPASSWD: ALL
Para:
%admin ALL=(ALL) ALL
- 2.5 Instalando X Window e Desktop
apt-get install ubuntu-desktop
Este passo pode demorar, pois sera feito download de arquivos do sistema.
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.
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 { # 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.X; 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"; } }
/etc/init.d/dhcp3-server restart
Abre o arquivo sudo nano /etc/hosts e insere o nome e IP do novo cliente,
192.168.0.X cliente_disklessX
Adicionando mais usuarios no servidor para usar nos terminais
*4 - Adicionando mais usuarios.
Adicionando usuario teste
adduser teste
Colocar na base de dados do NIS
cd /var/yp
make
*** SAIA DO CHROOT ANTES DE EXCUTAR OS PRÓXIMOS COMANDOS, DIGITE exit ***