Obra: Multiterminais/Multiterminal com faketty
Matéria: Português
esse artigo ensina como um multiterminal com faketty funciona como fazê lo ele utiliza módulo faketty desenvolvido por aivils stoss não precisa nem do protocolo evdev nem de patches no kernel este método um dos mais famosos de todos para se fazer multiterminais como fazer introdução este texto descreve os passos necessários para se configurar um sistema multiterminal utilizando módulo faketty faketty um módulo do kernel desenvolvido por aivils stoss que associa os teclados do sistema arquivos de dispositivo chamados dev fttyxx sendo xx um número que identifica teclado os quais utiliza para ler os eventos do teclado esse módulo usa mesmo protocolo que normalmente utiliza para ler eventos do teclado isto protocolo tty que dispensa utilização do evdev outra vantagem desse método que não necessário nenhum patch para kernel as desvantagens são que esta solução necessita que um módulo do kernel seja compilado que esta abordagem só funciona de maneira estável com poucas combinações de placas de vídeo sistema operacional debian sarge mas outras distribuições de linux também podem ser utilizadas de maneira muito similar ubuntu edgy hardware utilizado placas de vídeo placas sis outras placas também podem ser utilizadas mas nem todas funcionam corretamente teclados mouses teclado ps mouse ps teclados usb mouses usb nos testes com ubuntu foram utilizadas placas de vídeo pci nvidia riva tnt model model pro placa de vídeo sis agp teclado mouse ps teclados mouses usb obs para funcionamento correto das placas de vídeo sis agp deve ser iniciada por primeiro em card etc bem como na bios definir como preferencial pois como secundário tela trava logo após inicialização do instalação do udev necessária 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 kernel ou mais novo já instalado por default no ubuntu compilação carregamento do módulo faketty certifique se que estão instalados os headers cabeçalhos do kernel que você está usando se você utiliza debian faça seguinte comando apt get install linux headers uname próximo passo compilar módulo faketty para seu kernel você pode encontrar código fonte do módulo aqui http www ltn lv aivils files faketty tar bz para ubuntu necessária versão do faketty senão módulo não será inicializado corretamente encontra se no link http www ltn lv aivils files faketty tar bz descompacte arquivo execute seguinte comando no diretório onde se encontra arquivo makefile para compilar instalar módulo make make install para carregar módulo no kernel execute seguinte comando modprobe faketty criação dos links para os arquivo dev fttyxx em seguida necessário verificar arquivo proc bus input devices para saber qual arquivo ffty cada teclado foi associado um exemplo do arquivo proc bus input devices dado seguir bus vendor product version ab name at translated set keyboard phys isa serio input handlers kbd event ftty ev key ffffdf ffefffff ffffffff fffffffe msc
t keyboard phys isa serio input handlers kbd event ftty 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 ftty ev key ff ff febeffdf ffefffff ffffffff fffffffe led bus vendor product version name chesen usb keyboard phys usb input handlers kbd event ftty ev key bus vendor fc product version name usb opticalwheel mouse phys usb input handlers mouse event ev key rel possível notar que existem três teclados sendo mostrados sendo que primeiro está associado ao arquivo dev ftty segundo ao arquivo dev ftty os teclados cujo campo phys terminem em input ao invés de input como terceiro teclado do arquivo devem ser desconsiderados pois se referem às teclas funções especiais de algum teclado também possível ver no arquivo de exemplo presença de dois mouses que estão associados aos arquivos dev input mouse dev input mouse respectivamente ao ser inicializado para fazer leitura dos eventos do teclado abre arquivo dev ttyxx sendo xx número do vt terminal virtual que recebe como parâmetro como não possível pedir para abrir outro arquivo necessário fazer com que os arquivos dev ttyxx sejam links para os arquivos ftty indicados no arquivo proc bus input devices no exemplo seguir criamos links um para cada teclado dos arquivos dev tty em diante rm dev tty ln dev ftty dev tty ln dev ftty dev tty ln dev ftty dev tty ln dev ftty dev tty instalação do driver para placa de vídeo sis adicione seguinte linha ao arquivo etc apt sources list http www winischhofer net sis debian stable atualize as informações de pacotes do sistema instale driver driver sis apt get update apt get install driver sis obs para ubuntu não foi necessária instalação do driver acima utilizado driver padrão sis no xorg apesar disso foi necessária instalação do driver para linux da nvidia disponível em http download nvidia com xfree linux nvidia linux pkg run salve arquivo dê permissão de execução ao mesmo chmod nvidia linux pkg run execute importante que esse passo seja feito sem gerenciador gráfico rodando gdm ou kdm caso contrário retornará um erro feito isso driver nvidia terá que ser instanciado posteriormente no xorg conf hotplug instale pacote hotplug apt get update apt get install hotplug obs para ubuntu não necessário esse procedimento instalação do servidor xorg próximo passo instação do servidor xorg faça uma cópia de segurança backup remova arquivo etc init xfree common adicione as seguintes linhas ao arquivo etc apt sources list deb http people debian org nobse xorg sarge main deb src http people debian org nobse xorg sarge main instale pacote xserver xorg apt get update apt get install xserver xorg apt get upgrade configuração do servidor xorg xorg conf essa configuração será usada durante funcionamento do multiterminal neste arquivo serão criadas seções adicionais de acordo com número de termina
mento do multiterminal neste arquivo serão criadas seções adicionais de acordo com número de terminais que estamos configurando para cada terminal criaremos uma seção para mouse teclado placa de vídeo monitor tela screen layout por exemplo no caso de um multiterminal com quatro terminais arquivo terá quatro seções de mouse quatro de teclado assim por diante os valores sugeridos para identifier em cada seção não são mandatórios eles podem ser alterados desde que mantida coerência dos nomes na configuração toda endereço físico opção dev phys de cada dispositivo pode ser obtido através do arquivo proc bus input devices como visto anteriormente seguir um exemplo para cada tipo de seção section inputdevice identifier generic keyboard driver keyboard as opções abaixo são adequadas um teclado brasileiro com cedilha abnt option xkbrules xorg option xkbmodel abnt option xkblayout br option xkbvariant abnt option xkboptions abnt option corekeyboard endsection section inputdevice identifier configured mouse driver mouse substitua valor da opção device pelo arquivo do mouse correspondente obtido partir do arquivo proc bus input devices option protocol imps option device dev input mouse todos os mouses devem ter opção corepointer option corepointer option zaxismapping endsection section device identifier placa de vídeo genérica driver sis screen obrigatório explicitar busid de todas as placas para obtê los use lspci grep vga cuidado com os valores pois endereço fornecido pelo lspci em base hexadecimal xorg espera um valor decimal para conversão use echo busid pci esta opção desabilita as chamas vga vbe da irq para evitar que uma placa interfira com as demais ver também arquivo xorg conf probe option noint yes esta opção para placas sis evita problemas ao alternar entre terminais virtuais ou ao encerrar servidor option no endsection os valores abaixo são default mantenha configuração que você usaria normalmente para seus monitores section monitor identifier monitor genérico horizsync vertrefresh option dpms endsection configuração da tela abaixo também ilustrativa personalize de acordo com sua preferência section screen identifier default screen device placa de vídeo genérica monitor monitor genérico defaultdepth subsection display depth modes endsubsection endsection section serverlayout identifier será usado na chamada em linha de comando identifier layout screen default screen inputdevice generic keyboard inputdevice configured mouse option singlecard endsection xorg conf probe além do arquivo padrão xorg conf será necessário criar um segundo arquivo de configuração xorg conf probe durante uso do multiterminal desabilitamos as interrupções no canal irq para evitar que chamadas vga vesa vbe de uma placa interfiram com as demais porém com essas chamadas desabilitadas as placas secundárias não são inicializadas para resolver este problema durante processo de inicialização do sistema xorg será rodado com arquivo xorg conf probe ele fará uma checagem probe pela
cialização do sistema xorg será rodado com arquivo xorg conf probe ele fará uma checagem probe pela presença destas placas com irq ativa durante teste de forma inicializá las para criar xorg conf probe tome xorg conf como base remova as seções relativas placa de vídeo primária que inicializada pela bios ao ligar computador troque opção noint para no será necessário um único layout mas incluindo todas as placas secundárias como exemplo alguns trechos do arquivo xorg conf probe derivado do xorg conf acima em todas as seções device das placas de vídeo troque opção noint para option noint no declarar apenas um layout sem usar opção singlecard todas as telas screens secundárias devem ser incluídas disposição das telas leftof etc não importante tampouco os dispositivos de entrada usados section serverlayout identifier probe screen default screen screen default screen leftof default screen screen default screen leftof default screen inputdevice generic keyboard inputdevice configured mouse endsection para rodar teste probe fornecido arquivo xorg multiterminal ele executa servidor no modo probeonly apenas testar por dispositivos encerrar com arquivo xorg conf probe como explicado acima este passo inicializa as placas de vídeo secundárias conteúdo do arquivo file etc xorg conf probe file usr bin config file probeonly dev null salve como um script executável configure sistema de inicialização para rodá lo no caso do debian caminho deve ser etc init xorg multiterminal existem duas maneiras de configurar sistema através do comando update rc este comando funciona tanto para usuários do sistema padrão do debian sysv rc quanto para usuários do pacote file rc update rc xorg multiterminal start manualmente em um sistema debian usando esquema padrão de inicialização crie um link ln etc init xorg multiterminal etc rcs xorg multiterminal em um sistema debian com pacote file rc instalado acrescente seguinte linha em um lugar apropriado no arquivo etc init runlevel conf etc init xorg multiterminal gdm último passo configurar gerenciador de login para iniciar todos os servidores trataremos apenas do gdm outros gerenciadores como xdm kdm podem ser configurados por um processo similar deve se editar seção servers do arquivo etc gdm gdm conf para que contenha múltiplas entradas como no exemplo seguinte para quatro terminais servers xserver xserver xserver xserver os nomes dos servidores são arbitrários mas deve se adicionar uma seção para cada servidor com conteúdo como abaixo server xserver name standard server command usr bin br audit layout layout vt flexible true server xserver name standard server mmand usr bin br audit layout layout vt flexible true server xserver name standard server mmand usr bin br audit layout layout vt flexible true server xserver name standard server mmand usr bin br audit layout layout vt flexible true observe que os servidores estão utilizando os vt respectivamente dessa forma os servidores irão utilizar para ler eventos do teclado os arquiv
os vt respectivamente dessa forma os servidores irão utilizar para ler eventos do teclado os arquivos dev tty dev tty dev tty dev tty que na verdade são links para os arquivos dev fttyxx conforme criamos anteriormente solução de problemas problemas na inicialização do multiterminal podem ser analisados nos arquivos em var log xorg log servidor de cada terminal criará seu próprio arquivo de registro veja também