LTSP 4.2 em OpenSuSE 10.2/10.3

O LTSP (Linux Terminal Project) permite adicionar suporte de terminais a servidores Linux. O LTSP é uma solução fléxivel e de baixo custo que permite instalar computadores pessoais. Permite transformar computadores antigos, que já não conseguem correr um S.O recente em condições, em computadores recentes, onde os utilizadores podem navegar na Internet, ver o email, criar documentos e correr outras aplicações.

Esta foi uma solução que implementei no meu local de trabalho e que agora partilho aqui. Existem inumeros tutoriais pela internet acerca disto, mas aqui irei falar sobre a minha experiência na instalação e configuração.

Neste tutorial vamos configurar o LTSP e posteriormente configurar o ambiente de trabalho diferenciando utilizadores. Um Administrador (ou um funcionário da informática) vai ter aplicações diferentes de um utilizador normal.

 

Nota: Este tutorial está longe de estar terminado. Á medida que for configurando e instalando o servidor, irei adicionar aqui. De qualquer forma, o que já está aqui colocado é suficiente para configurar um LTSP e ficar a correr nos terminais.

Caracteristicas do servidor

  • 3GB memoria
  • 2x Intel PIII 1133MHz
  • 2x 36Gb HDD
  • 2x 10/100 Mbit Intel Ethernet Pro
  • VGA ATI Rage XL

Sistema Instalado

  • OpenSuSE 10.2 (completamente actualizado)
  • LTSP 4.2
  • KDE 3.5.5 (desktop para os clientes, com alterações posteriores)

 

14/08/2007

Instalação

Programas necessários que devem estar instalados no servidor:

  • dhcp-server
  • dhcp-tools
  • tfpt-server
  • nfs-server
  • yast2-tftp-server
  • yast2-nfs-server
  • yast2-dhcp-server

Ir ao site do LTSP e fazer o download do ltsp-utils-0.25.0-noarch.rpm (apesar de estar indicado para Fedora/Redhat, funciona em OpenSuSE). Assim que tivermos efectuado o download, instalar:

rpm -ivh ltsp-utils-0.25.0-noarch.rpm

Executar o ltspadmin. Deverá aparecer o seguinte ecran:

ltspadmin – v0.17 LTSP dir: /opt/ltsp

LTSP Administration Utility

Install/Update LTSP Packages
Configure the installer options
Configure LTSP

Quit the administration program

Press <Enter> to Select N-Next P-Prev Q-Quit

Selecionar a primeira opção – Install/Update LTSP Packages. Essa opção irá mostrar todos os pacotes a serem instalados. Pressione A para selecionar todos e Q para começar o download e instalação.

Assim que terminar, voltamos ao menu inicial e escolhemos a terceira opção – Configure LTSP. Esta opção irá verificar os serviços que temos instalados e mostrará resumo de tudo:

ltspcfg – Version 0.16

Checking Runlevel….: 5
Checking Ethernet Interfaces
Checking Dhcpd..dhcpd off

Checking Tftpd…….
Checking Portmapper..portmap on
.
Checking nfs..nfs on
.
Checking xdmcp…………Found: kdm Using: kdm
Checking /etc/hosts.
Checking /etc/hosts.allow.
Checking /etc/exports.
Checking lts.conf.

Press <enter> to continue..

A seguir, vamos ver as seguintes opções:

ltspcfg v0.16 The Linux Terminal Server Project (http://www.LTSP.org)

S – Show the status of all services
C – Configure the services manually

Q – Quit

Escolhemos a opção S para visualizar os serviços que estão a correr e/ou instalados:

Make a selection:

ltspcfg v0.16 The Linux Terminal Server Project (http://www.LTSP.org)

Interface IP Address Netmask Network Broadcast Used
bond0 192.168.2.2 255.255.255.0 192.168.2.0 192.168.2.255
eth0 192.168.2.2 255.255.255.0 192.168.2.0 192.168.2.255
eth1 192.168.2.2 255.255.255.0 192.168.2.0 192.168.2.255

Service Installed Enabled Running Notes
dhcpd Yes Yes no Version 3
tftpd Yes no no Has ‘-s’ flag
portmapper Yes Yes no
nfs Yes Yes no
xdmcp Yes no no kdm Using: kdm

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

Configured runlevel: 5 (value of initdefault in /etc/inittab)
Current runlevel: 5 (output of the ‘runlevel’ command)

Installation dir…: /opt/ltsp

Press <enter> to return to the main menu…

Ao pressionar <enter> vamos voltar novamente ao menu anterior e vamos escolher a opção C – Configure the services manually, e deparamos com o seguinte menu:

ltspcfg v0.16 The Linux Terminal Server Project (http://www.LTSP.org)

1 – Runlevel
2 – Interface selection
3 – DHCP configuration
4 – TFTP configuration
5 – Portmapper configuration
6 – NFS configuration
7 – XDMCP configuration
8 – Create /etc/hosts entries
9 – Create /etc/hosts.allow entries
10 – Create /etc/exports entries
11 – Create lts.conf file

R – Return to previous menu
Q – Quit

Make a selection:

Vamos percorrer todas as opções e aceitar (na maioria das vezes) as opções sugeridas por defeito. Se alguma opção eventualmente der erro, é porque o programa em causa não deverá estar instalado.

No meu caso ele não conseguiu configurar o servidor de ltsp, o que fez com que tivesse que o ir configurar ao Yast2 (apenas activar).

Voltamos ao menu anterior e deixamos por enquanto o ltspadmin a correr. Numa nova consola, vamos configurar os serviços.

dhcp

O programa de configuração do ltsp criou-me um ficheiro de exemplo de dhcp. Aproveitei este ficheiro e fiz as minhas alterações:

# dhcpd.conf

ddns-update-style none;

option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.2;
option domain-name-servers 172.17.1.1, 172.17.1.8;
option domain-name "<colocar o dominio>";

option option-128 code 128 = string;
option option-129 code 129 = text;

use-host-decl-names on;

get-lease-hostnames true;

next-server 192.168.0.2;
option root-path "192.168.0.2:/opt/ltsp/i386";

subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.100 192.168.2.199;
if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
filename "/lts/2.6.16.1-ltsp-1/pxelinux.0";
}
else{
filename "/lts/vmlinuz-2.6.16.1-ltsp-1";
}

#Declaracao de maquinas
# Futro da Informatica
host futro13 { hardware ethernet xx:xx:xx:xx:xx;
fixed-address 192.168.2.155;
}
}

Após ter o dhcp.conf configurado, vamos verificar o tftp, que se encontra em /etc/xinet.d. Para alterar, basta em disabled = no, colocar yes.

# default: off
# description: tftp service is provided primarily for booting or when a
# router need an upgrade. Most sites run this only on machines acting as
# "boot servers".
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
}

Vamos verificar se o NFS contem as entradas correctas. Editar o ficheiro /etc/exports e verificar se os IPs estão correctos para a nossa rede.

/opt/ltsp 192.168.2.0/255.255.255.0(ro,no_root_squash,sync)
/var/opt/ltsp/swapfiles 192.168.2.0/255.255.255.0(rw,no_root_squash,async)

Após confirmar-mos, vamos a /opt/ltsp/i386/etc e editamos o ficheiro lts.conf e verificamos as opções. Este ficheiro configura globalmente o comportamento dos terminais, embora se possam efectuar configurações para computadores especificos. Estas são algumas opções globais (existem a que estavam por defeito, mas eu acrescentei algumas, que neste momento só servem para experimentar.

[Default]
SERVER = 192.168.2.2
XSERVER = auto
DNS_SERVER = 172.17.1.1 172.17.1.8
SEARCH_DOMAIN = hal.min-saude.pt
X_MOUSE_PROTOCOL = "IMPS/2"
X_MOUSE_DEVICE = "/dev/psaux"
X_MOUSE_RESOLUTION = 400
X_MOUSE_BUTTONS = 5
USE_XFS = N
SCREEN_01 = startx
X_MODE_0 = 1024×768
X4_MODULE_01 = "glx"
XkbLayout = "pt"
XkbModel = "pc105"

 

Após esta configuração, vamos arrancar com os serviços necessários:

  • dhcpd
  • nfsserver
  • xinetd

Assim que os serviços estejam a correr, vamos executar o comando ltspcfg para verificar se está tudo como deve ser.

Para confirmar, editem o ficheiro /opt/kde3/share/config/kdm/kdmrc e verifiquem se as seguintes linhas estão iguais no vosso ficheiro:

[Xdmcp]
# Whether KDM should listen to incoming XDMCP requests.
# Default is false
Enable=True
# The UDP port on which KDM should listen for XDMCP requests. Do not change.
# Default is 177
Port=177
# File with the private keys of X-terminals. Required for XDM authentication.
# Default is ""
#KeyFile=/opt/kde3/share/config/kdm/kdmkeys
# XDMCP access control file in the usual XDM-Xaccess format.
# Default is "/etc/X11/xdm/Xaccess"
Xaccess=/etc/X11/xdm/Xaccess

Se ele não se queixar, vamos experimentar com um terminal, ou computador que arranque por PXE.

Após o primeiro teste, a coisa correu bem.

 

Activar os dispositivos locais

Os dispositivos locais nos terminais são uma grande ferramenta para LTSP. Imaginem colocar uma PEN USB e remotamente terem acesso a ela. Para isso, vamos ter que efectuar umas alterações no dhcp.conf

 

Se tivermos a dar IPs aos terminais (como temos no exemplo em cima), verificar se temos a seguinte linha:

use-host-decl-names on;

Se estivermos a atribuir IPs dinâmicamente (sem entradas de host), adicionar a linha:

get-lease-hostnames true;

As duas linhas são exclusivas, ora temos uma ou temos a outra. O seguinte passo é instalar o fuse. Para isso, usamos o Yast2. Assim que o Yast2 tiver terminado, numa consola, fazemos:

modprobe fuse

Para garantir que o módulo é carregado em cada reboot, editar o ficheiro /etc/sysconfig/kernel, procurar a linha que diz MODULES_LOADED_ON_BOOT="fuse" e acrescentar o modulo (como está no exemplo).

Agora, precisamos de instalar o modulo de PERL para o X11 para as notificações dos dispositivos:

perl -MCPAN -e shell

install X11::Protocol

Nota: No OpenSuSE não é preciso adicionar o utilizador ao grupo fuse.

O Proximo passo é instalar o pacote de suporte aos dispositivos locais. Para isso, fazemos o download do pacote ltsp-server-pkg-fedora-0.1-1.i386.rpm e instalamos:

rpm -i ltsp-server-pkg-fedora-0.1-1.i386.rpm –nodeps

Usamos o –nodeps porque as bibliotecas de PERL adicionadas foram instaladas usando MCPAN e não o RPM. Como algumas ferramentas não se comportam bem com pacotes instalados sem dependencias, vamos remover da base de dados do RPM o pacote instalado em cima:

rpm -e ltsp-server-pkg-fedora-0.1-1.i386.rpm –justdb

Activar o dispositivo nos clientes

Editamos o /etc/ltsp/i386/etc/lts.conf e na secção [default] acrescentamos a linha:

LOCAL_STORAGE = Y

Activar a libusb para arranque automático

Como o RPM foi feito para o fedora, o lbussd não arranca automáticamente. Para contornar-mos este assunto, editamos o ficheiro /etc/X11/xinit/xinitrd e adicionamos a seguinte linha antes de uma que diga: ‘exec $WINDOWMANGER’.

sh /etc/X11/xinit/xinitrc.d/lbus-start.sh

Se existirem utilizadores com o ficheiro ~/.xinitrc, tem que adicoinar a linha em cima a esse ficheiro. Para um sistema com KDE, basta adicionar o seguinte link:

mkdir /opt/kde/env
cd /opt/kde/env
ln -s /etc/X11/xinit/xinitrc.d/lbus-start.sh

Alterar o icon do dispositivo

Se desejarem alterar o icon do dispositivo, basta editar o ficheiro /etc/ltsp-localdev.conf e alterar a seguinte linha:

 

 

FOLDER_ICON="usbpendrive_unmount"

Podem colocar um caminho completo para um icon, ou deixar como está em cima que vai aparecer um icon na mesma.

 

16/08/2007

 

Configurar o som nos terminais

O LTSP é fantástico, mas se os utilizadores não tiverem som, não vale de nada. Para configurar o som, temos que editar o ficheiro /opt/ltsp/i386/etc/lts.conf e acrescentar as linhas seguintes. Podem configurar na secção [Default] para afectar todos os clientes (atenção que os clientes poderão ser diferentes e ter placas de som de fabricantes diferentes) ou realizar uma configuração personalizada.

 

 

SOUND              = Y
SOUND_DAEMON       = alsa

Assim que tivermos editado o ficheiro, vamos instalar o pacote ltsp-sound-1.0-0.1.noarch.rpm. Com o seguinte comando, instalamos:

 

rpm -ivh ltsp-sound-1.0-0.1.noarch.rpm

Instalámos o pacote, e agora vamos configurar o alsa. O Alsa permite melhor som, compativel com os Kerneis 2.6 (o OSS está a desaparecer) e permite um controlo superior da placa de som. Vamos buscar o pacote LTSP-esd-alsa_1.0.0-2.tgz (ultima versão) ao Sourceforge. Para visitar o site do LTSP onde está esta documentação, carreguem aqui. Facam download do pacote e instalem:

tar -zxvf LTSP-esd-alsa_1.0.0-2.tgz

cd LTSP-esd-alsa/

./install

Só têm que responder a uma questão e está feito. Tornamos a editar o ficheiro /etc/ltsp/i386/etc/lts.conf onde vamos acrescenter uma configuração personalizada, pois o computador que estou a usar para testes tem motherboard Intel e a placa de som usa o modulo snd_intel8x0.

O terminal chama-se futro13 (modelo futro, fujitsu-siemens). Criamos uma configuração personalizada para todos os futros, pois todos têm as mesmas caracteristicas:

[futro]
        MODULE_01          = button
        RCFILE_01          = acpid
        SOUND              = Y
        SOUND_DAEMON       = nasd
        VOLUME             = 80
        SMODULE_01         = snd_intel8x0

Seguidamente, vou criar uma para o meu terminal, que vai ter como base a configuração em cima (placa som intel) :

[futro13]
        LIKE               = futro

Só tem duas linhas, mas com a configuração da impressora, vamos ter mais coisas. Por exemplo, se quisessem personalizar o som para este terminal, bastava acrescentar a linha VOLUME = XX e tinhamos uma configuração diferente só para este terminal. Se tudo correu bem, reiniciamos o terminal e já vamos ter som.

ACPI

É possivel configurar os terminais para terem suporte de ACPI. Desta forma poderemos fazer com que os terminais encerrem normalmente. Vamos fazer o download do ACPI-1.0.6 ou mais recente: http://sourceforge.net/project/showfiles.php?group_id=33140

Fazemos o download da source, descomprimimos e compilamos:

tar -zxvf acpid-1.0.6.tar.gz

cd acpid-1.0.6

make

Desta forma, temos o binário compilado.

Nota: Uma vez que compilamos o binário no servidor (OpenSuse 10.2) vamos compilar com a glibc-2.5.x. O LTSP usa a glibc-2.3.x o que vai tornar o binário incompativel. No meu caso e como tenho outro servidor de LTSP pude copiar o ficheiro. Deixo aqui o acpid com a versão glibc-2.3.x para o LTSP-4.2.

Copiamos o binário para a localização certa.

    cp acpid /opt/ltsp/i386/sbin

Não esquecer de dar permissões de execução: chmod +x acpid

Criamos o ficheiro power.sh em /opt/ltsp/i386/bin

Damos permissões de execução (talvez não a forma mais correcta, mas dá erro se não for executável por todos):

chmod 777 power.sh

Criamos a directoria para o serviço:

mkdir /opt/ltsp/i386/etc/acpid

 

Nessa directoria vamos copiar ou criar o ficheiro acpid.conf. Este ficheiro vai configurar o daemon para executar alguma acção caso exista um evento de shutdown.

 

 

Criamos o ficheiro racpid em /opt/ltsp/i386/etc/rc.d. Este ficheiro vai servir para iniciar o serviço de acpid a partir do ficheiro lts.conf.

 

Se seguinda, editamos o ficheiro /opt/ltsp/i386/etc/lts.conf e adionamos as seguintes linhas (ou em default, ou, neste caso, em [futro]):

MODULE_01 = "button"
RCFILE_01 = rcacpid

Fazemos reboot ao terminal e quando ele arrancar, se tudo correu bem, basta carregar no botão e o terminal desliga-se. Para verem se alguma coisa falha, basta no ficheiro lts.conf em SCREEN_01 = colocar shell (reboot ao terminal) e executar tail -f /var/log/messages e carregarem no botão e verificar quais as mensagens que aparecem.

Para mais informações, vejam http://wiki.ltsp.org/twiki/bin/view/Ltsp/WorkInProgress#Shutdown_LTSP_terminal_using_ACP

 

Leave a Reply

Your email address will not be published. Required fields are marked *