Oi-lab: novo projeto para facilitar a configuração do multiterminal no Ubuntu 16.04.3 e posteriores

Bom dia!

Depois da experiência frustrada em produzir uma remasterização do openSUSE pré-configurada para multiterminais, comecei a pesquisar uma solução similar para o Debian 9. Consegui produzir uma ISO instalável com o sistema pré-configurado para os multiterminais, mas a experiência de uso não me agradou muito (o visual acabou ficando praticamente idêntico ao do Xubuntu e o consumo de memória ainda acabou ficando maior que o do Lubuntu 16.04.3 de 32 bits), o que levou a desistir do projeto e voltar a focar-me na família Ubuntu mesmo (mas valeu o aprendizado).

Durante o processo de construção da ISO do Debian, tive que empacotar os meus scripts e arquivos de configuração no formato .deb para que estes pudessem ser instalados no novo sistema (a ferramenta simple-cdd do Debian não permite copiar arquivos soltos para o sistema recém-instalado). Como eu agora estava com os pacotes .deb já prontos, decidi fazer as adaptações necessárias para o Ubuntu e subir para um novo PPA na plataforma Launchpad.

Após algumas semanas de testes, acredito que os pacotes já estão prontos para divulgação. Então, com grande satisfação, apresento-lhes o nosso projeto oi-lab, conjunto de arquivos de configuração e scripts destinados aos computadores multiterminais do ProInfo. O projeto está disponível no GitHub em https://github.com/oiteam/oi-lab.

Para configurar o multiterminal em uma instalação nova do Ubuntu 16.04.3 ou alguma de suas derivações usando este novo projeto, basta instalar os pacotes necessários do nosso PPA:

sudo apt-add-repository ppa:oiteam/oi-lab
sudo apt update
sudo apt install oi-lab-proinfo-multi-seat-utils oi-lab-userful-rescue

Obs.: para uma nova instalação do Ubuntu em que se pretenda instalar o oi-lab-userful-rescue para corrigir o bug da tela listrada, particione o HD, criando uma partição de 1 GB, formatada como ext2 e com ponto de montagem /boot.

Caso queira utilizar a nossa implementação do “freeze” para os usuários alunos, instale o pacote oi-lab-freeze-users. Se você utiliza Xubuntu ou Lubuntu e deseja adicionar uma entrada no menu de contexto para abrir um Terminal/Gerenciador de Arquivos/Editor de textos como root, instale o pacote oi-lab-lubuntu-extra-settings ou oi-lab-xubuntu-extra-settings.

Algumas diferenças do oi-lab em relação aos nossos roteiros anteriores para configurar o multiterminal no Ubuntu são as seguintes:

  • Não utilizamos mais o Xephyr para subir os terminais secundários. Em seu lugar, utilizamos o próprio Xorg com um fork do driver de vídeo “nested” que estamos mantendo em https://github.com/oiteam/xf86-video-nested.

  • A associação de algumas portas USB e saídas de vídeo foi invertida. Agora, a porta USB 1 está associada à saída de vídeo LVDS da placa TN-502 e a porta USB 2, à saída de vídeo VGA. Se você já tinha um multiterminal funcionando segundo o roteiro antigo e reinstalar o sistema usando os pacotes do oi-lab, você vai precisar permutar os cabos USB dos hubs ou os cabos VGA dos monitores.

2 curtidas

Tente usar o Siduction. Pra mim a melhor distro do momento. 3 anos usando ela aqui, nunca deu problema. Suport 24h no Freenode - OFTC - canal #siduction - direto com os devs. É uma distro da Alemanha baseada em Debian (Sid). Mas, ao contrário do que se pensa não é nada instável, pois os devs trabalham nela todos os dias… Pelo menos tente conhecê-la e conversar com o pessoal do forum e do canal. Estou naquele canal como “Achylles”…

Testei o projeto que você disponibilizou lá no Gitlab em cima do Lubuntu, o pregão do laboratório é o 83/2008, pois bem, venho fazendo vários testes e somente o Lubuntu ao meu ver foi satisfatório neste laboratório, vi esta tua postagem e fiquei um pouco curioso sobre Xephry que não é mais utilizado, neste projeto Oi-lab usando o próprio Xorg otimiza a saída de vídeo? Estou com laboratório funcionando perfeitamente usando o outro projeto, vale a pena tentar fazer essas modificações? Uma curiosidade, tenho 1 terminal com 3 monitores, e as conexões USB nele não obedeceu uma lógica de sequência visual, USB1 ficou onde se espera, mas o 2 ficou na última porta, só funcionou a tela 3 assim, associando na última porta de baixo contando da esquerda pra direita visualizando por trás. Enfim, venho acompanhando seu trabalho e venho a agradecer pela colaboração em trazer uma solução a esses multiterminais hostis que somente pude solucionar recorrente ao seu trabalho. Obrigado.

1 curtida

Olá, Adriano!

Respondendo às suas indagações:

  1. Apesar de o pacote xserver-xephyr-hwe-16.04, na versão 1.19 disponível nos repositórios oficiais do Ubuntu 16.04.3, já conter todas as funcionalidades necessárias para fazer o multiterminal funcionar como precisamos, o Xephyr em si ainda possui algumas limitações em relação ao próprio Xorg para uso em multiterminais, a saber: (a) a falta de suporte completo a dispositivos de entrada, como joysticks ou telas touchscreen, (b) a necessidade de se configurar o gerenciador de display (mais conhecido como gerenciador de login) para usar o Xephyr no lugar do Xorg (o GDM, por exemplo, não permite esta alteração) © descobrimos que o Xephyr ainda possui um bug que faz com ele trave caso você desconecte e reconecte o teclado e o mouse no hub USB, o que pode se tornar um problema recorrente em hubs com mau contato. Além disso, o driver para teclado/mouse do Xephyr será removido na próxima versão 1.20, inviabilizando completamente a sua utilidade para multiterminais no futuro.

  2. A fim de buscar uma alternativa para o Xephyr, nós iniciamos um fork do driver de vídeo xf86-video-nested, que permite executar o próprio Xorg em cima de outro Xorg, exatamente como o Xephyr faz. O nosso projeto está disponível em https://github.com/oiteam/xf86-video-nested. A ideia é tentar portar o máximo possível do código do Xephyr para este driver, de modo a garantir um desempenho gráfico o mais próximo possível do Xephyr, que já não é grande coisa. O driver atualmente está minimamente funcional, mas ainda apresenta alguns efeitos indesejados, como o atraso na renderização de uma janela quando você arrasta ela pelo desktop. O desenvolvimento dele segue ainda em um ritmo um pouco lento (pois temos outras prioridades em nossa rede no momento), então toda contribuição será bem-vinda.

  3. Com relação à associação das portas USB às saídas de vídeo, a única coisa que podemos garantir no momento é a seguinte: num computador do ProInfo Urbano, a porta USB 1 está associada à saída de vídeo LVDS da placa TN-502 (aquela mais próxima da tampa do gabinete, cujo conector é ligado na placa por meio de um cabo flat), enquanto a porta USB 2 está associada à saída de vídeo VGA (aquela mais próxima da placa-mãe, cujo conector é soldado na placa). De fato, isto foi uma inversão em relação à convenção adotada em nossos roteiros anteriores. De qualquer modo, a disposição física das portas USB 1, 2, 3 e 4 pode variar de uma placa-mãe para outra. Espero que o pessoal do C3SL consiga dar continuidade ao nosso trabalho, implementando uma ferramenta de associação dinâmica dos terminais aos moldes do Userful Multiseat (“Pressione F1 no teclado em frente a este monitor”).

Parabéns, Laércio e equipe.
Estou usando sua nova solução com Lubuntu 16 e está mais estável que no Debian (também uma solução de vcs). Estou instalando nas máquinas e o tempo gasto no processo ficou bem mais curto e olhe que temos uma limitação de internet (como toda escola).

Um dos poucos ajustes que precisei fazer foi quanto ao wi-fi, alterei o arquivo /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf modificando o valor de 3 para 2. A conexão ficava caindo.

Uma dúvida, me lembro de ter lido em algum lugar algo sobre epoptes ou italc, existe alguma alternativa para os multiterminais?

Abraço!

O Epoptes funciona bem com os multiterminais, com algumas ressalvas:

  1. Você precisa modificar uma linha do código Python do epoptes-server para fazer as transmissões de tela do servidor para os clientes funcionar em todos os terminais, conforme o patch abaixo:
=== modified file 'epoptes/ui/gui.py'
--- epoptes/ui/gui.py	2014-05-17 03:44:40 +0000
+++ epoptes/ui/gui.py	2015-09-10 15:55:20 +0000
@@ -304,7 +304,7 @@
         self.execOnSelectedClients(['stop_screensaver'],
             mode=EM_SYSTEM_AND_SESSION)
         self.execOnSelectedClients(["receive_broadcast", self.vncserverport, 
-            self.pwd, fullscreen], mode=EM_SYSTEM_OR_SESSION)
+            self.pwd, fullscreen], mode=EM_SESSION_OR_SYSTEM)
 
 
     def broadcastScreen(self, widget):
  1. Mesmo que você habilite a captura do teclado e mouse do aluno pelo Epoptes (edite o arquivo ~/.config/epoptes/settings do professor e altere o valor da variável grabkbdptr para True), você só vai conseguir capturar os botões do mouse do aluno, mas não vai conseguir impedi-lo de movimentar o ponteiro do mouse dele (isto é uma limitação do x11vnc). Quem trabalha com Educação Infantil sabe como isto pode ser irritante (você tenta acessar remotamente a tela do aluno, mas tem que ficar disputando com ele a posição do ponteiro para poder clicar em algum botão ou link). É possível contornar esta limitação, mas ela não é tão simples — eu posso detalhar aqui depois, se houver interesse.

Com relação ao iTalc, eu sugiro ficar de olho no seu sucessor, o Veyon. Ele parece ser bastante promissor e, pelo que eu vi, vai ser mais fácil utilizar o Veyon que o iTalc para os multiterminais.

1 curtida

A minha também ficava caindo, mas solucionei instalando o wicd e removendo o network manager, tá funcionando tranquilo e sem dores de cabeça.

Boa tarde amigo! Instalei a versão estável e fiz o comando como está acima…após isso dei o reboot. Porém não aconteceu nada e não achei aonde fazer a configuração, como era no LE 5. Aonde faço a configuração? As máquinas daqui são do pregão 23/2012. Obrigado

Boa tarde, Túlio!

Infelizmente, esta solução não é compatível com os computadores do pregão 23/2012, devido à falta de um driver de vídeo compatível com as placas TN-750. Apenas os pregões 83/2008, 68/2009 (2º lote) e 71/2010 são suportados no momento.

Que pena amigo…mas obrigado pela atenção e parabéns pelo ótimo trabalho!

1 curtida

Em todo caso, é possível para este pregão, em princípio, substituir a placa TN-750 por uma placa de vídeo moderna, de preferência da AMD, e configurar o multiterminal manualmente.

1 curtida

Isso já vai além dos meus conhecimentos…rsrs…vou continuar aguardando uma solução mais simples para poder atualizar para o LE6 aqui no laboratório. Muito obrigado amigo e mais uma vez parabéns pelo trabalho que está realizando!

1 curtida

Olá @lbssousa testei essa solução no 83/2008 tanto com o lubuntu 17.10 quanto com o lubuntu 16.04.3, a única coisa que não funcionou em ambos os casos foi o login automatico. Não deveria ser configurado automaticamente ao instalar? Se não, como faço para os terminais logarem automaticamente como no oi-suse-pms ? Grato pela atenção.

Boa tarde!

Instalei a solução de vocês e está tudo funcionando bem - pregão 83/2008.
Gostaria de saber se existe alguma solução ou recomendação para o projetor Diebold?

Grato,

Nós optamos por não mais ativar o login automático por padrão, mas durante a instalação é criado um arquivo de configuração pronto em /etc/lightdm/lightdm.conf.d/10-oi-lab-autologin.conf. Basta editá-lo, descomentando as linhas desejadas, e reiniciar o LightDM.

Boa noite! Estou com um problema, os professores me reclamaram dos alunos “bagunçarem” a área de trabalho , por isso, gostaria de saber se há alguma maneira de impedir ou alguma forma da seção dar “refresh(voltar ao que estava configurado no freeze)” ao deslogar e relogar ?

OBS: Utilizo ubuntu mate com multiterminal

Você configurou o multiterminal usando os pacotes do oi-lab? Em princípio, a configuração da área de trabalho dos alunos deveria, sim, voltar ao estado original (como foi personalizado pelo usuário freezetemplate) após o logoff.

Se isto não está acontecendo com você, é porque provavelmente o sistema tem deixado algum processo rodando em segundo plano pelo seu usuário, mesmo após o logoff (por exemplo, pelo que eu tenho lido, o epoptes-client costuma deixar esses rastros). Isto impede que a pasta temporária do aluno seja desmontada após o logoff.

Se você está com a versão 16.04 do Ubuntu MATE, você pode tentar forçar o sistema a encerrar todos os processos do aluno após o logoff, e aí, sim, talvez a desmontagem da pasta temporária volte ao normal. Edite o arquivo /etc/systemd/logind.conf, colocando a opção KillUserProcesses=yes. A partir da versão 16.10, este já é o comportamento padrão do sistema, e nenhuma configuração é necessária.

Obrigado! Irei testar assim que possível. Sim, utilizo os pacotes da oi-lab para o multiterminal. Um caso estranho ocorreu, em dois computadores quando uso o comando userful-rescue-enable, coloco o sim e ele desliga, ligo novamente vem a tela para apertar os “f” até ai tudo tranquilo e tudo funcionando, mas quando aparece a tela de login apenas o monitor principal fica funcionando os outros dois ficam em “espera” , não liga o monitor da mesma forma quando apenas a usb esta na posição errada e no comando loginctl list-seats não aparece a placa, mas na lspci -vv aparece que ela está presente no 02:02.0. Sabe o que pode estar acontecendo?

OBS: consegui contornar parte do problema instalando o xephyr( os 3 monitores ligaram), mas todas as USBs funcionam penas para o monitor principal

Olá Laércio,
Estou com um computador pregão 71/2010 que teve sua placa mãe substituída, funcionando como monoterminal. Existe algum procedimento para ativar o multiterminal usando o oi-xubuntu ou oi-suse nesse computador. Aguardo contato.

Experimente instalar o OI-Xubuntu a partir desta ISO: https://drive.google.com/open?id=1I4vlRWa3kLD4s8-uRnDYst0yRcfUo8B_. Ele já vem com o multiterminal pré-configurado.