Ubuntu, a aventura com o LTSP

Ubuntu, a distribuição de Linux mais usada no mundo. Simples de usar, agradável à vista, facilita muito quem pretende deixar o windows e mudar-se para melhor.

No HAL, como já coloquei aqui, temos uma instalação de LTSP 4.2. Esta versão, muito estável, é complicadissima de configurar alguns detalhes, tais como as aplicações locais. O LTSP vai na versão 5.0, embora ainda só esteja a funcionar em pleno no Ubuntu 7.10. Assim, decidimos avançar com esta versão para os nossos utilizadores e deixar a instalação do OpenSuse 10.3 com LTSP 4.2.

 

Quais as vantagens da versão 5.0 (e de usar Ubuntu) ?

Para começar, a instalação. Os programadores do Ubuntu realmente fizeram um belo trabalho, e ao mesmo tempo que contribuiam para o desenvolvimento do LTSP 5, criaram uma série de scritps na distribuição para auxiliar a instalação.

Assim que se executar o script, o LTSP está pronto a usar.

Na versão 5.0, a instalação de aplicações efectua-se com o gestor de pacotes da própria distribuição, tendo assim aplicações locais, que correm directamente no cliente e não no servidor. Suporte para dispositivos amoviveis vem logo a funcionar, sem ser preciso fazer nada.

Tendo indicado algumas vantagens, vamos à instalação.

 

Passos na instalação

    1 – Instalar Ubuntu (Ubuntu Server 7.10)

    2 – Instalar LTSP

    3 – Personalizar

 

No final iremos ter uma instalação de Ubuntu, com bonding activado, suporte de LDAP,  LTSP 5.0 com todo o ambiente gráfico em Português, suporte para videos, flash, PDF, etc…

 

Instalação

Foi optada pela versão servidor porque a versão para desktop não arrancou no servidor. Foi escolhida a lingua portguesa durante a instalação, mas depois foi constadado que havia muitos elementos que não estavam em português. Assim que foi instalado o sistema e arrancou pela primeira vez, foi efectuado um upgrade a todo o sistema. Em primeiro lugar, foram actualizadas as sources do apt.

    apt-get update

Assim que foram actualizadas, foi actualizado todo o sistema:

    apt-get upgrade

Com o sistema completamente actualizado, foi instalado o ambiente gráfico. Uma das coisas boas do Ubuntu, e mesmo sem experiência quase nenhuma a mexer com este Linux, a facilidade em instalar um desktop é maravilhosa. Seja qual for o desktop, o apt trata de tudo:

    apt-get install ubuntu-desktop (para Gnome)

    apt-get install kubuntu-desktop (para Kde)

    apt-get install xubuntu-desktop (para Xfce)

Estando o ambiente gráfico instalado, segue-se a rede.

Bonding

Configurar o bonding em Ubuntu também é relativamente simples. Para garantir que o módulo é carregado no arranque do sistema, vamos editar o ficheiro /etc/modules e acrescentar a seguinte linha:

    bonding mode=802.3ad miimon=100

O parâmetro mode explicita ao módulo o que fazer. O parâmetro miimon especifica o intervalo de monitorização em milisegundos.

A seguir, instalamos o aplicativo ifenslave. Este aplicativo permite "escravizar" as interfaces de rede numa master lógica.

    apt-get install ifenslave-2.6

A seguir, editamos o ficheiro /etc/network/interfaces . Este ficheiro contém as informações sobre as interfaces de rede e respectivas configurações. Provavelmente o ficheiro já lá contém alguma informação. Comentamos ou apagamos todas as linhas que dizem respeito às interfaces, excepto a lo, e acrescentamos:

    auto bond0

    iface bond0 inet static

    address 10.0.0.10

    netmask 255.255.255.0

    gateway 10.0.0.254

    broadcast 10.0.0.255

    dns-nameservers 10.0.0.1

    post-up ifenslave bond0 eth0 eth1

    pre-down ifenslave -d bond0 eth0 eth1

As linhas post-up e pre-down certifica que as interfaces são "escravizadas" e posteriormente libertas quando a interface lógica bond0 é inicializada ou desligada.

Reiniciar a máquina para verificar se tudo corre bem.

Nota: Esta configuração de bonding foi retirada do Pascal’s TechBlog

Configurar o LDAP

Como desejamos que os nossos utilizadores possam entrar na máquina, e como os temos todos numa àrvore LDAP, vamos colocar suporte no Ubuntu. Além dos grupos de LDAP, iremos também fazer com que pertençam ao grupo do fuse (para suporte dos dispositivos amoviveis) e outros grupos necessários, mas que só existem no servidor (próprios da distribuição).

Como root (ou utilizamos o sudo) executamos:

    apt-get install auth-client-config libpam-ldap libnss-ldap

Quando aparecerem as perguntas, respondemos:

    Should debconf manage LDAP configuration: <SIM>

    ldapi:///<hostname ou Ip do servidor de ldap>

    Distinguished name: dc=domainname,dc=com

    LDAP Version to use: 3

    Make local root Database admin: <SIM>

    Does LDAP database require login: <NÃO>

    LDAP account for root: cn=Manager,dc=domainname,dc=com

    LDAP root account password: A password do Manager

As respostas a estas perguntas todas deviam ser suficientes, mas não são. Para isso, vamos editar o ficheiro /etc/ldap.conf e alterar alguns detalhes (alterar as linhas indicadas se nao corresponderem – o que já estiver no ficheiro para além destas linhas deixar estar).

    host <o ip do servidor de ldap ou o DNS> <servidor secundário>

    base dc=domainname,dc=com

    ldap_version 3

    bind_policy soft

    pam_password crypt

    ssl start_tls

    ssl on

    tls_checkpeer no

    tls_cacertdir /etc/ssl/certs

Nota: Estes são os valores para o caso especifico do HAL. Aqui temos um LDAP principal e um secundário, usamos SSL, as passwords são encriptadas usando o algoritmo crypt e temos certificados.

Como existe outro ldap.conf em /etc/ldap/ vamos replicar o que alterámos:

    mv /etc/ldap/ldap.conf /etc/ldap/ldap.conf.back

    cp /etc/ldap.conf /etc/ldap/

Agora, vamos usar o auth-client-config (em vez de editar os ficheiros à mão).

Criamos um novo perfil LDAP:

vi /etc/auth-client-config/profile.d/open_ldap e copiamos para lá as seguintes linhas:

[open_ldap]
nss_passwd=passwd: ldap files
nss_group=group: ldap files
nss_shadow=shadow: ldap files
pam_auth=auth       required     pam_env.so
        auth       sufficient   pam_unix.so likeauth nullok
        auth       sufficient   pam_ldap.so use_first_pass
        auth       required     pam_deny.so
pam_account=account    sufficient   pam_unix.so
        account    sufficient   pam_ldap.so
        account    required     pam_deny.so
pam_password=password   sufficient   pam_unix.so nullok md5 shadow use_authtok
        password   sufficient   pam_ldap.so use_first_pass
        password   required     pam_deny.so
pam_session=session    required     pam_limits.so
        session    required     pam_mkhomedir.so skel=/etc/skel/
        session    required     pam_unix.so
        session    optional     pam_ldap.so

  

Executamos o seguinte comando para activar o código em cima:

    auth-client-config -a -p open_ldap

 Agora, para colocar os utilizadores nos grupos quando eles efectuarem o login, colocamos a seguinte linha no topo dos ficheiros /etc/pam.d/gdm e /etc/pam.d/login:

    auth    optional        pam_group.so  

Temos que a colocar no topo, pois estes ficheiros não são lidos caso alguma condição sufficient/required é executada.

Agora, para adicionar os grupos que pretendemos, adicionamos as seguintes linhas ao ficheiro /etc/security/group.conf:

    login;*;*;Al0000-2400;users,cdrom,floppy,plugdev,audio,dip,fuse
    kdm;*;*;Al0000-2400;users,cdrom,floppy,plugdev,audio,dip,video,fuse
    gdm;*;*;Al0000-2400;users,cdrom,floppy,plugdev,audio,dip,video,fuse

Neste caso, adicionamos também o grupo fuse para que os utilizadores possam ter acesso aos dispositivos amoviveis nos terminais LTSP.

 Nota: Se usarem certificados para o LDAP, copiar para a directoria indicada em cima e executar o comando c_rehash pwd/. Isto permite que seja efectuado um hash aos ficheiros lá colocados.

Para experimentar:

    getent passwd

Deverá aparecer uma listagem com todos os utilizadores do LDAP. Se assim for, está tudo bem configurado.

Nota: Parte do tutorial de LDAP foi retiradao dos forums do Ubuntu. Outras configurações foram efectuadas por mim.

 

Instalação do LTSP

Instalar o LTSP no Ubuntu é a coisa mais simples do mundo. Além de existir muita documentação, foram criados uma série de scripts para ajudar a fazer essas operações.

 

Para instalar o LTSP, só temos que digitar o seguinte comando:

    apt-get install ltsp-server-standalone openssh-server

Assim que terminar de instalar os pacotes, vamos criar o ambiente para o LTSP. O Ubuntu fornece um script para isso.

    ltsp-build-client

Assim que o script terminar, já poderiamos arrancar com o primeiro Thin Client. Mas não o vamos fazer, porque se estiveram com atenção, o DHCP server não arrancou. Isso deve-se porque o LTSP do Ubuntu parte do principio que temos duas placas de rede e uma delas está configurada a gama 192.168.0.0/24. Como isto não acontece, ele dá erro. Mas nada de preocupações.

 

Editar o DHCP

 

O ficheiro dhcpd.conf encontra-se em /etc/ltsp/dhcpd.conf. Vamos editar este ficheiro e efectuar muitas alterações. o ficheiro lá colocado por defeito tem muito pouca coisa. Este é o meu dhcpd.conf:

 

#
# Default LTSP dhcpd.conf config file.
#

ddns-update-style none;
deny client-updates;

allow bootp;

default-lease-time              21600;
max-lease-time                  21600;

option subnet-mask              255.255.255.0;
option broadcast-address        192.168.0.255;
option domain-name              "domainname.pt";
option routers                  192.168.0.2;
option domain-name-servers      172.17.2.1, 172.17.2.8;

#authoritative;

use-host-decl-names             on;
option root-path                "192.168.0.2:/opt/ltsp/i386";
option log-servers              192.168.0.2;
next-server                     192.168.0.2;

subnet 192.168.0.0 netmask 255.255.255.0 {
    if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
        filename "/ltsp/i386/pxelinux.0";
    } else {
        filename "/ltsp/i386/nbi.img";
    }
    include "/etc/ltsp/dhcpd.clients";
}

 

 

Agora, com as novas configurações, já podemos arrancar com o serviço do DHCP.

/etc/init.d/dhcp3-server start

e vejam que arranca sem problemas. Agora, como alterámos os IP’s do dhcpd.conf, temos que dizer ao servidor de ssh que fizemos alterações. Para isso, basta executar o script ltsp-update-sshkeys (basta escrever isso numa consola, como root).

Nota: Aquando da configuração automática por parte do script de instalação do LTSP, o dhcp3-server não fica a arrancar automáticamente, tendo nós que o configurar, adicionando-o ao runlevel. Eu sei que existem outras formas, mas como não conheço muito bem o script para gerir os runlevels do Ubuntu (Debian), fiz desta forma:

update-rc.d -f dhcp3-server remove

Removing any system startup links for /etc/init.d/dhcp3-server ...
   /etc/rc0.d/K20dhcp3-server
   /etc/rc1.d/K20dhcp3-server
   /etc/rc2.d/S20dhcp3-server
   /etc/rc3.d/S20dhcp3-server
   /etc/rc4.d/S20dhcp3-server
   /etc/rc5.d/S20dhcp3-server
   /etc/rc6.d/K20dhcp3-server

update-rc.d dhcp3-server defaults
 Adding system startup for /etc/init.d/dhcp3-server ...
   /etc/rc0.d/K20dhcp3-server -> ../init.d/dhcp3-server
   /etc/rc1.d/K20dhcp3-server -> ../init.d/dhcp3-server
   /etc/rc6.d/K20dhcp3-server -> ../init.d/dhcp3-server
   /etc/rc2.d/S20dhcp3-server -> ../init.d/dhcp3-server
   /etc/rc3.d/S20dhcp3-server -> ../init.d/dhcp3-server
   /etc/rc4.d/S20dhcp3-server -> ../init.d/dhcp3-server
   /etc/rc5.d/S20dhcp3-server -> ../init.d/dhcp3-server

 

Configurar o ambiente LTSP

Agora que já temos o LTSP a funcionar, vamos configurar o ambiente. Começamos com uma actualização ao ambiente e depois instalamos alguns pacotes para personalizar.

 A directoria /opt/ltsp é um sistema Linux completo. Podemos instalar pacotes, usando o apt (aqui está a grande diferença do LTSP 4.2 para a versão 5), e manter o LTSP actualizado. Dada a fantástica flexibilidade do Linux, podemos trocar a nossa root para a directoria e trabalhar lá dentro normalmente. Vamos então fazer um chroot para o LTSP e actualizar o nosso ambiente.

Para que possamos ter rede no nosso ambiente LTSP, vamos copiar alguns ficheiros necessários.

    cp /etc/resolv.conf /opt/ltsp/i386/etc

Vamos agora também copiar a listagem dos repositorios de pacotes para o apt.

    cp /etc/apt/sources.list /opt/ltsp/i386/etc/apt

Agora que copiamos todos os ficheiros necessários, vamos então trocar para o nosso ambiente

    chroot /opt/ltsp/i386

Sejam bem vindos ao nosso ambiente LTSP. Vamos começar por actualizar os repositorios do apt e actualizar o sistema.

    apt-get update

    apt-get upgrade

NOTA: Eu tive um problema com a actualização do kernel. O apt dá erro, dizendo que o ficheiro existe. O ficheiro é o nbi.img-2.6.22-14-386 (que se encontra em /boot). Para resolver o problema, têm que apagar esse ficheiro, tornar a executar o apt-get upgrade. Torna a dar o mesmo erro, mas instala os restantes pacotes. Tornamos a remover o mesmo ficheiro e executamos novamente o apt-get upgrade. Desta vez, já instala o novo kernel.

Já temos o ambiente de LTSP actualizado. Agora, vamos à personalização. No meu caso particular, desejo que os meus utilizadores tenham o sistema todo em português, flash player, adobe acrobat reader, ouvir musicas e ver videos.

 

Suporte de Português

 

Para se ter um suporte de português, basta instalar os seguintes ficheiros. O apt tratará de resolver as dependências, dando posteriormente algumas sugestões para instalação de outros pacotes.

apt-get install language-pack-pt language-support-pt

Estes foram os pacotes que instalei. Agora, se efectuarem uma pesquisa por portuguese, encontrarão muitos mais. É tudo uma questão de escolha (A flexibilidade do Linux sempre presente).

    apt-cache search portuguese

 

Suporte ao video, audio e outros plugins necessários

 

Para que os utilizadores possam ver videos, ouvir musica e outras operações relacionadas com multimédia, temos que instalar suporte para todos os formatos mais comuns. Para isso, o apt do ubuntu apresenta a instalação de um pacote que instala tudo o que é necessário.

    apt-get install ubuntu-restricted-extras

Desta forma, já temos suporte para a maioria dos ficheiros multimédia.

Adobe Reader e Flash Player

Como não consegui encontrar nenhum pacote para instalar estes dois componentes, tive que os instalar manualmente. A instalação é simples e facil, tal como no windows.

No caso do Adobe Acrobat Reader, fui ao site da Adobe e retirei a versão para Linux, Portuguesa e em .deb. Para instalar, nada mais facil que:

    dpkg -i AdobeReader_ptb-8.1.1-1.i386.deb

Para instalar o suporte de flash, foi exactamente a mesma coisa. Fui ao site da Adobe e retirei o instalador para Linux. Descompactei e segui as instruções.

    tar -zxvf install_flash_player_9_linux.tar.gz

    cd install_flash_player_9_linux

    ./flashplayer-installer

Quando perguntar pela directoria, coloquem /usr/lib/firefox.

Desta forma, já temos o nosso ambiente LTSP configurado, em portugues e com suporte para várias coisas.

Saímos do ambiente LTSP e voltamos a nossa root anterior.

    umount /proc

    Ctrl + D ou exit

Agora que estamos na nossa root anterior, temos que executar três scripts para que as alterações efectuadas reflitam.

    ltsp-update-sshkeys

    ltsp-update-kernels

    ltsp-update-image

Desta forma, está tudo prontinho. Podem ligar um terminal e experimentar.

 NOTA: Eu reparei que, apesar de instalar as aplicações no chroot do LTSP, sair, executar os comandos colocados em cima, as aplicações não aparecem no desktop do utilizador. Para isso, é necessário também instalar no servidor, usando os mesmos comandos usados ao longo deste howto.

Nota: Li mais atentamente, e realmente, as aplicações a instalar, têm que ser feitas no servidor e não no chroot do LTSP.

 

Aqui ficam as souces que eu usei no apt (/etc/apt/sources.list):

deb http://pt.archive.ubuntu.com/ubuntu/ gutsy multiverse

 

16 thoughts on “Ubuntu, a aventura com o LTSP

  1. Caro Bruno,

    gostei do passo a passo.
    você poderia colocar os repositórios que você usou.

    vou fazer algumas mudanças em um telecentro.

    obrigado,

    erasmo

  2. Muito bom, este tutorial, consegui fazer funcionar tudo certo, só que nas maquinas cliente, gostaria de trocar a resolução do video para 1024X768 e outras para 800X600, tem alguma dica?

  3. Ola Adriano. Obrigado por ter gostado.
    Em relacao à resolucao das maquinas clientes, basta editar o ficheiro lts.conf, que se encontra em (*/var/lib/tftpboot/ltsp/i386*) (se não existir, basta criar). Aí dentro estão colocadas as definições para os terminais. Existe um parametro que especifica a resolução dos monitores no X e dá para ser especifico para cada terminal. Veja a seguinte página (*http://doc.ubuntu.com/edubuntu/edubuntu/handbook/C/customizing-thin-client.html.*) se tiver duvidas, diga-me algo.

  4. Boas caro Bruno Santos!

    Este tutorial esta excelente no meu ponto de vista!

    Mas eu tive um pequeno problema que foi o seguinte:

    Depois de tudo configurado correctamente os “meus” clientes não arrancaram! Simplesmente não dão! A imagem que depois criei na disquete com os drives da placa de rede não abre!

    Tem alguma sugestão??

    Cumprimentos
    Tiago

  5. Ola Tiago. Se eu percebi, a placa de rede não arranca nativamente por PXE (o que é essencial).

    Visite estas páginas, http://www.etherboot.org/wiki/index.php
    e http://rom-o-matic.net/ onde poderá encontrar rooms para placas de rede já antigas e que não arrancam por PXE.
    Nota: nas bios dos clientes, poderá haver uma opção para arrancar por PXE. Se as placas já forem antigas, então a disquete de arranque é o melhor.
    Se eu percebi bem, se for outra coisa, por favor diga-me. Tente incluir algum tipo de erro, se possivel.

    Cumprimentos e obrigado

  6. Boas caro Bruno!

    Depois de ter lido todo os sites que me indicou eu descobri que nao tenho activado o “XDMCP”

    Sabe como me pode ajudar?
    Tenho o ubunto 7.10

    Desde já muito obrigado pela atenção!!

    Cumprimentos Tiago

  7. Ola Tiago. Olhe, aquilo que li, esta versao do LTSP no Ubuntu 7.10 já não utiliza o XDMCP. Preciso que me diga mais qualquer coisa, algum tipo de erro, mensagens que aparecem, o que realmente voce nao consegue fazer.

    Cumprimentos

  8. Boas caro Bruno

    O erro que me dá é que não me aparece o “LOGON” na máquina cliente!

    Esse é mesmo o meu maior problema.

    Porque erros e isso não dá! Apenas nao aparece o login no cliente!

    Cumprimentos Tiago

  9. Tiago, entao, vamos fazer assim:
    Edite o ficheiro */var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default*

    Nesste ficheiro vê uma linha:
    *DEFAULT vmlinuz ro initrd=initrd.img quiet splash*

    A essa linha, retire as palavras *quiet* e *splash* Guarde o ficheiro e faca reboot ao terminal. Vai ver (em vez do splash do ubuntu), texto, muito texto. tente identificar algum erro. provavelmente com a placa grafica, ou outra coisa qualquer.

    Cumprimentos

  10. Ola Bruno,

    Ca estou eu novamente. Relativamente ao erro existente no reply anterior, ja esta ultrapassado. Tratava-se de um terminal Scenic. Já consegui entrar mas só com o utilizador que contem todos os privilégos. como posso colocar os outros utilizadores?

    Cumprimentos Tiago

    Grato pela atenção

    P.S- Sabe de alguma soluçao para os Scenic?

  11. Ola de novo Tiago. Por acaso, aqui no HAL usamos scoverys e futros, da fujitsu-siemens. Não temos nenhum scenic a fazer de terminais.

    Em relacao aos utilizadores, não lhe sei como responder.
    Na propria maquina, so tenho o utilizador criado durante a instalação, os outros estão por LDAP e nenhum teve problemas a entrar. Provavelmente alguma configuração de LDAP (se é que usa). Os utilizadores são criados no servidor?
    Faça assim:
    como root (ou sudo):
    *sudo tail -f /var/log/messages*
    e num terminal tente entrar.. veja se lhe dá algum erro.
    Diga-me depois mais qualquer coisa.

    Cumprimentos,
    Bruno

    PS: Se quiser, posso colocar aqui parte do meu *lts.conf* com algumas configurações (a default e as usadas para cada um dos modelos de terminais).

  12. Olá! gostaria de saber qual é a forma de criaros login dos clientes, pois irei utilizar uma aplicacao que executa assim que o cliente se loga automaticamente na rede exemplo:

    terminal 1 – usuario1 – aplicativo1
    terminal2 – usuario2 – aplicativo 2

    Valeu!

  13. Ola Roger.
    Relativamente aos utilizadores, basta criar no servidor que eles automaticamente ficam disponiveis para os terminais.

    Relativamente ao autologin, também tenho isso feito e com a execução directa de uma aplicação, consoante o terminal. Tem que me deixar ver isso amanhã e eu irei colocar aqui. Tenho essa informação toda no meu local de trabalho. Abraço

  14. Ola Roger.
    Relativamente ao auto-login dos clientes, no ficheiro lts.conf, na secção para o terminal desejado, basta incluir as seguintes linhas:
    [terminalYY]
    LDM_USERNAME = utilizador
    LDM_PASSWORD = password

    Para executar directamente uma aplicao, basta tambem incluir a seguinte linha, na mesma secção para o terminal em questão:

    LDM_SESSION = “caminho para a aplicacao”

    Desta forma, consegue-se personalizar cada terminal.

    Relativamente ao autologin, tive alguns problemas e nem sempre funcionou, mas isto devido a um erro no LDM (aplicacao estilo GDM e KDM, mas para o LTSP). Pode ser que ja esteja corrigida.

    Abraco,

    Bruno Santos

  15. No meu local de trabalho tenho instalado LTSP 5 em Ubuntu 7.04 (Gutsy). Foi uma nova instalação efectuada (descrita aqui no meu blog), onde uma das razaões para esta nova instalação foi a utilização dos Loc

Leave a Reply to Feiticeir0's Blog Cancel reply

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