Recentemente resolvi aprender de vez a como configurar um sistema de Terminais Leves com LTSP, o Linux Terminal Server Project. Achei interessante utilizar o DreamLinux para ser um servidor LTSP pelos seguintes motivos:
- A base é Debian, 100% GPL, extremamente flexível e escalável e com uma comunidade com milhares de usuários.
- O Projeto DreamLinux chamou não só a minha atenção, bem como a do Guto, responsável pela área técnica do Projeto Casa Brasil para o Centro Oeste e também do Rogério Fox, implementador do projeto GESAC e responsável pelo Grupo de Usuários do BROffice.org do Mato Grosso, pelo esmero dos desenvolvedores em criar uma solução leve, robusta e agradável de ser utilizada.
- O XFCE é altamente indicado para soluções em LTSP em terminais antigos.
- O MKDistro constitui ferramenta importantíssima para que se possa criar uma distro específica para LTSP, já com os serviços todos pré-configurados.
Quase toda a base desse tutorial teve como referência o excelente artigo do Carlos Morimoto no Guia do Hardware
A principal alteração que fiz foi substituir o inetd pelo xinetd
Não abordei a utilização do recurso de som nem no servidor, nem nos terminais pelo motivo de que esta implementação foi testada em um ambiente de biblioteca. Mas para quem desejar ter esses recursos, é só seguir a documentação do Morimoto, que tudo sairá certinho.
Vamos utilizar a base “Testing” do Debian, portanto a primeira coisa a fazer é editar o /etc/apt/sources.list
=====================================
# vim /etc/apt/sources.list
=====================================
(eu estou acostumado com VIM, mas você pode usar o editor de sua preferência)
Altere a linha
deb http://ftp.br.debian.org/debian testing main contrib non-free
Para
deb http://linorg.usp.br/debian testing main contrib non-free
(uso o espelho da USP pois é mais rápido)
e comente o restante das linhas
Sai do vim e atualize a lista de pacotes
=====================================
# apt-get update
=====================================
Vamos utilizar o aptitude no lugar do tradicional apt-get pois ele resolve melhor as dependências
=====================================
# apt-get install aptitude
=====================================
O DreamLinux possui um utilitário para efetuar o backup das configurações antes de atualizar o sitema e depois restaurá-las quando a atualização for concluída. Rode o seguinte comando:
=====================================
# upgrade-wizard.sh
=====================================
Selecione a primeira opção, que é realizar o backup, e quando estiver concluído, atualize o sitema
=====================================
# aptitude upgrade
=====================================
Depois que o sitema estiver atualizado rode novamente o comando
=====================================
# upgrade-wizard.sh
=====================================
e selecione a segunda opção para restaurar as configurações
O ltsp usa o serviço de tftp que deve ser configurado para inicializar não como um daemon, mas pelo inetd, economizando recursos do servidor
O DreamLinux vem com o openbsd-inetd, mas depois de alguma leitura, resolvi usar o xinetd que possui uma série de vantagens, entre elas:
- Limitação de conexões:
- taxa de conexões recebidas por intervalo de tempo
- número de conexões por host
- número de conexões por serviço
- Controle de acesso mais sofisticado:
- Feito pelo próprio daemon, dispensando o TCPWrappers
- Por host, IP, domínio ou sub-rede
- por horário
- Controle de logs:
- limitação do tamanho de cada arquivo de log
- Nível de logging de cada serviço pode ser configurado de forma independente
- Desvio de conexões
- Um fluxo TCP pode ser redirecionado para outro host e/ou porta de forma transparente.
- Suporte a IPv6
Além disso a configuração dos serviços é modularizada, ou seja, um arquivo para cada serviço, todos em /etc/xinetd.d/*, de forma que fica tudo muito organizado.
Desinstale o pacote openbsd-inetd
=====================================
# aptitude purge openbsd-inetd
=====================================
Instale o xinetd
=====================================
# aptitude install xinetd
=====================================
Instale os serviços básicos
=====================================
# aptitude install dhcp3-server tftpd-hpa portmap nfs-common nfs-kernel-server ltsp-utils
=====================================
Como queremos que o tftpd-hpa inicialize pelo xinetd e não como um daemon, remova as entradas dele do rc.d
=====================================
update-rc.d -f tftpd-hpa remove
=====================================
Ajuste o rcconf para fazer os serviços nfs-common e nfs-kernel-server inicializarem automaticamente e desative o tftpd-hpa
=====================================
# rcconf
=====================================
Marque as seleções
[*] nfs-common
[*] nfs-kernel-server
e desmarque
[ ] tftpd-hpa
e dê um OK
O serviço tftpd-hpa vem desabilitado por padrão. Ative o serviço editando o arquivo tftp-hpa
=====================================
# vim /etc/default/tftpd-hpa
=====================================
e deixe-o como abaixo:
RUN_DAEMON=”yes”
OPTIONS=”-l -s /tftpboot”
Salve e saia do vim
Vamos agora instalar o ltsp propriamente dito. Nós poderíamos utilizar o ltspadmin e instalar pela rede, mas além de demorado, caso algo saia errado você terá que começar tudo do zero. Portanto vamos primeiro baixar a imagem .iso, montá-la e utilizá-la como fonte de instalação
Baixe a imagem iso do site do ltsp.org
=====================================
# wget http://ltsp.mirrors.tds.net/pub/ltsp/isos/ltsp-4.2u2-0.iso
=====================================
O arquivo tem cerca de 100MB, então vai demorar um pouco, dependendo da sua conexão
Crie um diretório para montar a imagem e monte com os comandos
=====================================
# mkdir /mnt/ltsp
# mount -o loop ltsp-4.2u2-0.iso /mnt/lstp
=====================================
Rode o configurador do LSTP
=====================================
# ltspadmin
=====================================
Selecione a segunda opção “Configure the installer options” e configure de acordo com o que está abaixo
Where to retrieve packages from?
file:///mnt/lstp
In which directory would you like to place the LTSP client tree?
/opt/ltsp
A não ser que você esteja sob um proxy, a terceira e quarta opções podem ser ignoradas
Pressione “y” para aceitar as alterações. Isso fará voltar para a tela inicial do configurador.
Selecione agora a primeira opção “Install/Update LTSP Packages”
Pressione “a” para selecionar todos os componentes e depois “q” para sair e iniciar a instalação
Quando concluir a instalação, o configurador voltará à tela inicial, então pressione “q” para sair do configurador
Com isso a instalação do lstp está concluída, mas ainda faltam as configurações
Vamos contar com a ajuda do Morimoto que disponibilizou alguns modelos de configurações
Acesse http://www.guiadohardware.net/kurumin/modelos/kurumin-terminal-server/4.2/ e baixe os seguinte modelos:
- dhcpd.conf
- exports
- hosts
- hosts.allow
- lts.conf
Faça backup dos arquivos originais copie os arquivos modelos
=====================================
# mv /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf.old
# cp -f dhcpd.conf /etc/dhcp3/dhcpd.conf
# mv /etc/exports /etc/exports.old
# cp -f exports /etc/exports.conf
# mv /etc/hosts /etc/hosts.old
# cp -f hosts /etc/hosts
# mv /etc/hosts.allow /etc/hosts.allow.old
# cp -f hosts.allow /etc/hosts.allow
# cp -f lts.conf /opt/ltsp/i386/etc/lts.conf
=====================================
Edite os arquivos de acordo com as características da sua rede
dhcp.conf
=====================================
# vim /etc/dhcp3/dhcp.conf
=====================================
Este arquivo está muito bem comentado pelo Morimoto, e não tem nenhum segredo. Na seção “group” basta alterar o endereço MAC e IP de cada terminal
exports
=====================================
# vim /etc/exports
=====================================
Aqui também é tranquilo, bastando alterar sub-rede e máscara
hosts
=====================================
# vim /etc/hosts
=====================================
Basta alterar a sub-rede e tomar o cuidado com a primeira linha. Ela DEVE conter o nome de host do seu servidor.
hosts.allow
=====================================
# vim /etc/hosts.allow
=====================================
Aqui é só a sub-rede mesmo.
lts.conf
=====================================
# vim /opt/ltsp/i386/etc/lts.conf
=====================================
Este arquivo fui muito bem comentado pelo Morimoto, inclusive explicando os parâmetros para habilitar o acesso aos dispositivos locais
xinetd
O xinetd funciona de maneira modular, com um arquivo de configuração para cada serviços, todos em /etc/xinetd.d/
Crie um arquivo para o serviço tftpd-hpa
=====================================
# vim /etc/xinetd.d/tftpd-hpa
=====================================
e cole o seguinte conteúdo nele
=====================================echo ‘user_allow_other’ > /etc/fuse.conf
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot -r blksize
}
=====================================
Salve, saia e reinicie os serviços
=====================================
# /etc/init.d/xinetd restart
# /etc/init.d/dhcp3-server restart
# /etc/init.d/portmap restart
# /etc/init.d/nsf-common restart
# /etc/init.d/nsf-kernel-server restart
=====================================
Para dar suporte aos dispositivos locais, devemos instalar o pacote ltsp-server-pkg-debian_0.1_i386.deb. Porém, ele foi criado para o Debain Sarge, causando um erro de dependência se for instalado. Para solucionar iso, o Morimoto disponibilizou um pacote fuse-source.deb, que resolve essa dependência
=====================================
# wget http://www.guiadohardware.net/kurumin/download/fuse-source.deb
# dpkg -i fuse-source.deb
# dpkg -i ltsp-server-pkg-debian_0.1_i386.deb
# aptitude install fuse-utils libfuse2 libx11-protocol-perl
=====================================
Carregue o módulo fuse e configure para carregar no boot
=====================================
# modprobe fuse
# echo ‘fuse’ >> /etc/modules
# echo ‘user_allow_other’ > /etc/fuse.conf
=====================================
Para que cada usuário possa acessar os dispositivos locais, ele deve ser membro do grupo “fuse”
Execute os passos a seguir para fazer isso
=====================================
# cd /home
# for i in *; do adduser $i fuse; done
=====================================
Configure o GDM para aceitar sessões remotas
Abra o Painel de Controle do DreamLinux e vá em “Janela de Login”
Clique na aba “Remoto” e no campo “Estilo”, selecione “O mesmo que local”
Em “Mensagem de boas vindas” você pode personalizar sua mensagem selecionando “Adaptado”
Clique no botão “Configurar XDMCP…”
Marque a caixa “Honrar pedidos indiretos”
No ítem “Telas gráficas por máquina” coloque 1
No ítem “Intervalo entre pings” coloque 5
Depois das alterações efetuadas, reinicie o serviço GDM
=====================================
# /etc/init.d/gdm restart
=====================================
Agora é só configurar o seu xfce para esconder ítens que você julgue desnecessários em um ambiente LTSP
Referências:
Guia do Hardware
Home Page do Laureano
DreamLinux Forum
Projeto LTSP