Ferramentas do usuário

Ferramentas do site


dispositivoslocais

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

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>
dispositivoslocais.txt · Última modificação: 2015/01/19 23:34 por mafra