Voltar para página do projeto
Configuração de dispositivos locais (disquete, cdrom)
Idéia básica: clientes LTSP iniciam com kernel linux suportando supermount e servidor samba. Durante o processo de boot, clientes lêem arquivo de configuração lts.conf, descobrem o dispositivo de disquete e CD-ROM, iniciam um servidor samba com os parâmetros de dispositivo local e disponibilizam os dispositivos via samba (por padrão, em /tmp/drives/<dispositivo>). Adicionalmente, quando um usuário inicia uma seção gráfica num terminal LTSP, o diretório dos dispositivos neste terminal são montados via samba pelo servidor dentro do home daquele usuário (por padrão, no diretório $HOME/drives).
Referências
Teoria básica: http://www.ltsp.org/localdev.txt
Instalação mais apurada: http://wiki.ltsp.org/twiki/bin/view/Ltsp/LocalMedia
Processo de instalação e configuração
Download do pacote ltsp_localdev
Fazer o download do pacote ltsp_localdev usando o script ltspadmin.
Instalar o cliente samba no servidor LTSP. No debian:
$ apt-get install smbfs
Editar lts.conf
Editar o arquivo de configuração do LTSP lts.conf (no nosso caso, em /usr/ltsp-4.1/i386/etc/lts.conf). Aqui, habilitou-se somente o acesso local à disquete para todos os clientes (seção “[default]” do arquivo):
LOCAL_DEVICE_01 = /dev/fd0:disquete
OBS.: Caso se utilize um outro dispositivo local como CD-ROM, faça:
LOCAL_DEVICE_02 = /dev/hdc:cdrom
Montagem dos dispositivos no home do usuário
Até este ponto, o acesso aos dispositivos em cada terminal LTSP é possível via shell, habilitando tal acesso colocando SCREEN_02 = shell na seção “[default]” do lts.conf. Com esta opção habilitada, acesse o conteúdo do disquete no diretório /tmp/drives/disquete ou então via samba usando um gerenciador de arquivos (konqueror ou nautilus por exemplo) digitando smb:/nobody@<IP_do_terminal>/drives na barra de endereços.
Para facilitar o uso, o local de acesso à disquete no terminal LTSP é direcionado para o diretório pessoal do usuário logado neste terminal (“home”) através dos scripts LDA-setup.sh e LDA-shutdown.sh. O primeiro monta o diretório dos dispositivos no home de um usuário com restrições de acesso apropriadas. O segundo script desmonta aquele diretório.
Estes scripts são executados pelo gerenciador de login usado (e.g., GDM ou KDM) no servidor LTSP. Verifique a página-fonte para obter informações sobre como realizar a configuração adequada para o seu gerenciador de login.
No GDM (caso corrente), depois de copiar os scripts para /usr/local/bin e atribuir permissões de execução, acrescentou-se as linhas:
/usr/local/bin/LDA-setup.sh em /etc/gdm/PostLogin/Default /usr/local/bin/LDA-shutdown.sh em /etc/gdm/PostSession/Default
Observações:
(a) Nesta instalação, substituiu-se o arquivo /usr/ltsp-4.1/i386/etc/rc.localdev pelo arquivo rc.localdev contido no pacote de atualizações em:
http://wiki.ltsp.org/twiki/pub/Ltsp/LocalMedia/localdev-4.1.1-r1.tgz.
Nesta atualização, o diretório dos dispositivos montados via samba tem permissão do usuário nobody ao invés do usuário root.
(b) Nesta solução, os diretórios são montados mais de uma vez no diretório do usuário (home) via samba mais de uma vez caso a sessão gráfica não se encerre normalmente executando o logout. Para evitar isto, uma solução simples pode ser adotada. Edite o arquivo LDA-setup.sh e acrescente alguma linha que verifique se o diretório já está montado, algo parecido com (verifique se as variáveis shell do exemplo abaixo correspondem ao do script! ():
## verificando se já está montado df | grep ${MYNAME} ISMOUNTED=$? if [ $ISMOUNTED -eq 0 ] ; then umount ${HOMEDIR}/drives #echo "`date +%c`: desmontou ${HOMEDIR}/drives" >> /tmp/debug fi
Adicionalmente, crie um script para o servidor LTSP desmontar automaticamente os pontos SMB “zumbis”, ou seja, que estão montados mesmo com o cliente LTSP desligado. Como sugestão, este script pode ter um conteúdo similar às seguintes linhas:
!/bin/bash HOMEDIR=drives COMMAND=mount.smbfs for i in `ps -o "%a" x | grep $COMMAND | grep $HOMEDIR | cut -f2 -d " "`; do CLIENT=`echo $i | cut -f3 -d "/"` ping -q -c 1 $CLIENT > /dev/null 2>&1 if [ $? -ne 0 ]; then umount $i fi done
Depois, ponha este script no crontab para executar, por exemplo, de 1 em 1 minuto:
0-59/1 * * * * root <localização_do_script>