LTSP no Ubuntu

Terça-feira, 2 de Outubro de 2007 -- em Tutorais e Dicas

LTSP é o Linux Terminal Server Project, que permite a criação de terminais leves com máquinas antigas, com boot através de disquete, CD, HD ou diretamente através da placa de rede (placas modernas com PXE).

Instalando o Ubuntu

 

  1. Realizar a instalação do Ubuntu padrão

  2. Usuário inicial: usfadmin

  3. IP: utilizado 192.168.100.2 (é preciso trocar o IP em todos os arquivos de configuração pela rede adequada…)

Baixar e instalar o Automatix

Automatix é um script que permite a instalação de vários aplicativos que complementam o Ubuntu (drivers, codecs, etc).

Instruções para Baixar o Automatix

wget http://www.getautomatix.com/apt/dists/dapper/main/binary-i386/automatix_6.5-3-6.06dapper1_i386.deb
sudo dpkg -i automatix_6.5-3-6.06dapper1_i386.deb

Após a instalação, rodar o Automatix:

sudo automatix

Alguns aplicativos que devem ser instalados (clique aqui para lista completa lista):

  • Acrobat Reader (Adobe Acrobat Reader and plugin for Firefox 1.5)

  • Archiving Tools (Additional archiving tools (rar, unrar, ace, and 7zip))

  • AUD-DVD codecs (NON-FREE Audio and DVD codecs) (Installation of this option is illegal in the United States of America)

  • Flashplayer (Adobe Flash Player for FF)

  • Google Earth (Satellite Earth imagery application from Google)

  • Media Players (Totem-xine, VLC and Beep Media Player (with docklet))

  • MPlayer & FF plugin (MPlayer and Firefox 1.5 plugin)

  • Multimedia Codecs (Commonly needed audio and video codecs)

  • Opera Browser (Opera Web Browser)

  • OpenOffice Clipart (clipart in OpenOffice)

  • RealPlayer (RealPlayer)

  • SUN JAVA 1.5 JRE (Sun’s version 1.5 JRE & The Firefox plugin)

Instalando o LTSP

 

Pacotes no Debian

Primeiro, vamos instalar a parte básica no próprio Ubuntu:

sudo apt-get update
sudo apt-get install ltsp-server ltsp-utils mc

O pacote ltsp-server instala todas as dependências para o LTSP, e o ltsp-utils instala ferramentas para a configuração. E o mc instala o meu querido editor mcedit.

CD do LTSP

Apesar de ser possível instalar diretamente da Internet, é interessante baixar a imagem do CD. As versões mais recentes estão disponíveis no FTP do LTSP. O arquivo tem em torno de 100Mb.

Considerando que seu utilize a última versão disponível (4.2u2, em 22/09/2006), o comando seria:

wget http://ltsp.mirrors.tds.net/pub/ltsp/isos/ltsp-4.2u2-0.iso

Agora é necessário montar a imagem do CD para tê-lo disponível para instalação. Opcionalmente, pode-se gravar o CD e utilizá-lo para instalação.

mkdir /media/ltsp
mount -o loop ltsp-4.2u2-0.iso /media

Configurando o LTSP

O utilitário “ltspadmin” nos auxilia na configuração do LTSP. Ele nos mostra o seguinte menu:

ltspadmin - v0.14                                            LTSP dir: /opt/ltsp

LTSP Administration Utility
  Install/Update LTSP Packages
  Configure the installer options
  Configure LTSP

  Quit the administration program

Primeiro, vamos configurar as opções de instalação (Configure the installer options ) - o que está entre colchetes ([) é o padrão:

Where to retrieve packages from?
[http://ltsp.mirrors.tds.net/pub/ltsp/ltsp-4.2/] file:///media/ltsp

In which directory would you like to place the LTSP client tree?
[/opt/ltsp] /opt/ltsp42

If you want to use an HTTP proxy, enter it here
Use 'none' if you don't want a proxy
Example:  http://proxy.yourdomain.com:3128
[none]

If you want to use an FTP proxy, enter it here
(Use 'none' if you don't want a proxy)
[none]

Correct? (y/n/c) y

Segundo, vamos instalar os pacotes (Install/Update LTSP Packages ). Pressione a letra “A” e em seguida “Q”:

     Component                Size (kb)   Status
 [*] ltsp_core                    78704   Not installed
 [*] ltsp_debug_tools              4284   Not installed
 [*] ltsp_kernel                  13637   Not installed
 [*] ltsp_libusb                    808   Not installed
 [*] ltsp_localdev                    4   Not installed
 [*] ltsp_pciutils                  428   Not installed
 [*] ltsp_perl                    28072   Not installed
 [*] ltsp_rdesktop                  628   Not installed
 [*] ltsp_scanners                 9876   Not installed
 [*] ltsp_vnc_module                452   Not installed
 [*] ltsp_x_addtl_fonts           17368   Not installed
 [*] ltsp_x_core                  97716   Not installed

Use 'A' to select ALL components, 'I' to select individual components. When you
leave this screen by pressing 'Q', the components will be installed.   'H'-Help

Na próxima tela, é só confirmar:

Ready to install/update the selected LTSP packages? (y/n) y

Terceiro, vamos confirmar se todos os serviços estão rodando em Configure LTSP:

ltspcfg - Version 0.11

Checking Runlevel....: 2
Checking Ethernet Interfaces
Checking Dhcpd.....
Checking Tftpd.......
Checking Portmapper...
Checking nfs....
Checking xdmcp...........Found: none!
Checking /etc/hosts.
Checking /etc/hosts.allow.
Checking /etc/exports.
Checking lts.conf.

Press <enter> to continue.. Configure LTSP

Pressionando <enter> temos a tela seguinte:

ltspcfg v0.11 The Linux Terminal Server Project (http://www.LTSP.org)
  S - Show the status of all services
  C - Configure the services manually

  Q - Quit

Make a selection:

Pressione “S” para ver a situação dos serviços:

ltspcfg v0.11 - The Linux Terminal Server Project (http://www.LTSP.org)
Interface IP Address      Netmask         Network         Broadcast        Used
eth0      192.168.100.2   255.255.255.0   192.168.100.0   192.168.100.255   <-----

Service    Installed   Enabled   Running   Notes
dhcpd      Yes         Yes       no        Version 3
tftpd      Yes         Yes       Yes       Has '-s' flag
portmapper Yes         Yes       Yes
nfs        Yes         Yes       no
xdmcp      no          no        no            Using: none!

File                                Configured  Notes
/etc/hosts                          no
/etc/hosts.allow                    no
/etc/exports                        no
/opt/ltsp42/i386/etc/lts.conf       Yes

Configured runlevel: 2         (value of initdefault in /etc/inittab)
   Current runlevel: 2         (output of the 'runlevel' command)

Installation dir...: /opt/ltsp42

Press <enter> to return to the main menu...

Agora vamos configurar os serviços “na mão” e depois voltamos aqui para checar como estão as coisas…

Configurando o NFS

NFS é o serviço de compartilhamento de arquivos UNIX.

Edite o arquivo /etc/exports

sudo mcedit /etc/exports
/opt/ltsp42/i386/                 192.168.100.0/255.255.255.0(ro,sync,no_root_squash)
/var/opt/ltsp/swapfiles         192.168.100.0/255.255.255.0(rw,sync,no_root_squash)

Deixando o NFS automático na inicialização e reiniciando agora:

sudo update-rc.d nfs-kernel-server defaults
sudo invoke-rc.d nfs-kernel-server restart

Configurando o TFTPD

O TFTPD já fica instalado bonitinho, mas o LTSP coloca o kernel em outro diretório. Ele roda através do inetd, e é configurado no /etc/inetd.conf, na linha abaixo:

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

Troque para:

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

Note a mudança de /var/lib/tftpboot para /tftpboot no final da linha.

Depois, deixa-se o inetd automático na instalação e reinicia-se:

sudo update-rc.d inetd defaults
sudo invoke-rc.d inetd restart

Configurando o /etc/hosts

Todas as terminais precisam ser referenciados no /etc/hosts. Teoricamente até poderia não ser necessário, mas em conjunto com o DHCP este vínculo IP x NOME_DE_HOST permite configurações individuais das máquinas no LTSP, mais adiante informadas.

sudo mcedit /etc/hosts
127.0.0.1 localhost ltspadmin
192.168.100.2 ltspadmin
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

192.168.100.11 ws001
192.168.100.12 ws002
192.168.100.13 ws003
192.168.100.14 ws004
192.168.100.15 ws005
192.168.100.16 ws006
192.168.100.17 ws007
192.168.100.18 ws008
192.168.100.19 ws009
192.168.100.20 ws010
  192.168.100.2 ltspadmin

Dez estações foram configuradas acima. É IMPORTANTÍSSIMO que o IP deste servidor referencie seu nome, pois senão haverá erros na tela de login gráfico.

Configurando o DHCP

Importante, muito importante, importantíssimo: a maioria dos tutoriais diz para se editar o arquivo /etc/dhcp3/dhcp.conf. Mas isto não funciona no Ubuntu se você utilizar o pacote ltsp-server, pois ele altera o script de inicialização do DHCP (**/etc/init.d/dhcp3-server**) sobrescrevendo as configurações pelo arquivo (/etc/ltsp/dhcpd.conf):

# Default config file
CONFIG_FILE=/etc/dhcp3/dhcpd.conf

# Allow ltsp to override
if [ -f /etc/ltsp/dhcpd.conf ]; then
       CONFIG_FILE=/etc/ltsp/dhcpd.conf
       break
fi

Ou você retira as 5 últimas linhas exibidas acima ou usa mesmo o arquivo /etc/ltsp/dhcpd.conf - aqui utilizaremos este arquivo.

sudo mcedit /etc/ltsp/dhcpd.conf
# Mantenha descomentadas as duas linhas abaixo se vocuffff for utilizar
# placas de rede ISA em algumas das estauffffuffffes:
option option-128 code 128 = string;
option option-129 code 129 = text;

# Preste atenção na REDE!!!

shared-network WORKSTATIONS {
    subnet 192.168.100.0 netmask 255.255.255.0 {
    default-lease-time            21600;
    max-lease-time                21600;

    # Configure as opções abaixo adicionando os endereços da sua rede:

    # Mascara de sub-rede:
    option subnet-mask            255.255.255.0;

    # Broadcast:
    option broadcast-address      192.168.100.255;

    # Default gateway
    option routers                192.168.100.1;

    # Servidor DNS (endereco do DNS do provedor)
    option domain-name-servers    200.217.64.146;

    # Nome do domínio (opcional, apenas se tiver um)
    #option domain-name            "yourdomain.com";

    # Esta opção faz com que o servidor dhcp aceite apenas os clientes do
    # terminal server, no conflitando com um servidor dhcp ja existente.

    deny unknown-clients;

    # Caso prefira que o servidor DHCP dê IPs de rede local também para os
    # demais micros da rede, que não estão cadastrados como terminais, comente
    # a linha acima e descomente a linha abaixo, informando a faixa de endereços
    # que será usada pelos clientes que não estejam cadastrados como terminais:

    #range 192.168.100.21 192.168.10.100;

    # IMPORTATE!! Substitua o "192.168.100.2" pelo endereço IP do servidor,
    # se este endereço estiver errado o LTSP não funcionará! Repita o mesmo
    # endereço na opção "next-server", ela é um
    # workaround para um bug do dhcpd 3.03:

    option root-path    "192.168.100.2:/opt/ltsp42/i386";
    next-server         192.168.100.2;

    use-host-decl-names   on;
    option log-servers    192.168.100.253;

#   Não funciona se colocar o /tftpboot...
#    filename              "/tftpboot/lts/vmlinuz-2.6.17.3-ltsp-1";
    filename              "/lts/vmlinuz-2.6.17.3-ltsp-1";

    }

# ----------------------------------------------------------

# Aqui vão as configurações dos terminais, cada terminal deve
# ser configurado com um endereço IP diferente e com o endereço
# MAC de sua placa de rede.

# Para saber o endereço MAC de cada terminal, basta dar um boot
# Com o disquete do rom-o-matic, ele mostrará o endereço MAC
# logo no início do boot.

# Este endereço é único, exclusivo de cada placa de rede, é através
# dele que o servidor sabe qual terminal é qual.

# Adicione mais terminais caso necessário copiando e colando as linhas:

# terminal 1:
    host ws001 {
        hardware ethernet     00:00:00:00:00:00;
        fixed-address         192.168.100.11;
    }

# terminal 2:
    host ws002 {
        hardware ethernet     00:00:00:00:00:00;
        fixed-address         192.168.100.12;
    }

# terminal 3:
    host ws003 {
        hardware ethernet     00:00:00:00:00:00;
        fixed-address         192.168.100.13;
    }

# terminal 4:
    host ws004 {
        hardware ethernet     00:00:00:00:00:00;
        fixed-address         192.168.100.14;
    }

# terminal 5:
    host ws005 {
        hardware ethernet     00:00:00:00:00:00;
        fixed-address         192.168.100.15;
    }

# terminal 6:
    host ws006 {
        hardware ethernet     00:00:00:00:00:00;
        fixed-address         192.168.100.16;
    }

# terminal 7:
    host ws007 {
        hardware ethernet     00:00:00:00:00:00;
        fixed-address         192.168.100.17;
    }

# terminal 8:
    host ws008 {
        hardware ethernet     00:00:00:00:00:00;
        fixed-address         192.168.100.18;
    }

# terminal 9:
    host ws009 {
        hardware ethernet     00:00:00:00:00:00;
        fixed-address         192.168.100.19;
    }

# terminal 10:
    host ws010 {
        hardware ethernet     00:00:00:00:00:00;
        fixed-address         192.168.100.20;
    }

# Para usar uma placa de rede ISA no terminal, descomente as duas linhas
# abaixo e substitua o "NIC=3c509" pelo módulo da placa de rede usada.
# Não altere o "e4:45:74:68:00:00" este não é um endereço MAC, mas sim
# a string que ativa a linha com o módulo da placa!.

#        option option-128     e4:45:74:68:00:00;
#        option option-129     "NIC=3c509";

# Os terminais abaixo estão configurados para dar boot via via PXE
# (o protocolo de boot suportado por muitas placas de rede, onde basta
# configurar o micro para dar boot através da rede, no setup, ou
# pressionar F12 durante o boot). Substitua a serão referente  estação
# pelo exemplo abaixo. Veja que o que muda é a opção "filename":

# terminal PXE:
#    host ws010 {
#        hardware ethernet     00:00:00:00:00:00;
#        fixed-address         192.168.100.20;
#        filename "/tftpboot/lts/vmlinuz-2.6.17.3-ltsp-1/pxelinux.0";
#    }
}

Agora deixa-se o dhcpd3-server automático na instalação e reinicia-se:

sudo update-rc.d dhcpd3-server defaults
sudo invoke-rc.d dhcpd3-server restart

Configurando o GDM

GDM é o gerenciador de login gráfico do Gnome, padrão no Ubuntu. É necessário configurá-lo para aceitar logins remotos:

Edite o arquivo /etc/gdm/gdm.conf na linha 257 e troque Enable=false por Enable=true. Note que a edição é na seção [xdmcp]:

(...)
[xdmcp]
# Distributions: Ship with this off.  It is never a safe thing to leave out on
# the net.  Setting up /etc/hosts.allow and /etc/hosts.deny to only allow local
# access is another alternative but not the safest.  Firewalling port 177 is
# the safest if you wish to have xdmcp on.  Read the manual for more notes on
# the security of XDMCP.
Enable=true
(...)

É necessário reiniciar o servidor de login (isto vai derrubar o ambiente gráfico…)

invoke-rc.d gdm restart

Configurando o /opt/ltsp42/i386/etc/lts.conf

Este arquivo é responsável pela configuração das estações de trabalho (vídeo, teclado, mouse e periféricos). Ele não existe: no mesmo diretório se encontra o lts.conf.readme, que é uma documentação de seus parâmetros. Use como referência. Na seqüência, um exemplo geralzão:

mcedit /opt/ltsp42/i386/etc/lts.conf
[Default]
  SERVER            = 192.168.100.2
  XDM_SERVER	  = 192.168.100.2
  XSERVER           = auto
#	XSERVER            = vesa
  X_MODE_0          = 800x600 

# MOUSE
  X_MOUSE_PROTOCOL    = "Microsoft"
  X_MOUSE_DEVICE      = "/dev/ttyS0"
#  X_MOUSE_PROTOCOL   = "PS/2"
#  X_MOUSE_DEVICE     = "/dev/psaux"
  X_MOUSE_RESOLUTION  = 400
  X_MOUSE_BUTTONS     = 3

  SCREEN_01  	    = startx
  RUNLEVEL            = 5

# Dispositivos locais
  START_SAMBA = Y
  RCFILE_01	= rc.localdev
  LOCAL_DEVICE_01	= /dev/fd0:floppy
  LOCAL_DEVICE_02	= /dev/hdc:cdrom

Mais adiante veremos os ajustes para rodar os dispositivos localmente.

Configurações específicas por estação são feitas com o uma seção com o nome da estação:

[ws001]
  XSERVER            = vesa
  X_MODE_0           = 800x600
  X_MOUSE_PROTOCOL   = "Microsoft"
  X_MOUSE_DEVICE     = "/dev/ttyS0"
  SCREEN_01  	   = startx
  RUNLEVEL           = 5

Não é objeto aqui configurar todas as opções. O arquivo /opt/ltsp42/i386/etc/lts.conf.readme possui uma referência para configurações diversas, vídeo, som, impressora, etc.

Checando configuração

Vamos confirmar se todos os serviços estão rodando o ltspadmin

ltspadmin

Vamos para opção Configure LTSP:

ltspcfg - Version 0.11

Checking Runlevel....: 2
Checking Ethernet Interfaces
Checking Dhcpd.....
Checking Tftpd.......
Checking Portmapper...
Checking nfs....
Checking xdmcp...........Found: none!
Checking /etc/hosts.
Checking /etc/hosts.allow.
Checking /etc/exports.
Checking lts.conf.

Press <enter> to continue.. Configure LTSP

Pressionando <enter> temos a tela seguinte:

ltspcfg v0.11                                The Linux Terminal Server Project (http://www.LTSP.org)
  S - Show the status of all services
  C - Configure the services manually

  Q - Quit

Make a selection:

Pressione “S” para ver a situação dos serviços:

ltspcfg v0.11                                The Linux Terminal Server Project (http://www.LTSP.org)
Interface IP Address      Netmask         Network         Broadcast        Used
eth0      192.168.100.1   255.255.255.0   192.168.100.0   192.168.100.255  <-----

Service    Installed   Enabled   Running   Notes
dhcpd      Yes         Yes       Yes       Version 3
tftpd      Yes         Yes       Yes       Has '-s' flag
portmapper Yes         Yes       Yes
nfs        Yes         Yes       Yes
xdmcp      no          no        no            Using: none!

File                                Configured  Notes
/etc/hosts                          no
/etc/hosts.allow                    no
/etc/exports                        no
/opt/ltsp42/i386/etc/lts.conf       Yes

Configured runlevel: 2         (value of initdefault in /etc/inittab)
   Current runlevel: 2         (output of the 'runlevel' command)

Installation dir...: /opt/ltsp42

Press <enter> to return to the main menu...

Apesar de alguns “no”, a configuração está OK.

Dispositivos Locais

Copie o arquivo rc.localdev para a inicialização do LSTP.

# cd /opt/ltsp/i386/etc/
# cp -a rc.localdev rc.d/

Agora configuramos o autofs para montar automaticamente os dispositivos.

# apt-get install autofs

Edite o /etc/auto.master

# mcedit /etc/auto.master

Que fica assim:

 /misc /etc/auto.misc --timeout=5

Agora o “/etc/auto.misc”, onde precisam ser declarados os compartilhamentos de cada estação.

# mcedit /etc/auto.misc
ws001 -fstype=smbfs,workgroup=LTSP,guest ://192.168.100.11/drives
ws002 -fstype=smbfs,workgroup=LTSP,guest ://192.168.100.12/drives
ws003 -fstype=smbfs,workgroup=LTSP,guest ://192.168.100.13/drives
ws004 -fstype=smbfs,workgroup=LTSP,guest ://192.168.100.14/drives
ws005 -fstype=smbfs,workgroup=LTSP,guest ://192.168.100.15/drives
ws006 -fstype=smbfs,workgroup=LTSP,guest ://192.168.100.16/drives
ws007 -fstype=smbfs,workgroup=LTSP,guest ://192.168.100.17/drives
ws008 -fstype=smbfs,workgroup=LTSP,guest ://192.168.100.18/drives
ws009 -fstype=smbfs,workgroup=LTSP,guest ://192.168.100.19/drives
ws010 -fstype=smbfs,workgroup=LTSP,guest ://192.168.100.20/drives

Por último, reinicia-se o autofs:

invoke-rc.d autofs restart

Os compartilhamentos ficam disponíveis em /misc/ws001/floppy e assim por diante.

Criando Disquetes de Boot

O site ROM-O-MATIC gera imagens de boot para o LTSP para diversas placas de rede. Escolha o modelo da placa, faça o download, como no exemplo:

  To create and download an Etherboot ROM image:
  1. Choose NIC/ROM type:
  2. Choose ROM output format:
  3.(optional) To customize ROM configuration press:  [Configure]
  4. To generate and download a ROM image press:  [Get ROM]

O arquivo baixado pode ser gravado num disquete com o comando:

cat eb-5.4.2-3c509.zdsk > /dev/fd0

Criando Usuários

Cada estação deve usar um usuário diferente. Senão forem usuário pré-definidos, então cria-se algo como terminal01, terminal02, etc. É possível fazer isto no Ubuntu no menu Sistema → Administração → Usuários e Grupos.

Referência

 

5 Comentários para “LTSP no Ubuntu”


  1. http://rgou.net/sitio/index.php/2007/10/02/ltsp-no-ubuntu/…

    […][…]…

  2. muito bom esse tuto. é uma grande ajuda para qum quer começar no LTSP. valeu

  3. Excelente!

  4. Me ajudou na questão dos dispositivos locais… valeu!

  5. LTSP no Ubuntu

    ola estou com problema na configuracao do dhcop
    vc poderia me mandar 1 email
    ai passaria a configuracao sertinha do que esta acontecendo

    aguardo

Deixe um comentário