Obra: Multiterminais/Multiterminal com Xephyr
Nível: médio
vamos descrever aqui como fazer um multiterminal com xephyr há muitas maneiras de se fazer multiterminais pra vê las veja seção veja também partir de uma modificação realizada no servidor xephyr foi possível implementar uma nova solução para multiterminal sistema funciona de maneira muito parecida ao multixnest só que utiliza xephyr ao invés do xnest xephyr possui várias vantagens pois está sendo mantido mais rápido permite implementação de extensões do mais facilmente como fazer você deve seguir tutorial abaixo passo passo outras informações podem ser obtidas na página do sl da ufpr aqui no item há um link para live cd desenvolvido recentemente sistema operacional debian etch introdução xephyr um tipo de servidor que utiliza outro servidor xorg para exibição das imagens xephyr funciona como cliente do xorg mas também servidor para outros aplicativos que enxergam xephyr como se fosse um servidor normal xephyr pode ser utilizado para se trabalhar em dois ou mais desktops simultaneamente no entanto fizemos alterações em seu código para permitir que ele seja utilizado para implementar um sistema multiterminal sistema opera da seguinte maneira roda se apenas um servidor configurado para utilizar várias telas screens sendo que cada tela estará associada uma placa de vídeo após inicialização do abre se em tela cheia um xephyr para cada tela qual será utilizado pelo usuário de maneira transparente xephyr original obtêm os eventos de mouse teclado partir do servidor pai no entanto para permitir utilização do xephyr no multiterminal tivemos que alterar seu código fonte para que ele lêsse os eventos diretamente dos dispositivos sem intermediação do servidor para ler os eventos do mouse do teclado utiliza se protocolo evdev vantagem de se utilizar xephyr que gerenciamento das diversas placas de vídeo feito por um único que elimina os problemas de compatibilidade conflitos presentes nas outras maneiras de implementar multiterminal isso significa que multiterminal funciona com qualquer combinação de placas de vídeo que consiga gerenciar vantagem de se utilizar xephyr ao invés do xnest que xephyr está sendo mantido atualmente mais rápido permite implementação de extensões do mais facilmente instalação do servidor xorg aqui descreveremos os passos para configurar multiterminal utilizando servidor xorg mas possível utilizar xfree com poucas alterações para utilizar xorg você precisa utilizar versão etch ou superior do debian pois versão sarge não possui servidor xorg se você está utilizando debian sarge proceda da seguinte maneira para atualizá lo para etch altere as ocorrências de sarge ou stable dos mirrors do debian no arquivo etc apt sources list para etch por exemplo deb http ftp debian org debian sarge main contrib non free deve ficar deb http ftp debian org debian etch main contrib non free atualize sistema instale pacote xserver xorg apt get update apt get upgrade apt get install xserver xorg evdev udev certifique se de que seu kernel núcleo do sistema e
upgrade apt get install xserver xorg evdev udev certifique se de que seu kernel núcleo do sistema esteja compilado com suporte ao módulo evdev necessária também instalação do udev que provê um diretório dev dinâmico atualizado de acordo com os dispositivos conectados apt get install udev udev exige um kernel dispositivos de entrada antes de prosseguir preciso verificar se os dispositivos de entrada mouses teclados foram detectados para isso analise arquivo proc bus input devices que informa detalhes sobre os dispositivos de entrada encontrados pelo kernel um exemplo deste arquivo apresentado abaixo apenas dois campos nos interessam nome de cada dispositivo indicado nas linhas que começam com name nome do arquivo relacionado ao dispositivo mostrado nas linhas que começam com handlers bus vendor product version ab name at translated set keyboard phys isa serio input handlers kbd event ev key ffffdf ffefffff ffffffff fffffffe msc led bus vendor product version name imps generic wheel mouse phys isa serio input handlers mouse event ev key rel bus vendor product version name chesen usb keyboard phys usb input handlers kbd event ev key ff ff febeffdf ffefffff ffffffff fffffffe led bus vendor product version name chesen usb keyboard phys usb input handlers kbd event ev key bus vendor fc product version name usb opticalwheel mouse phys usb input handlers mouse event ev key rel note que arquivo parece indicar presença de três teclados embora no sistema aferido existam apenas dois razão do dispositivo adicional que muitos teclados usb contém teclas especiais por exemplo de controle multimídia ou acesso internet detectadas pelo kernel como pertencentes um teclado secundário cujo endereço físico termina em input configuraremos apenas os teclados primários com endereço físico terminado em input portanto seção correspondente ao teclado secundário de endereço físico usb input será ignorada podemos perceber pelo arquivo de exemplo presença de teclados relacionados aos arquivos dev input event dev input event respectivamente mouses associados aos arquivos dev input event dev input event respectivamente esses arquivos são importantes pois são utilizados como descreveremos posteriormente para relacionar cada cabeça do multiterminal aos dispositivos de entrada corretos ldconfig adicione seguinte linha no arquivo etc ld so conf usr local lib em seguinte rode comando ldconfig ldconfig download do xephyr modificado faça download do servidor xephyr modificado aqui extraia arquivo no diretório usr local caso queira obter os patches baixe os clicando aqui faça download do script wrapper xephyr sh responsável por carregar servidor xephyr script deve ser copiado para diretório usr sbin ter permissão de execução para dar permissão de execução para arquivo execute seguinte comando chmod usr sbin xephyr sh configuração do servidor xorg para um multiterminal de terminais arquivo etc xorg conf deve ser configurado da seguinte forma defina um layout contendo screen section serve
etc xorg conf deve ser configurado da seguinte forma defina um layout contendo screen section serverlayout identifier layout screen screen screen screen below screen screen screen below screen screen screen below screen inputdevice generic keyboard inputdevice configured mouse endsection obs disposição das telas apresentadas no layout acima não relevante defina as seções das placas de vídeo section device identifier placa de vídeo genérica driver sis busid pci screen endsection substitua driver da placa de vídeo de acordo com seu hardware opção busid identifica qual endereço da placa de vídeo que está sendo utilizada para obter busid de suas placas digite lspci grep vga tome cuidado com os valores pois endereço fornecido por lspci eh em hexadecimal enquando que espera um valor em decimal para conversão use echo section device identifier placa de vídeo genérica driver sis busid pci screen endsection defina as seções dos monitores section monitor identifier monitor horizsync vertrefresh option dpms endsection section monitor identifier monitor horizsync vertrefresh option dpms endsection defina as seções das screen section screen identifier screen device placa de vídeo genérica monitor monitor defaultdepth subsection display depth modes endsubsection endsection section screen identifier screen device placa de vídeo genérica monitor monitor defaultdepth subsection display depth modes endsubsection endsection definição de teclado pode continuar igual já existente em seu xorg conf no entanto certifique se de que nome do teclado identifier está de acordo com seção layout isto generic keyboard mouse você deve fazer apontar para dispositovo dev input mice section inputdevice identifier configured mouse driver mouse option corepointer option device dev input mice option protocol imps endsection para evitar problemas na inicialização do servidor devido ao não reconhecimento do mouse você pode incluir sem problemas seguinte seção section serverflags option yes endsection obs isso não afetará multiterminal pois os dispositivos mouses teclados serão passados como parametros posteriormente para xephyr finalmente para desabilitar troca de vt as teclas ctrl alt backspace verifique que seção serverflags possui as seguintes opções section serverflags desativar vt switching option dontvtswitch yes desativa uso das teclas ctrl alt backspace option dontzap yes endsection configuração do layout como detecção dos dispositivos de entrada mouses teclados feita pelo kernel veja seção dispositivos de entrada nem sempre segue mesma ordem possível que kernel associe mesmo dispositivo arquivos diferentes em cada inicialização que poderá embaralhar os mouses teclados para evitar problema fizemos scripts que automatizam processo de associação de mouses teclados seus respectivos monitores você só precisa configurar layout qual teclado mouse estão associados qual monitor uma vez script irá armazenar esse layout no arquivo etc devices conf para utilizar script siga os seguintes p
cript irá armazenar esse layout no arquivo etc devices conf para utilizar script siga os seguintes passos instale pacote xdialog apt get install xdialog descomprima arquivo xkb evdev tar gz no diretório etc remova ou renomeie arquivo etc gdm gdm conf mv etc gdm gdm conf etc gdm gdm conf backup descompacte arquivo public tgz copie os arquivos select out para diretório usr local sbin depois copie arquivo para diretório etc init configure para que script seja executado na inicialização do sistema update rc start execute seguinte comando para configurar layout do sistema script irá fazer perguntas em cada uma das telas do seu multiterminal para saber qual teclado qual mouse serão associados cada monitor invoke rc start script irá gerar automaticamente arquivo etc gdm gdm conf se ele não existir os arquivos de configuração do xkb usr lib xkb xx config keyboard script irá criar links no diretório dev input chamados kbd mt kbd mt etc que se referem respectivamente ao teclado do primeiro terminal ao teclado do segundo terminal assim por diante script também irá criar links chamados mouse mt mouse mt etc que se referem respectivamente ao mouse do primeiro terminal ao mouse do segundo terminal assim por diante após você responder às perguntas script irá gerar arquivo etc devices conf que irá conter as associações de mouse teclado cada terminal além da configuração dos teclados regras modelo layout configuração manual se você utilizou script da seção anterior você não deve realizar os passos das próximas seções no entanto para completude apresentaremos os procedimentos manuais para configuração do xkb gdm caso você não tenha utilizado script configuração xkb para permitir que xephyr utilize extensão xkb você deve descomprimir arquivo xkb evdev tar gz no diretório etc depois necessário criar um arquivo de configuração xkb para cada xephyr para configurar os teclados arquivo de configuração do primeiro xephyr deve ser colocado no arquivo usr lib xkb config keyboard do segundo em usr lib xkb config keyboard assim por diante um exemplo de um arquivo de configuração para um teclado abnt pode ser visto seguir rules evdev model abnt layout br em algumas situações proposto acima pode não funcionar quando xephyr for compilado para procurar as definições do layout de keyboard em usr lib xkb nesse caso necessário fazer também seguinte link simbólico copiar xkbcomp para essa pasta ln usr share xkb usr lib xkb cp which xkbcomp usr lib xkb observação nas novas versões do debian etch houve algumas mudanças pode ser que teclado fique todo desconfigurado para isso basta modificar linha do arquivo xkb rules evdev mude linha de abnt br pc pc pc pc br para abnt br pc pc br configuração do gdm último passo configurar gerenciador de login para iniciar servidor principal também para rodar os scripts wrappers que serão responsáveis por abrir xephyr em cada tela trataremos apenas do gdm outros gerenciadores como xdm kdm podem ser configurados por um processo similar edite arquivo e
gdm outros gerenciadores como xdm kdm podem ser configurados por um processo similar edite arquivo etc gdm gdm conf na seção servers inserindo seguinte servers hardware hardware será servidor principal naquele onde serão executados os demais servidores xephyr xephyr xephyr xephyr xephyrn xephyr cada um dos servidores xephyr server hardware name hardware command usr bin handled false flexible false opção handled false impede que seja carregado gerenciador de login no servidor principal server xephyr name xephyr command usr sbin xephyr sh display xauthority var lib gdm xauth geometry keyboard dev input event mouse dev input event use evdev dpi handled true flexible false opção keyboard mouse identificam respectivamente qual teclado mouse serão associados ao servidor xephyr conforme analisado no arquivo proc bus input devices se opção mouse terminar em como no exemplo roda do mouse será habilitada xephyr sh script que carrega servidor xephyr server xephyrn name xephyrn command usr sbin xephyr sh display xauthority var lib gdm xauth geometry keyboard dev input eventxx mouse dev input eventyy use evdev dpi handled true flexible false foto exemplo multiterminal com terminais usando ubuntu feisty xephyr licença da imagem veja também live cd centro de computação científica software livre sl da universidade federal do paraná desenvolveu um live cd baseado na distribuição ubuntu feisty com objetivo de testar tecnologia de multiterminais nas mais diversas variedades de hardware também como forma de apresentar multiterminal sem necessidade de instalação prévia no computador esta ainda uma versão beta possui problemas de segurança de rede mas está plenamente funcional todos que tiverem interesse em testar aprimorar fazer sugestões críticas ou simplesmente conhecer tecnologia sejam bem vindos sintam se encorajados baixar imagem do cd no seguinte link multiterminal beta_ubuntu iso multiterminal beta_ubuntu iso md os scripts que controlam multiterminal estão em multiterminal que montado quando live cd está em execução comentários sugestões otimização do código dos scripts idéias novas ou um simples feedback sobre funcionamento do multiterminal serão bem vindos mais informações podem ser obtidas em http www sl ufpr br multiterminal livecd html multilinux multiterminais agora com script para ubuntu agora ficou mais fácil tornar seu ubuntu em multiterminais script que acabou de sair do forno deixa essa tarefa muito mais fácil agradável para quem ainda não conhece ou nunca ouviu falar sobre esse maravilhoso projeto leia um pouco sobre mesmo verá as vantagens de se usar gnu linux como sistema operacional veja abaixo onde encontrar informações sobre mesmo grupo multilinux http groups google com br group multilinux hl pt br lista de discussão do multilinux http listas softwarelivre org cgi bin mailman listinfo multilinux