FuncionamentoDoAssistenteDeConfiguracaoDoMultiterminal - UFSC/moodle-provas-livecd-provas GitHub Wiki
Esta página contém informações sobre o funcionamento do assistente de configuração do multiterminal do LiveCD, presente no pacote moodle-multiseat e que é ativado quando o usuário seleciona a opção de Multiterminal no menu de inicialização. Ela contêm também algumas informações históricas sobre o hardware e software utilizado onde o sistema foi testado durante o desenvolvimento.
- Identifica o BusId de cada placa de vídeo e grava os arquivos de configuração do Xorg de cada terminal em /etc/X11/xorg-config#.conf e /etc/X11/xorg-seat#.conf (onde # é o número do terminal) a partir dos modelos em /opt/provas/multiseat/templates/
- Identifica quais dispositivos em /dev/input/event* são mouses e quais são teclados.
- Inicia um processo do Xorg no primeiro monitor do computador.
- Inicia a interface gráfica do assistente de configuração no Xorg iniciado anteriormente.
- Iniciar uma thread para cada teclado monitorando o evento KEY_F1, exibe a tela da tecla F1 para o usuário e aguarda ele pressionar F1.
- Inicia uma thread para cada mouse, monitorando o evento BTN_MOUSE, exibe a tela do Mouse para o usuário e aguarda ele pressionar o botão esquerdo do mouse.
- Criar uma regra no udev para o teclado e o mouse selecionados pelo usuário e as carregada no udev.
- Finaliza o programa de configuração que está rodando no Xorg do terminal que já foi configura e deixa o Xorg do usuário iniciar.
- Repete o processo para o segundo terminal (a partir do terceiro passo).
Procedimento de instalação:
apt-get install python2.7
Versão utilizada: 2.7.3-0ubuntu3.1
Módulo python-evdev - http://packages.python.org/evdev/
Procedimento de instalação:
apt-get install python-pip python2.7-dev
pip install evdev
Versão utilizada: 0.3.1
Procedimento de instalação:
apt-get install python-gi
Versão utilizada: 3.2.2-1~precise
Procedimento de instalação:
apt-get install python-zmq
Versão utilizada: 2.1.11-1
Procedimento de instalação:
apt-get install python-yaml
Versão utilizada: 3.10-2
OBS: Este pacote é necessário apenas para editar as janelas do assistente de configuração do multiseat, arquivo /etc/multiseat/interface/interface.glade.
Procedimento de instalação:
Apt-get install glade
Versão utilizada: 3.12.1-0ubuntu1
- Teclado: https://commons.wikimedia.org/wiki/File:Computer_keyboard_US.svg
- Mouse: https://commons.wikimedia.org/wiki/File:Souris_schema_svg.svg
As imagens acima foram editadas com o software Inkscape (versão 0.48.3.1-1ubuntu1.1), disponível no repositório oficial do Ubuntu.
- Processador: Intel Core2Duo E8500 @3.16GHz
- Placa mãe: ECS GF7100/7050PVT-M3 MCP73 - BIOS Release 26/03/2008
- Placa de vídeo onboard: NVIDIA Corporation C73 [GeForce 7100 / nForce 630i] (rev a2)
- Placa de vídeo offboard: NVIDIA Corporation G72 [GeForce 7300 SE/7200 GS] (rev a1)
- Memória RAM: 4GB
- Disco rígido: SAMSUNG HD322HJ 1AC0 320GB
- Monitor 1: LG Flatron L1755S
- Monitor 2: LG Flatron W1952TQ
- IMPORTANTE: O parâmetro da BIOS PCI/PnP Setup -> Init Display First foi configurado com o valor Onboard VGA, quando ele estava configurado com PCI-E, a placa de vídeo offboard desligava o monitor após 10 minutos, mesmo com o gerenciamento de energia do monitor desativado no Xorg (DPMS).
- Sistema operacional: Ubuntu 12.04.1 LTS 32-bit
- Kernel: 3.2.0-32-generic-pae i686 ($ uname -a)
- xserver-xorg: X.Org X Server 1.11.3 (7.6+12ubuntu1) ($ X -version)
- LXDE: 0.5.0-4ubuntu3 ($ dpkg-query -W lxde)
- Python: 2.7.3
-
Tanto o driver nouveau quanto o driver nvidia funcionaram bem na configuração final, só ocorreram problemas quando utilizava-se o gerenciador de login lightdm (padrão do ubuntu), nesse caso usando o driver nouveau, um dos terminais não carregava o vídeo. OBS: O driver nvidia tem melhor perfomance 3D.
-
O driver dos dispositivos de entrada (input) no Xorg deve ser o evdev, ele é uma interface direta com os dispositivos em /dev/input/event# (Onde # é o número associado ao dispositivo, esse número não é fixo, ele pode mudar a cada boot, principalmente se for conectado algum novo dispositivo de entrada na máquina). O driver mouse faz interface apenas com os /dev/input/mouse# e no nosso caso ele não é útil.
-
Nas versões atuais do Xorg não é necessário especificar o driver de vídeo, pois ele identifica o modelo da placa de vídeo e sabe qual driver carregar, caso exista mais de um driver para aquela placa de vídeo, ele tenta carregar cada um deles e para quando carrega um com sucesso, respeitando a ordem de prioridade do driver (TODO: descobrir se essa lista de prioridade é do Xorg mesmo). No caso das placas de vídeo da nvidia, existem 4 drivers possíveis, sendo que o vesa é um driver genérico, são eles em ordem de prioridade: nvidia, nouveau, nv, vesa.
-
Os monitores LCD testados também funcionaram corretamente sem precisar especificar a resolução, todos carregaram com a resolução nativa (resolução correta do monitor).
-
Os terminais (seats) são numerados a partir do número 1 (um).
-
Os scripts de inicialização do Xorg devem ser separados para que cada X possa ser iniciado por um usuário diferente, tendo em vista que não é carregado um gerenciador de login, nesse caso é necessário alterar a permissão de inicialização do X, para que usuários comuns consigam iniciá-lo. O procedimento é editar o arquivo: /etc/X11/Xwrapper.config e deixar a seguinte linha assim: allowed_users=anybody . OBS: O comando
# dpkg-reconfigure x11-common
também permite alterar esse arquivo via uma interface em modo texto no terminal. -
Para um multiterminal com dois seats, devem existir quatro arquivos de configuração do Xorg, dois são para execução do assistente de configuração (xorg-config1.conf e xorg-config2.conf) e dois são a configuração final do Xorg que servem para configurar o Xorg que o usuário utilizará (xorg-seat1.conf e xorg-seat2.conf).
-
Os arquivos xorg-config#.conf são arquivos que especificam apenas o BusID da placa de vídeo onde o X deve carregar, nenhum dispositivo de entrada está associado, pois nesse momento o servidor X deve aceitar eventos de qualquer teclado ou mouse, é o momento da associação destes dispositivos.
-
Os arquivos xorg-seat#.conf são arquivos que além de especificar o BusID da placa de vídeo onde o X deve carregar, também contêm a definição do mouse e do teclado associados àquele seat. O caminho dos dispositivos de entrada será padrão, o do mouse será /dev/multiseat/mouse# e do teclado será /dev/multiseat/keyboard# (onde # é o número do seat).
-
Os dispositivos /dev/multiseat/mouse# e /dev/multiseat/keyboard# são criados através de regras do udev colocadas dentro do diretório /etc/udev/rules.d/, essas regras são criadas pelo programa de configuração.