04 LTS para
computadores do ProInfo
Laercio de Sousa
E-mail: laerciosousa@sme-mogidascruzes.sp.gov.br
14 de julho 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.
Sum
ario
1 Introduc
ao 2
2 Cuidados iniciais 2
3 Instalac
ao e configurac
ao do sistema 3
3.1 Adicionando o PPA do projeto Ubuntu Multiseat . . . . . . . . . . . . . . . . . . . . 3
3.2 Adicionando os arquivos de configuracao . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2.1 Udev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2.2 X.Org X11 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2.3 LightDM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3 Reiniciando o sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1
1 Introduc
ao
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 .
2 Cuidados iniciais
Antes de comecarmos o processo de instalacao do Ubuntu e configuracao do multiterminal, algu-
mas 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 n ao e recomendado para os compu-
tadores do ProInfo, pois ele exige muito processamento grafico, algo que as placas de
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.
1
A ser confirmado pela equipe do C3SL/UFPR responsavel pelo desenvolvimento do Linux Educacional. A vers
ao
atual, 5.0, e baseada no Ubuntu 12.04 LTS.
2
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.
3 Instalac
ao e configurac
ao do sistema
3.1 Adicionando o PPA do projeto Ubuntu Multiseat
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
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:
1 $ sudo apt-add-repository ppa:ubuntu-multiseat/ppa
2 $ sudo apt-get update
3 $ sudo apt-get upgrade
2
Personal Package Archive, ou reposit
orio de pacotes particular.
3
3.2 Adicionando os arquivos de configurac
ao
3.2.1 Udev
O primeiro arquivo de configuracao que precisamos adicionar ao nosso sistema serve para regis-
trarmos 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:
1 # SUBSYSTEM=="usb": identifica dispositivos USB em geral
2 # ATTR{idVendor}=="05e3": identifica o fabricante (ThinNetworks)
3 # ATTR{idProduct}=="0608": identifica o hub USB
4 # TAG+="master-of-seat": registra o hub USB como dispositivo-mestre
5 # para novos terminais
6 # ENV{ID_AUTOSEAT}="1": cria o novo terminal automaticamente assim que
7 # o hub USB e detectado pelo sistema
8
9 SUBSYSTEM=="usb", \
10 ATTR{idVendor}=="05e3", \
11 ATTR{idProduct}=="0608", \
12 TAG+="master-of-seat", \
13 ENV{ID_AUTOSEAT}="1"
Para aplicar imediatamente as alteracoes de sistema apos criar este arquivo, execute o comando
1 $ sudo udevadm trigger
3 seats listed.
4
2 # criado automaticamente (seat-tn)
3
4 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"
10 Section "Screen"
11 Identifier "screen_sm501"
12 Device "videocard_sm501"
13 DefaultDepth 16
14 MatchSeat "seat-tn"
15 EndSection
No exemplo acima, o campo BusID "PCI:4:1:0" esta configurado de acordo com a sada do
comando
1 $ lspci | grep SM501
3
Voce pode substituir o tn por qualquer sequencia de caracteres de sua escolha.
5
04:01.0 Display controller: Silicon Motion, Inc. SM501 VoyagerGX Rev. AA
(rev c0)
Execute este comando no seu proprio computador e adapte o valor de BusID no seu arquivo de
configuracao conforme necessario.
3.2.3 LightDM
NOTA: caso voce optado pela derivacao Ubuntu GNOME, pode pular esta secao.
4 [Seat:-tn]
5 xdg-seat=seat-tn
Este arquivo corresponde `a configuracao mnima necessaria para o muliterminal e nao contempla
recursos como login automatico, por exemplo.
6
Figura 1: Problema na sada de vdeo da placa TN-502.
1. Reinicie o computador.
3. Aguarde a inicializacao do Linux Educacional. Assim que voce perceber que a imagem nos
monitores conectados a` placa TN-502 voltou ao normal (uma tela preta com o ponteiro do
mouse ja e suficiente), pressione rapidamente [Ctrl]+[Alt]+[Delete] para reiniciar o sistema
novamente.
4. Na tela do gerenciador de boot, escolha a sua instalacao atual do Ubuntu (ou a derivacao do
Ubuntu que voce escolheu).
6. A partir deste ponto, voce pode reiniciar o computador quantas vezes quiser, que o problema
nao voltara a se manifestar, ate que voce o desligue e ligue novamente.
7
5 O problema do Ponteiro do Mouse Piscante
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 aplica-
tivos 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.
6 [EXPERIMENTAL] Configurando tr
es terminais com ser-
vidores X aninhados
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
escolhidos para se ajustar exatamente a`s dimensoes de cada monitor conectado a`s 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 geren-
ciamento 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, ge-
rencia 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.
8
6.1 Habilitando o modo dual-head na placa TN-502
Antes de prosseguirmos com a configuracao do multiterminal com servidores X aninhados, pre-
cisamos 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 conte udo:
1 Section "Monitor"
2 Identifier "MonitorLVDS"
3 EndSection
5 Section "Monitor"
6 Identifier "MonitorVGA"
7 Option "RightOf" "MonitorLVDS"
8 Option "Enable" "true"
9 EndSection
10
11 Section "Device"
12 MatchSeat "__sm501-dualhead__"
13 Identifier "videocard_sm501_dualhead"
14 BusID "PCI:4:1:0"
15 Driver "siliconmotion"
16 Option "PanelSize" "1360x768"
17 Option "Dualhead" "true"
18 Option "monitor-LVDS" "MonitorLVDS"
19 Option "monitor-VGA" "MonitorVGA"
20 EndSection
21
22 Section "Screen"
23 MatchSeat "__sm501-dualhead__"
24 Identifier "screen_sm501_dualhead"
25 Device "videocard_sm501_dualhead"
26 DefaultDepth 16
27
28 SubSection "Display"
29 Virtual 2720 768
30 EndSubSection
31 EndSection
9
6.2 Complementando a configurac
ao do Udev
Para nao precisar carregar nomes de terminal muito extensos, como aqueles gerados automati-
camente, voce pode criar um arquivo complementar /etc/udev/rules.d/72-tn-late-seat.rules4
com o seguinte conteudo:
1 TAG=="seat", ENV{ID_FOR_SEAT}=="usb-pci-0000_00_1d_7-usb-0_2", \
2 ENV{ID_SEAT}="seat-VGA"
3
4 TAG=="seat", ENV{ID_FOR_SEAT}=="usb-pci-0000_00_1d_7-usb-0_4", \
5 ENV{ID_SEAT}="seat-LVDS"
Os exemplos de configuracao que seguem abaixo baseiam-se na regra acima. Seguindo esta con-
vencao, 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.
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 $ sudo apt-get install xserver-xephyr
O multi-seat-xephyr instala um servico que e executado na inicializacao do sistema, mas ele nao
e executado automaticamente por padrao. Para executa-lo, sao necessarias duas providencias:
10
1 [default]
2 seat-parent-window=false
3 xephyr-options=-sw-cursor
5 [daemon]
6 host-seat=__sm501-dualhead__
7 host-options=-nolisten tcp -dpms -s 0
9 [seat-LVDS]
10 output=LVDS
11
12 [seat-VGA]
13 output=VGA
4 [Seat:-LVDS]
5 xdg-seat=seat-LVDS
6 xserver-command=multi-seat-xephyr
8 [Seat:-VGA]
9 xdg-seat=seat-VGA
10 xserver-command=multi-seat-xephyr
11
6.4 Multiterminal com Xorg e o driver de vdeo nested
Para configurar o multiterminal com o Xorg e o driver nested, voce pode comecar seguindo
o mesmo roteiro da secao anterior para a inicializacao do servico do multi-seat-xephyr, que ira
disparar o servidor X hospedeiro. Para executar os servidores X aninhados, crie/edite o arquivo
/etc/X11/xorg.conf.d/90-seat-tn.conf conforme abaixo.
ATENC
AO!! 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.
1 Section "Device"
2 Identifier "nested_device"
3 Driver "nested"
4 Option "Display" ":90"
5 MatchSeat "seat-LVDS"
6 MatchSeat "seat-VGA"
7 EndSection
9 Section "Screen"
10 Identifier "nested_screen_LVDS"
11 Device "nested_device"
12 DefaultDepth 16
13 Option "Origin" "0 0"
14 SubSection "Display"
15 Depth 16
16 Modes "1360x768"
17 EndSubSection
18 MatchSeat "seat-LVDS"
19 EndSection
20
21 Section "Screen"
22 Identifier "nested_screen_VGA"
23 Device "nested_device"
24 DefaultDepth 16
25 Option "Origin" "1360 0"
26 SubSection "Display"
27 Depth 16
28 Modes "1360x768"
29 EndSubSection
30 MatchSeat "seat-VGA"
31 EndSection
12
6.5 Problemas comuns
possvel que, ao inicializar o sistema, um ou outro terminal nao seja carregado corretamente.
E
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 $ sudo restart lightdm
ou
1 $ sudo restart gdm
13