Professional Documents
Culture Documents
04 LTS para
computadores do ProInfo
Laercio de Sousa
E-mail: laerciosousa@sme-mogidascruzes.sp.gov.br
5 de dezembro de 2014
Resumo
Neste artigo, explicaremos como configurar corretamente o multiterminal no Ubuntu 14.04
LTS Trusty Tahr em computadores do ProInfo pregoes FNDE 83/2008 e 71/2010.
Sumario
1 Introducao
2 Cuidados iniciais
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
4
4
5
6
7
aninhados
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
.
.
.
.
.
8
9
10
10
11
12
da tela
13
. . . . . 13
. . . . . 13
. . . . . 14
Introducao
No ultimo dia 17 de abril de 2014, foi lancada a versao 14.04 LTS, codinome Trusty Tahr, do
sistema operacional Ubuntu, bem como de seus derivados. Esta e a primeira versao LTS do Ubuntu
lancada apos o incio da sua transicao para a adocao do systemd como ferramenta de inicializacao
e monitoramento de sistema, e ja oferece suporte parcial a multiterminais de forma nativa, isto e,
sem a necessidade de recorrer a solucoes comerciais como o Userful Multiseat.
Provavelmente, o Ubuntu 14.04 LTS sera a base de um eventual Linux Educacional 6.0 1 .
Cuidados iniciais
Antes de comecarmos o processo de instalacao do Ubuntu e configuracao do multiterminal, algumas observacoes sao necessarias:
[IMPORTANTE] Nao exclua a sua instalacao atual do Linux Educacional! Em vez disso,
voce deve instalar o Ubuntu lado a lado com a sua instalacao atual do Linux Educacional.
Voce pode redimensionar a particao do Linux Educacional para um valor pequeno (10GB ou
20GB) e reservar o restante para o novo sistema. Manter o Linux Educacional instalado pode
ser importante para contornarmos um eventual problema de Tela Listrada (veja a secao 4)
que pode se manifestar em alguns computadores.
Numa montagem tpica de multiterminal do ProInfo, ha um hub USB para cada terminal.
Retire o hub do terminal primario (aquele correspondente ao vdeo onboard da Intel) e conecte
teclado e mouse diretamente a CPU. Reserve os hubs USB para os terminais secundarios
(aqueles correspondentes a placa de vdeo externa TN-502).
Existem diversas derivacoes do Ubuntu disponveis, que diferem umas das outras principalmente
pelo ambiente grafico. Escolha a que melhor atenda as suas necessidades:
Edubuntu: Otimizada para uso educacional. Oferece duas opcoes de ambiente grafico (Unity
e GNOME-Flashback). O ambiente grafico Unity nao e recomendado para os computadores do ProInfo, pois ele exige muito processamento grafico, algo que as placas de
1
A ser confirmado pela equipe do C3SL/UFPR responsavel pelo desenvolvimento do Linux Educacional. A versao
atual, 5.0, e baseada no Ubuntu 12.04 LTS.
vdeo TN-502 sao incapazes de oferecer. Caso voce prefira instalar outra derivacao do
Ubuntu, ainda podera instalar os pacotes educacionais mantidos pelo projeto Edubuntu.
Os pacotes sao ubuntu-edu-preschool, ubuntu-edu-primary, ubuntu-edu-secondary
e ubuntu-edu-tertiary.
Ubuntu GNOME: Baseada no ambiente GNOME 3.10 completo. E a que oferece o melhor
suporte a multiterminal.
Kubuntu: Baseada na versao 4.13 do ambiente KDE, o mesmo do Linux Educacional 4.0.
Xubuntu: Baseada no ambiente XFCE. Por ser leve, deve funcionar bem nos computadores
do ProInfo, sobretudo nos do pregao 83/2008, que possuem menor quantidade de memoria
RAM.
Lubuntu: Baseada no ambiente LXDE. Dentre todas as derivacoes do Ubuntu, esta e a mais
leve, alem de oferecer uma interface que lembra o Windows XP.
Todas as derivacoes do Ubuntu descritas acima apresentam suporte correto a configuracao de
dispositivos de entrada e sada por terminal (teclado, mouse, microfone e fone de ouvido). No
entanto, ate a presente data, as derivacoes Edubuntu, Kubuntu e Lubuntu, bem como o proprio
Ubuntu, ainda apresentam algum inconveniente quanto ao uso de dispositivos de armazenamento
removveis (pendrives, discos rgidos externos, etc.). Caso voce precise utilizar tais dispositivos com
frequencia em seus computadores multiterminais, recomendamos as derivacoes Ubuntu GNOME ou
Xubuntu.
A versao 14.04 LTS do Ubuntu oferece um recurso que permite delegar ao processador principal
parte do processamento grafico, compensando a limitacao da placa de vdeo TN-502. No entanto,
parte deste processamento acaba sendo consumida pelo proprio ambiente grafico para lidar com
efeitos visuais, tais como animacoes, transparencias, etc. Assim, quanto mais leve o ambiente grafico
escolhido, maior sera a sobra de processamento grafico para as aplicacoes.
Portanto, se voce pretende executar jogos mais pesados e/ou com graficos em 3D, recomendamos as derivacoes Xubuntu ou Lubuntu. Em nossos testes, executando o jogo SuperTuxKart com
resolucao de 800x600 pixels em computadores do pregao 71/2010, o desempenho grafico na placa
TN-502 foi razoavel, tanto no Xubuntu, como no Lubuntu.
3.1
Apesar de o Ubuntu apresentar suporte parcial na sua instalacao padrao, alguns pacotes ainda
precisam de modificacoes para garantir o funcionamento correto do modelo de multiterminal dos
computadores do ProInfo. Para tanto, a equipe do projeto Ubuntu Multiseat mantem um PPA2 com
2
os pacotes modificados. Para adicionar o PPA do projeto Ubuntu Multiseat a sua lista de repositorios
e atualizar o sistema, basta executar os comandos abaixo:
$ sudo apt-add-repository ppa:ubuntu-multiseat/ppa
2 $ sudo apt-get update
3 $ sudo apt-get upgrade
1
3.2
3.2.1
Udev
O primeiro arquivo de configuracao que precisamos adicionar ao nosso sistema serve para registrarmos os hubs USB da ThinNetworks como dispositivos-mestres para novos terminais. Assim, o
sistema reconhecera o hub e criara um novo terminal para ele automaticamente. Com o auxlio de um
editor de textos, crie um arquivo com o caminho /etc/udev/rules.d/71-seat-tn.rules conforme
abaixo:
#
#
3 #
4 #
5 #
6 #
7 #
1
2
SUBSYSTEM=="usb", \
ATTR{idVendor}=="05e3", \
11
ATTR{idProduct}=="0608", \
12
TAG+="master-of-seat", \
13
ENV{ID_AUTOSEAT}="1"
9
10
Para aplicar imediatamente as alteracoes de sistema apos criar este arquivo, execute o comando
1
$ loginctl list-seats
3 seats listed.
SUBSYSTEM=="usb", \
5
ATTR{idVendor}=="05e3", \
6
ATTR{idProduct}=="0608", \
7
TAG+="master-of-seat", \
8
ENV{ID_AUTOSEAT}="1", \
9
ENV{ID_FOR_SEAT}="tn"
4
O proximo arquivo de configuracao que precisamos criar e o do X.Org X11 Server, necessario para
configurarmos corretamente a placa de vdeo TN-502. Esta placa possui um chip Silicon Motion SM501, que utiliza o driver de vdeo xf86-video-siliconmotion.
Caso o seu sistema nao possua uma pasta chamada /etc/X11/xorg.conf.d, crie-a. Em seguida,
com o auxlio de um editor de textos, crie o arquivo /etc/X11/xorg.conf.d/90-seat-tn.conf
conforme abaixo:
Section "Device"
2
# Modifique a linha abaixo de acordo com o seu hardware.
3
BusID "PCI:4:1:0"
4
Identifier "videocard_sm501"
5
Driver "siliconmotion"
6
Option "PanelSize" "1360x768"
7
MatchSeat "seat-tn"
8 EndSection
1
Section "Screen"
Identifier "screen_sm501"
12
Device "videocard_sm501"
10
11
DefaultDepth 16
MatchSeat "seat-tn"
15 EndSection
13
14
No exemplo acima, o campo BusID "PCI:4:1:0" esta configurado de acordo com a sada do
comando
1
Execute este comando no seu proprio computador e adapte o valor de BusID no seu arquivo de
configuracao conforme necessario.
IMPORTANTE: certifique-se de ter adicionado o PPA do projeto Ubuntu Multiseat e atualizado
o seu sistema antes de criar este arquivo. Caso contrario, o sistema podera travar na proxima
inicializacao.
3.2.3
LightDM
NOTA: caso voce optado pela derivacao Ubuntu GNOME, pode pular esta secao.
Desde o dia 15 de agosto de 2014, os pacotes do gerenciador de login LightDM disponveis no PPA
do projeto Ubuntu Multiseat incluem patches que adicionam suporte a configuracao automatica de
multiterminais, de modo que nenhuma configuracao adicional e necessaria, em princpio.
ATUALIZACAO 15/09/2014: O suporte a configuracao automatica de multiterminais, cuja implementacao foi finalizada a tempo para o fechamento da versao 1.12 do LightDM (que sera
lancada juntamente com o Ubuntu 14.10 Utopic Unicorn) foi portado para a serie 1.10 e
devera ser disponibilizado em breve para a versao 14.04 LTS. No entanto, diferentemente do
pacote do PPA do projeto Ubuntu Multiseat, a ativacao deste suporte sera opcional na atualizacao oficial (para evitar quebras com configuracoes anteriores). Assim, e recomendavel
acrescentar a configuracao abaixo ao seu arquivo lightdm.conf para nao haver problemas
quando a atualizacao sair:
1
2
[LightDM]
logind-load-seats=true
Quando a atualizacao oficial estiver disponvel, o pacote do PPA do projeto Ubuntu Multiseat
sera descontinuado.
No entanto, e possvel personalizar alguns parametros de configuracao do LightDM para terminais
adicionados automaticamente, como o usuario que fara login automatico no terminal em questao,
6
o comando personalizado do servidor X que sera executado naquele terminal, etc. Com o auxlio
de um editor de textos, crie (ou edite, caso exista) o arquivo /etc/lightdm/lightdm.conf (ou
/etc/lightdm/lightdm.conf.d/90-seat-tn.conf, se preferir) conforme o exemplo abaixo:
[Seat:seat-tn]
autologin-user=<NOME-DE-USUARIO>
3 xserver-command=X -core -dpms -s 0
1
2
3.3
Reiniciando o sistema
Se voce chegou ate aqui, ja tem o sistema suficientemente preparado para o multiterminal. Reinicie o computador e, se tudo correu como esperado, voce devera ter o multiterminal pronto para
uso.
Outro problema observado devido a limitacoes no driver de vdeo atual da placa TN-502 e que o
ponteiro do mouse fica piscando quando e movimentado. Alem de ser um incomodo no uso geral do
ambiente de trabalho, este comportamento estranho pode ser bastante prejudicial em alguns aplicativos especficos, como o GCompris. Ainda nao descobrimos uma solucao para este problema, mas
uma medida paliativa possvel e a utilizacao de servidores X aninhados, a mesma solucao abordada
a seguir para configurar tres terminais utilizando as duas sadas de vdeo da placa TN-502.
Atualmente, nao e possvel executar mais de um servidor X sobre uma mesma placa de vdeo, o
que permitiria, por exemplo, configurar dois terminais utilizando as duas sadas de vdeo da placa
TN-502. No entanto, e possvel contornar esta limitacao com uma solucao paliativa a mesma
utilizado pelo Userful Multiseat no Linux Educacional 5.0. Esta solucao consiste em executar um
servidor X hospedeiro que se expande sobre ambas as sadas de vdeo da placa TN-502 e abrir
sobre ele duas janelas com servidores X hospedes aninhados, cujos tamanhos e posicoes deve ser
8
escolhidos para se ajustar exatamente as dimensoes de cada monitor conectado as sadas de vdeo.
Existem atualmente duas alternativas para executar os servidores X aninhados:
utilizar o software Xephyr, que e um servidor X minimalista feito especificamente para ser
executado sobre um outro servidor X.
utilizar o proprio Xorg com um driver de vdeo que permita executa-lo sobre um outro servidor
X. Esta e a solucao adotada pelo Userful Multiseat no Linux Educacional 5.0, que utiliza um
driver proprietario chamado uvdd, mas existe um outro driver de codigo aberto chamado
xf86-video-nested que se propoe a fazer o mesmo.
Cada uma das alternativas apresentadas possui suas vantagens e desvantagens. Ate o momento,
o Xephyr esta mais otimizado no quesito desempenho grafico, mas apresenta limitacoes no gerenciamento de dispositivos de entrada (por exemplo, os LEDs do teclado NumLock, ScrollLock e
CapsLock nao acendem quando estao ativados, os dispositivos de entrada nao sao detectados se
voce desconecta-los e conecta-los novamente, etc.). O Xorg com o driver nested, por sua vez, gerencia muito bem os dispositivos de entrada, mas o driver ainda esta num estagio imaturo e carece
de otimizacoes graficas (em nossos testes realizados em 2 de julho de 2014, o Google Chrome nao
conseguia reproduzir vdeos do YouTube no Xorg com o driver nested).
Vamos explicar a seguir como configurar o multiterminal com servidores aninhados para cada
uma das abordagens apresentadas.
6.1
Antes de prosseguirmos com a configuracao do multiterminal com servidores X aninhados, precisamos habilitar o modo dual-head na placa TN-502 quando executarmos o servidor X hospedeiro.
Crie/Edite o arquivo /etc/X11/xorg.conf.d/90-sm501-dualhead.conf com o seguinte conteudo:
Section "Device"
2
MatchSeat "__sm501-dualhead__"
3
Identifier "videocard_sm501_dualhead"
4
BusID "PCI:4:1:0"
5
Driver "siliconmotion"
6
Option "PanelSize" "1360x768"
7
Option "Dualhead" "true"
8 EndSection
1
Section "Screen"
MatchSeat "__sm501-dualhead__"
12
Identifier "screen_sm501_dualhead"
13
Device "videocard_sm501_dualhead"
14
DefaultDepth 16
10
11
15
SubSection "Display"
Virtual 2720 768
18
EndSubSection
19 EndSection
16
17
6.2
Para nao precisar carregar nomes de terminal muito extensos, como aqueles gerados automaticamente, voce pode criar um arquivo complementar /etc/udev/rules.d/72-tn-late-seat.rules4
com o seguinte conteudo:
1
2
TAG=="seat", ENV{ID_FOR_SEAT}=="usb-pci-0000_00_1d_7-usb-0_2", \
ENV{ID_SEAT}="seat-VGA"
3
4
5
TAG=="seat", ENV{ID_FOR_SEAT}=="usb-pci-0000_00_1d_7-usb-0_4", \
ENV{ID_SEAT}="seat-LVDS"
Os exemplos de configuracao que seguem abaixo baseiam-se na regra acima. Seguindo esta convencao, voce vai associar uma determinada porta USB da CPU a uma determinada sada de vdeo
da placa TN-502. Certifique-se de conectar o hub na porta USB associada a sada de vdeo desejada.
Se voce perceber que seus terminais aparentam estar trocados (mouse de um terminal associado ao
monitor de outro), permute as portas USB em que os hubs estao conectados.
6.3
Tambem precisamos do Xephyr disponvel no PPA do Ubuntu Multiseat, pois ele contem algumas
modificacoes necessarias para a correta configuracao do multiterminal. Provavelmente voce ja deve
te-lo atualizado quando fez a atualizacao completa do sistema, mas pode certificar-se executando
1
Nao renomeie este arquivo para algo como 72-seat-tn-late.rules. Caso contrario, voce podera exclu-lo acidentalmente se executar o comando sudo loginctl flush-devices.
10
[default]
2 seat-parent-window=false
3 xephyr-options=-sw-cursor
1
[daemon]
host-seat=__sm501-dualhead__
7 host-options=-nolisten tcp -dpms -s 0
5
6
[seat-LVDS]
10 output=LVDS
9
11
[seat-VGA]
13 output=VGA
12
[Seat:seat-LVDS]
xserver-command=multi-seat-xephyr
[Seat:seat-VGA]
5 xserver-command=multi-seat-xephyr
4
multi-seat-xephyr --daemon
Por fim, voce pode reiniciar o computador para que todas as alteracoes tenham efeito. Caso
queira aplica-las imediatamente, execute os seguintes comandos:
1
2
6.4
Para configurar o multiterminal com o Xorg e o driver nested, voce pode comecar seguindo o
mesmo roteiro da secao anterior para executar o servidor X hospedeiro a partir do multi-seat-xephyr,
ou seja, crie o arquivo /etc/xdg/multi-seat-xephyr.conf conforme la mostrado e acrescente o
comando multi-seat-xephyr --daemon ao seu arquivo /etc/rc.local. Para executar os servidores X aninhados, crie/edite o arquivo /etc/X11/xorg.conf.d/90-seat-sm501-dualhead.conf
conforme abaixo.
11
ATENCAO!! O modelo abaixo esta sujeito a alteracoes conforme o driver nested venha a ser
atualizado. Este documento sera atualizado a medida que novas opcoes de configuracao sejam
implementadas.
Section "Device"
2
Identifier "nested_device"
3
Driver "nested"
4
Option "Display" ":90"
5
MatchSeat "seat-LVDS"
6
MatchSeat "seat-VGA"
7 EndSection
1
Section "Screen"
10
Identifier "nested_screen_LVDS"
11
Device "nested_device"
12
DefaultDepth 16
13
Option "Output" "LVDS"
14
MatchSeat "seat-LVDS"
15 EndSection
9
16
Section "Screen"
18
Identifier "nested_screen_VGA"
19
Device "nested_device"
20
DefaultDepth 16
21
Option "Output" "VGA"
22
Option "RightOf" "LVDS"
23
MatchSeat "seat-VGA"
24 EndSection
17
6.5
Problemas comuns
E possvel que, ao inicializar o sistema, um ou outro terminal nao seja carregado corretamente.
Isso acontece principalmente quando o servidor X hospedeiro nao foi executado corretamente ou
quando o gerenciador de login tenta executar o servidor X aninhado antes de o servidor X hospedeiro
estar pronto. Se isso acontecer com voce, reinicialize o servico do LightDM (ou GDM) para que os
terminais voltem ao normal. Para reinicializar o servico, execute:
1
ou
12
Para o caso especfico do multiterminal com servidores X aninhados, e possvel que as telas dos
monitores apresentem-se invertidas em relacao aos dispositivos de entrada, ou seja, o teclado/mouse
do terminal a esquerda estarem associados ao monitor da direita e vice-versa. Uma solucao simples
para corrigir esta inversao e permutar as portas USB dos hubs conectados, ou as sadas de vdeo dos
monitores.
O procedimento abaixo e derivado de uma colaboracao com Andre Lucio Fiamoncini5 , que o
desenvolveu originalmente para a distribuicao openSUSE 13.1, e se divide em duas partes, a saber:
A.1
Inicialize o sistema no Linux Educacional 4.0 uma vez. Faca login normalmente como professor
e crie um arquivo chamado /usr/local/sbin/auto-reboot.sh com o seguinte conteudo:
#!/bin/sh
timeout=10 # Mude este valor de acordo com a sua preferencia
3 echo "Reiniciando em $timeout segundos..."
4 sleep $timeout
5 reboot
1
2
xterm -e auto-reboot.sh
A.2
No lado do Ubuntu, precisamos configurar o gerenciador de boot, GRUB, para que escolha uma
vez o Linux Educacional na proxima reinicializacao do sistema. O primeiro passo e editar o arquivo
/etc/default/grub, editando/acrescentando a seguinte linha:
1
GRUB_DEFAULT=saved
13
sudo update-grub
Precisamos agora informar o GRUB para escolher uma vez o outro sistema na proxima inicializacao. Isto pode ser feito executando o seguinte comando:
1
Para descobrir qual valor deve ser utilizado no lugar de <NUMERO> no comando acima, observe a
tela principal do GRUB e conte, de cima para baixo, a posicao da linha referente ao Linux Educacional
(a contagem inicia em 0). Por exemplo, se a linha do Linux Educacional estiver na quinta posicao,
o comando completo ficaria assim:
1
$ sudo grub-reboot 4
Para garantir que este comando seja executado na inicializacao do sistema, insira-o no final do
script /etc/rc.local, desta forma:
grub-reboot 4
2 exit 0
1
Agora basta reiniciar o computador. Se tudo estiver configurado corretamente, ele ira inicializar
no Linux Educacional na proxima vez. Uma vez carregado o Linux Educacional, o sistema ira
reinicializar automaticamente no Ubuntu novamente.
A.3
Um efeito colateral deste procedimento e que o Linux Educacional ficara inacessvel por causa
da reinicializacao automatica. Se, por algum motivo, voce precisar de acesso ao Linux Educacional,
precisara antes desativar o reincio automatico. Para isso, execute os seguintes comandos no Ubuntu:
1
2
14