Multiterminais
De Wiki do Ronald
(dif) ← Versão anterior | ver versão actual | Versão posterior → (dif)
O que é MULTITERMINAL?
“É DIVIDIR UM COMPUTADOR”
Multiterminais[1] são uma tecnologia e uma idéia inovadora ao mesmo tempo. Podem em muito contribuir para um aumento da difusão de conhecimento tecnológico e também de Inclusão Digital[2]. Os multiterminais permitem um melhor emprego do parque de computadores instalados em uma escola ou empresa e que as vezes não está sendo utilizado em todo o seu potencial. Para isso necessitamos compreender o que são multiterminais?
Para que possamos nos situar neste conceito podemos fazer uma rápida analogia com os antigos “mainframes”[3]. Os mainframes eram computadores grandes que dividiam seu poder de processamento e possibilitavam que inúmeros usuários o utilizassem ao mesmo tempo através de terminais diretamente conectados a ele, os chamados “terminais burros”. Todo o processamento era feito de maneira centralizada. Um mainframe permitia um grande número de terminais conectados, com sessões de trabalho independentes para cada usuário.
Agora podemos desenvolver um conceito prático de multiterminais então: “Um multiterminal é um computador com uma configuração particular que permite seu uso por várias pessoas simultâneamente”.
Onde começou?
Segundo pesquisas realizadas na internet, e de acordo com os seguinte artigos publicados, os multiterminais já são empregados a bastante tempo.
Em 1999:
Multi-Head Displays in Linux Using More Than One Screen in Linux Will Weisner Saturday, June 19, 1999 11:02:29 AM http://linuxplanet.com/linuxplanet/reports/820/1/
Em 2003:
XFree Local Multi-User HOWTO Svetoslav Slavtchev <users.sourcefourge.net> Sep 2003 http://www.ltn.lv/~aivils/
Em 2005:
- Miguel Freitas (PUC)[4]
- UFPR [5]
- Instituto Superior Fátima [6]
Em 2006:
- UNIOESTE [7]
No Instituto Superior Fátima o início foi em março de 2005, quando um projeto da instituição previa o aumento de laboratórios e eu enquando Gestor de TI da Instituição fui questionado sobre uma solução barata para ampliação de laboratórios.
Busquei uma solução e encontrei os multiterminais. Logo decidi, dominar e disseminar o conhecimento do emprego desta tecnologia. A sua grande aplicação é facilitar o acesso de mais pessoas as TICs e aproveitar os recursos oferecidos pelo crescimento rápido da configuração do computadores hoje disponíveis no mercado. Esse equipamentos possuem uma grande capacidade de processamento e memória e na maior parte não são usados em todo o seu potencial.
O projeto MULTILINUX.
Este PROJETO é para reunir o pessoas interessadas em formar uma equipe em torno desta tecnologia... Todos são bem vindos... Quem estiver interessado entre em contato: scherolt@gmail.com[8]
Usuários e desenvolvedores de todas as distribuições GNU/LINUX são bem vindos.
Objetivos Inicial:
É um projeto LIVRE, e ABERTO, que tem a idéia de divulgar está tecnologia, melhorar e ampliar seu uso e possibilidades.
Metas
- Melhorar o SCRIPT inicial e portar para as maiores distros GNU/LINUX. - Melhorar o FÓRUM do PROJETO. - Formar a equipe do PROJETO MULTILINUX. - Montar um SITE do PROJETO (Pode ser um WIKI)
Quem desejar colaborar com idéias.... PARTICIPE !!!
Onde usar?
Locais onde se tem a necessidade de um grande número de computadores:
- Laboratórios
- Bibliotecas
- Telecentros
- Escolas
- Bureau de serviços
- Cyber-Café
- Pequenas e médias empresas
- Serviços de digitação e acesso a internet...
Como funciona?
Os multiterminais tem o funcionamento semelhante aos mainframes, onde teremos vários monitores, placas de vídeo, teclados e mouses, conectados a um mesmo computador, compartilhando seu processamento e permitindo que vários usuário utilizem sessões de trabalho independentes. As ligações são físicas, e não são realizadas através de rede de comunicação como é o caso do LTSP[9] (Linux Terminal Server Project). Em multiterminais, as ligações ocorrem pela placa de vídeo, pelos mouses e teclados de maneira local, enquanto em um LTSP através da rede e das placas de rede, com o uso de um servidor central.Para tornar possível o uso de multiterminais exploramos a característica multi-usuário do Linux.
O sistema que emprego[10] e um multiterminal usado Xephyr[11]: O Xephyr é um tipo de servidor gráfico que utiliza outro servidor X (Xorg) para a exibição das imagens. O Xephyr funciona como cliente do Xorg, mas é também servidor para outros aplicativos, que o enxergam como um servidor X normal.
O que é preciso?
A configuração envolve um computador, os teclados e os mouses USB, as placas de vídeo e os monitores. No caso do seu computador possuir poucas saídas USB, pode ser utilizado um HUB USB para aumentar essa quantidade. Não existe uma configuração ideal, mas sim bom senso. Não dá para se pensar em um multiterminal com cinco monitores em um K6-2-500Mhz. Mas um com dois monitores sim, desde que o equipamento possua memória RAM suficiente, para duas instâncias do ambiente gráfico, que neste caso pode ser o XFCE4.
Nos testes que realizei usei um SEMPROM 2.2GHz, com 512 Mb e usei 5 monitores, sem maiores dificuldades. Claro que usar placas de vídeo iguais ajudam, mas não é algo obrigatório. Eu ja montei com quatro placas de vídeo diferente, e inclusive 1 AGP e outras 3 PCI. As placas de vídeo ONBOARD também podem ser usadas. Quem possui NOTEBOOK, ou placas de vídeo com saída DVI, também podem montar multiterminais.
Quais as Vantagens?
- Menor custo em equipamentos (1 CPU para até 7 Monitores, dependendo da placa mãe e quantidade de slots PCI, do processador empregado e da quantidade de memória);
- Menor número de pontos de rede (menos fios de rede, menos tomadas, menor tamanho do ativo de rede necessário para o laboratório);
- Menor número de pontos de energia (menor consumo, menor quantidade de tomadas, menor número de estabilizadores)
- Facilidade de manutenção (menor quantidade de computadores, emprego de equipamentos reserva para substituição)
- Facilidade de instalação de software (instalar e manter menos computadores)
- Excelente desempenho (A relação custo X benefício é excelente !!!)
- Apropriação de tecnologia (crescimento técnico, possibilidade de projetos para instalação)
Existem casos em que não deve ser usado?
- O som fica concorrido, sendo executado por todos os terminais;
- O acesso concorrido aos dispositivos removíveis;
- Limite para aplicações extremamente pesadas (ECLIPSE);
- Não permite o reboot da máquina;
- Portas USB ocupadas (necessidade HUB USB para aumentar o número de portas);
- No caso da CPU precisar manutenção, todos os terminais ficarão indisponíveis;
Solução para o Acesso concorrido aos dispositivos removíveis
No arquivo /etc/fstab
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 /dev/hda1 / reiserfs notail 0 1 /dev/hda2 none swap sw 0 0 /dev/hdb /media/cdrom0 udf,iso9660 users,noauto 0 0 /dev/fd0 /media/floppy0 auto,vfat rw,users,noauto,sync 0 0 /dev/sda1 /media/usbdisk auto rw,users,umask=000,sync 0 0
Note que foi adicionado a opção "users" para o CD-ROM, o FLOPPY e a PEN-DRIVE, de maneira que permite que todos os usuários tenham acesso aos dispositivos removíveis.
Como fazer manualmente ???
Meu projeto é baseado no howto (como fazer) da UFPR1, e a minha contribuição é criar um projeto para facilitar ao máximo a instalação através de scripts automáticos, aproximando esta tecnologia do usuário leigo. A aplicação desta solução é bem ampla e permite seu emprego em vários campos, tais como: web cafés, telecentros, projetos de Inclusão Digital, laboratórios escolares, pequenas empresas, locais onde se empregue o computador em tarefas administrativas, etc.
Os objetivos principais desta idéia são a economia de recursos, a diminuição da ociosidade de equipamentos que crescem em performance exponencialmente por força do mercado, o aumento da capacidade já instalada de equipamentos. Fica bem claro que é um excelente solução para laboratórios escolares, porque normalmente usamos acesso internet, digitação e softwares sem grande necessidade de recursos computacionais.
Cabe ressaltar que esta solução não deve ser empregada onde é necessário grande recurso gráfico ou processamento muito pesado, como codificação de vídeo, jogos 3D ou aplicações extremamente pesadas.
Vamos aos passos de instalação (Clique aqui.. Veja a receita!)
Script Automático - Agora Sim !!!
Download do MULTILINUX.SH [12]
Depois de baixar troque as permissões para execução e rode como ROOT.
$ su - # wget http://www.ronaldcosta.pro.br/sistemas/multilinux/download/multilinux.sh # chmod +x multilinux_ubuntu610_v1.0_11Mar07.sh # ./multilinux_ubuntu610_v1.0_11Mar07.sh
RECEITA DE BOLO
#! /bin/bash
##################################################################################
#
# Script de configuração do MULTILINUX para Ubuntu 6.10
# Autor: Ronald Costa - Fev 2007 - Versão 1.1
# E-mail: ronaldcosta@institutofatima.edu.br
#
# Este script é LIVRE e pode ser usado sem nenhuma restrição !!!
# APENAS MANTENHA OS CRÉDITOS AO AUTOR !!!
#
#
##################################################################################
##################################################################################
# - Abra um terminal como usuário no ambiente gráfico
# - Digite gksu gedit script.sh
# - Cole este script no editor e salve
# - Feche o editor
# - chmod 777 script.sh
# - Execute o script
# - gksu script.sh
##################################################################################
zenity --title="MULTILINUX" --info --text="Sistema MULTILINUX para UBUNTU 6.10
www.ronaldcosta.pro.br
scherolt@gmail.com"
zenity --title="MULTILINUX" --info --text="Este sistema não tem fins comerciais.
Sua licença é GPL. Mantenha este software livre!"
zenity --title="MULTILINUX" --info --text="Este script vai ajudar na instalação
do MULTILINUX. Você deve ter conectado os teclados e mouses USB,
bem como ter instalado as placas de vídeo adicionais."
zenity --title="Atenção !!!" --warning --text="Caso ainda não tenha instalado placas de vídeo,
teclados e mouses, clique em CANCELAR, desligue o computador e realize a instalação.
Depois execute novamente o script para instalação." && RESP=0 || RESP=1
#echo Retorno: $RESP
if [ $RESP -eq 1 ]; then
zenity --title="MULTILINUX" --info --text="Terminando... Execute novamente o script
para instalação, depois de ter instalado as placas, teclados e mouses."
exit
fi
################################################################
# Pergunta o PROXY da REDE se for o caso....
################################################################
ACTION=$(zenity --title="Acesso a Internet" --text="Você utiliza PROXY em sua rede?:" --list --column "Ação" SIM NÃO);
case "$ACTION" in
"SIM" )
XPROXY=$(zenity --title="Endereço do Proxy da Rede !" --entry --text="Insira o endereço de PROXY da rede aqui ! (Ex: http://10.67.120.35:3128)");
;;
"NÃO" )
zenity --info --title "Sem Proxy !" --text "O Instalador vai considerar que você não usa PROXY !";
;;
*)
zenity --error --title "Alerta" --text "Nenhuma ação foi selecionada. O Instalador vai considerar que você não usa PROXY !";
;;
esac
export http_proxy="$XPROXY"
export ftp_proxy="$XPROXY"
################################################################
# Verifica se o USUARIO é ROOT....
################################################################
#verifica se o usuário tem privilégios de ROOT para poder alterar
# configurações do sistema [ "$USER" != "root" ]
if ! [ "$USER" = "root" ]; then
zenity --title="MULTILINUX" --info --text="É necessário privilégios de ROOT.
O usuário não tem permissão para alterar configuração do sistema necessárias
para o funcionamento dos MULTITERMINAIS..."
exit
fi
################################################################
# Verifica a Quantidade de PLACAS, TECLADOS E MOUSES....
################################################################
QT_PLACAS=`lspci | grep -c VGA | cut -d" " -f1`
#Sai se existir apenas uma placa de video
if [ $QT_PLACAS = 1 ]; then
zenity --title="MULTILINUX" --info --text="Não será possível configurar o MULTILINUX,
existe apenas UMA PLACA de vídeo..."
exit
fi
cd /tmp
cat /proc/bus/input/devices > /tmp/devices.txt
QT_TECLADOS=`cat devices.txt |grep keyboard -A 2| grep Phys |grep input0|wc -l`
#Sai se existir apenas um teclado
if [ $QT_TECLADOS = 1 ]; then
zenity --title="MULTILINUX" --info --text="Não será possível configurar o MULTILINUX,
existe apenas UM TECLADO conectado..."
exit
fi
QT_MOUSES=`cat devices.txt |grep Mouse -A 2| grep Phys |grep input0|wc -l`
#Sai se existir apenas um mouse
if [ $QT_MOUSES = 1 ]; then
zenity --title="MULTILINUX" --info --text="Não será possível configurar o MULTILINUX,
existe apenas UM MOUSE conectado..."
exit
fi
zenity --title="MULTILINUX" --info --text="Foram detectadas $QT_PLACAS placas de vídeo.
O sistema vai tentar configurar $QT_PLACAS MULTITERMINAIS..."
############################################################
# ---- Executa a configuracao do XORG
############################################################
Xorg -configure :3
cp /etc/X11/xorg.conf /tmp
cd /tmp
sed '/Section \"ServerLayout\"/,/EndSection/d' xorg.conf > novo.xorg.conf
cp novo.xorg.conf novo.xorg.conf.aux
sed '/Section \"DRI\"/,/EndSection/d' novo.xorg.conf.aux > novo.xorg.conf
cp novo.xorg.conf novo.xorg.conf.aux
sed '/Section \"Screen\"/,/EndSection/d' novo.xorg.conf.aux > novo.xorg.conf
cp novo.xorg.conf novo.xorg.conf.aux
sed '/Section \"Monitor\"/,/EndSection/d' novo.xorg.conf.aux > novo.xorg.conf
cp novo.xorg.conf novo.xorg.conf.aux
sed '/Section \"Device\"/,/EndSection/d' novo.xorg.conf.aux > novo.xorg.conf
cp /root/xorg.conf.new /tmp
sed '/Section \"Files\"/,/EndSection/d' xorg.conf.new > novo.xorg.conf2
cp novo.xorg.conf2 novo.xorg.conf.aux
sed '/Section \"Module\"/,/EndSection/d' novo.xorg.conf.aux > novo.xorg.conf2
cp novo.xorg.conf2 novo.xorg.conf.aux
sed '/Section \"InputDevice\"/,/EndSection/d' novo.xorg.conf.aux > novo.xorg.conf2
cat novo.xorg.conf2 >> novo.xorg.conf
sed 's/Mouse0/Configured Mouse/g' novo.xorg.conf > novo.xorg.conf2
cp novo.xorg.conf2 novo.xorg.conf.aux
sed 's/Keyboard0/Generic Keyboard/g' novo.xorg.conf.aux > novo.xorg.conf
rm -rf /root/xorg.conf.new
#########################################
# DONT VT SHITCH
#########################################
######################################
# Novo XORG OK esta em novo.xorg.conf
######################################
# Remove o /etc/X11/xorg.conf e coloca o novo !!!
mv /etc/X11/xorg.conf /etc/X11/xorg.conf.antes.do.multiterminal
# Move o /tmp/novo.xorg.conf para /etc/X11/xorg.conf
mv /tmp/novo.xorg.conf /etc/X11/xorg.conf
######################################
# Seleciona uma RESOLUCAO
######################################
RESOLUCAO=$(zenity --text="Escolha a Resolução desejada !" --list --column "Opção" 1024x768 800x600 640x480);
cp /etc/X11/xorg.conf /tmp/xorg.conf.teste
touch /tmp/resolucao.txt
echo " Modes \"$RESOLUCAO\"" > /tmp/resolucao.txt
sed '/Depth 8/r resolucao.txt' xorg.conf.teste > xorg.conf.ok
sed '/Depth 15/r resolucao.txt' xorg.conf.ok > xorg.conf.teste
sed '/Depth 16/r resolucao.txt' xorg.conf.teste > xorg.conf.ok
sed '/Depth 24/r resolucao.txt' xorg.conf.ok > xorg.conf.teste
rm /tmp/xorg.conf.ok
mv /tmp/xorg.conf.teste /etc/X11/xorg.conf
######################################
# Montar o novo GDM.CONF
######################################
# prepara o GDM.CONF removendo o que está depois de [servers]
cd /tmp
QT_TERMINAIS=$QT_PLACAS
sed '/\[servers\]/,$d' /etc/X11/gdm/gdm.conf > /tmp/gdm.conf2
echo>>gdm.conf2
# montando... o novo gdm
echo "[servers]" >> gdm.conf2
for ((i=0;i<=$QT_TERMINAIS;i++))
do
echo "$i=Xephyr$i" >> gdm.conf2
done
echo >> gdm.conf2
echo >> gdm.conf2
echo "[server-Xephyr0]" >> gdm.conf2
echo "name=Xephyr0" >> gdm.conf2
echo "command=/usr/bin/X -ac -br" >> gdm.conf2
echo "handled=false" >> gdm.conf2
echo "flexible=false" >> gdm.conf2
echo >> gdm.conf2
echo >> gdm.conf2
for ((i=1;i<=$QT_TERMINAIS;i++))
do
t=$((i-1))
echo "[server-Xephyr$i]" >> gdm.conf2
echo "name=Xephyr$i" >> gdm.conf2
echo "command=/usr/sbin/Xephyr.sh -display :0.$t -xauthority /var/lib/gdm/:0.Xauth -fullscreen -kbdphys \
TECLADO$i -mousephys MOUSE$i -use-evdev" >> gdm.conf2
echo "handled=true" >> gdm.conf2
echo "flexible=false" >> gdm.conf2
echo >> gdm.conf2
echo >> gdm.conf2
done
######################################
# Detectar os teclados e mouses (USB)
######################################
cd /tmp
cat /proc/bus/input/devices > /tmp/devices.txt
QT_TECLADOS=`cat devices.txt |grep keyboard -A 2| grep Phys |grep input0|wc -l`
cat devices.txt |grep [kK]eyboard -A 2| grep Phys |grep input0|cut -d "=" -f2 > teclados.txt
QT_MOUSES=`cat devices.txt |grep Mouse -A 2| grep Phys |grep input0|wc -l`
cat devices.txt |grep [mM]ouse -A 2| grep Phys |grep input0|cut -d "=" -f2 > mouses.txt
echo "QT de Teclados = $QT_TECLADOS"
echo "-----------------------------------------"
cat teclados.txt
echo
echo "QT de Mouses = $QT_MOUSES"
echo "-----------------------------------------"
cat mouses.txt
echo
################################################################
# Trocando endereços dos TECLADOS no GDM.CONF
################################################################
echo "TROCANDO TECLADOS"
echo "-----------------------------------------"
i=1
cat teclados.txt | while read ENDERECO ; do NOME="TECLADO$i"; sed s,$NOME,$ENDERECO,g gdm.conf2 > gdm.conf3;\
mv gdm.conf3 gdm.conf2; i=$((i+1)) ; done
echo "OK"
echo "-----------------------------------------"
echo "TROCANDO MOUSES"
echo "-----------------------------------------"
# Trocando endereços dos MOUSES no GDM.CONF
i=1
cat mouses.txt | while read ENDERECO ; do NOME="MOUSE$i"; sed s,$NOME,$ENDERECO,g gdm.conf2 > gdm.conf3;\
mv gdm.conf3 gdm.conf2; i=$((i+1)) ; done
echo "OK"
echo "-----------------------------------------"
# troca nome para GDM.CONF.OK
mv gdm.conf2 gdm.conf.ok
# faz BACKUP do GDM.CONF original
cp /etc/X11/gdm/gdm.conf /etc/X11/gdm/gdm.conf.antes.do.multiterminal
# Coloca no local o GDM.CONF
cp /tmp/gdm.conf.ok /etc/X11/gdm/gdm.conf
echo "GDM.CONF"
echo "-----------------------------------------"
######################################
# Baixar o Xhephyr e instalar
######################################
cd /tmp
wget http://www.c3sl.ufpr.br/multiterminal/howtos/xephyr-precompiled.tar.bz2
tar -xjf xephyr-precompiled.tar.bz2 --directory /usr/local/
echo "DOWNLOAD OK"
echo "-----------------------------------------"
wget http://www.ronaldcosta.pro.br/sistemas/multilinux/download/Xephyr.sh
cp /tmp/Xephyr.sh /usr/sbin/Xephyr.sh
chmod +x /usr/sbin/Xephyr.sh
echo "Xephyr.sh - OK"
echo "-----------------------------------------"
######################################
# Acertar o erro do teclado
######################################
cd /tmp
wget http://www.c3sl.ufpr.br/multiterminal/howtos/xkb-evdev.tar.gz
tar -zxf xkb-evdev.tar.gz --directory /etc/X11/
for ((i=0;i<=$QT_TERMINAIS;i++))
do
echo 'rules = "evdev"' >> /usr/X11R6/lib/X11/xkb/X$i-config.keyboard
echo 'model = "abnt2"' >> /usr/X11R6/lib/X11/xkb/X$i-config.keyboard
echo 'layout = "br"' >> /usr/X11R6/lib/X11/xkb/X$i-config.keyboard
done
cp /etc/X11/xkb/rules/evdev /etc/X11/xkb/rules/evdev.antes.do.multilinux
cat /etc/X11/xkb/rules/evdev | sed 's/pc\/pc(pc104)+pc\/br/pc(pc104)+br/'>/etc/X11/xkb/rules/evdev.ok
rm /etc/X11/xkb/rules/evdev
mv /etc/X11/xkb/rules/evdev.ok /etc/X11/xkb/rules/evdev
######################################
# TERMINADO !!!
######################################
# Solicitar o REBOOT ou recarregar o X...
zenity --title="Atenção !!!" --warning --text="Atenção!!! O Sistema será reiniciado para finalizar as configurações. Clique em OK para reiniciar. Clique em CANCELAR para não reiniciar." && RESP=0 || RESP=1
if [ $RESP -eq 1 ]; then
zenity --title="MULTILINUX" --info --text="Terminando... O Sistema precisa ser reiniciado."
exit
fi
reboot
######################################################################
# Agradecimentos aos amigos que colaboraram:
######################################################################
# * Eustáquio Mendes Guimarães
# * Luiz Felipph
# * Elder Max
Dicas.
Observação: nas novas versões do Debian Etch (ubuntu 6.10), houve algumas mudanças, e pode ser que o teclado fique todo desconfigurado. Para isso, basta modificar a linha 70 do arquivo /xkb/rules/evdev
Mude a linha de:
abnt2 br = pc/pc(pc104)+pc/br
Para:
abnt2 br = pc(pc104)+br
Colabore e Participe - LISTA do MULTILINUX
Qualquer dúvida ou discussão no sentido de colaborar com o PROJETO, acesse a LISTA do MULTILINUX:
LISTA DO MULTILINUX [13]
Qualquer colaboração para melhorar o PROJETO é bem vinda...
Ajude, teste, aponte melhorias, dê novas idéias....
Entre em contato...
Acesse meu site e entre em contato:
Ronald Emerson Scherolt da Costa - www.ronaldcosta.pro.br [14]
e-mails:
ronaldcosta@institutofatima.edu.br
scherolt@cds.eb.mil.br
TESTE


