# Multiterminais/Multiterminal com Ruby

Um Multiterminal com Ruby é um multiterminal que permite o uso de consoles independentes. Foi o primeiro método de se fazer multiterminais desenvolvido. Ele utiliza um patch no kernel.

# Como fazer
## Introdução

Backstreet Ruby é um patch para o kernel, desenvolvido com a finalidade de fornecer vários consoles independentes. Uma das desvantagens é que o patch é específico para um determinado kernel. Sendo assim, ao fazer uma atualização de kernel, deve-se dispor também de uma versão do patch para o mesmo kernel.

## Sistema Operacional

Debian Sarge (outras distribuições de Linux também podem ser facilmente utilizadas).

## Hardware

Placas de Vídeo:
* 4 Placas SiS (outras placas de vídeo também podem ser utilizadas, mas nem todas).
Dispositivos:
* 1 teclado PS/2
* 1 mouse PS/2
* 3 teclados USB
* 3 mouses USB

## Instalando driver da placa SiS

1. Adicione esta linha ao arquivo /etc/apt/sources.list:
2. Atualize a base de dados dos pacotes e instale o pacote x-driver-sis

## Instalando pacote pré-compilado do kernel 2.6.7 já com o patch ruby

1. Faça o download do arquivo kernel-image-2.6.7-ruby_10.00.Custom_i386.deb 2. Instale o pacote

## Hotplug

1. Instale o pacote hotplug:
2. Substitua os arquivos /etc/hotplug/input.agent e /etc/hotplug/input.rc pelos seguintes: input.agent e input.rc.
3. Crie dois arquivos, mouse.conf e kbd.conf. Esses dois arquivos identificam dispositivos(mouses e teclados) de acordo com seu endereço físico, relacionando-os a um link simbólico, no caso dos mouses, e a um VT(Terminal Virtual), no caso dos teclados. Veja exemplos de configuração de cada um deles respectivamente:
Cada linha identifica um dos mouses. A primeira informação, mouse0br, é um link simbólico para o mouse que está conectado ao endereço físico isa0060/serio1/input0. As demais linhas seguem a mesma lógica.
Cada linha identifica um dos teclados. A primeira informação, VT0, associa um VT ao teclado conectado ao endereço físico isa0060/serio0/input. As demais linhas seguem a mesma lógica.
Observações:
Quando um dispositivo é conectado, o HotPlug automaticamente cria o respectivo link em /dev/input/
O endereço físico de cada dispositivo pode ser obtido através do arquivo /proc/bus/input/devices

## Dispositivos de Entrada

Antes de proceder, verifique se os teclados e mouses foram detectados corretamente. Leia o conteúdo do arquivo /proc/bus/input/devices, que contém informações sobre os dispositivos detectados pelo kernel.
Veja um exemplo deste arquivo. Daremos destaque para dois campos: nome dos dispositivos, presente em linhas que começam com “N: Name=”, e o endereço físico, mostrado em linha que começan com “P: Phys”.
Note que o arquivo parece mostrar a presença de três teclados, quando na verdade existem apenas dois. A razão para o dispositivo adicional é que muitos teclados USB incluem teclas especiais(como de acesso à internet), as quais são detectadas pelo kernel como um teclado secundário. Teclados secundários tem o endereço físico terminado por “input1”. Estamos interessados somente no primeiro teclado, cujo endereço físico termina com “input0”. Sendo assim, a seção referente ao teclado secundário com endereço físico “usb-0000:00:10.2-1/input1” será ignorada.

## Configuração do Servidor X(XFree86)

Deve-se realizar a configuração de dois arquivos. O /etc/X11/XF86Config-4 e o /etc/X11/XF86config-4.probe.
Durante a inicialização do multiterminal, o arquivo /etc/X11/XF86Config-4.probe é utilizado antes do /etc/X11/XF86Config-4. Porém, para um melhor entendimento, geraremos primeiro o arquivo /etc/X11/XF86Config-4 e, a partir deste, geraremos o segundo arquivo(/etc/X11/XF86Config-4.probe).

### XF86Config-4

Essa configuração é aquela que será utilizada durante o funcionamento do multiterminal. Neste arquivo devem ser criadas seções adicionais de acordo com o número de terminais que estamos configurando. Deve ser criada uma seção para cada mouse, placa de vídeo, monitor, screen e layout. Sendo assim, se estivermos interessados em configurar um multiterminal com 4 terminais, teremos 4 seções de mouses, 4 de placas de vídeo, e assim por diante.
Atenção: para o teclado deve ser criado apenas uma seção!
Os valores sugeridos para "Identifier" em cada seção não é rígido. Podendo ser alterado desde que seja mantida a coerência com o restante da configuração. Veja um exemplo de arquivo onde deve ser adicionada cada seção.

### XF86Config-4.probe

Se o multiterminal fosse inicializado diretamente, utilizando o arquivo XF86Config-4, não obteríamos sucesso. Isso acontece pelo fato das placas de vídeo secundárias não terem sido inicializadas corretamente. Quando a opção noInt10 está setada como yes, como eh o caso do arquivo XF86Config-4, esta inicialização é inibida.
Dessa forma, o arquivo XF86Config-4.probe fornece uma configuração para que o servidor X possa ser inicializado, em primeira instância, com a opção noInt10="no". Logo após, o X poderá usar com sucesso o arquivo XF86Config-4.
Veja o que modificar para gerar o arquivo XF86Config-4.probe:
O arquivo xfree86-multiterminal eh responsável pela inicialização probeonly (conforme citado na na seção do arquivo XFree86Config-4) do servidor X, utilizando o arquivo de configuração XFree86Config-4.probe, e garantindo uma correta inicialização das placas de vídeo. Logo após, o servidor X será executado utilizando o arquivo de configuração XFree86Config-4.
1. Salve o arquivo xfree86-multiterminal em /etc/init.d/ 2. Linke-o da seguinte forma:
Criando um link S70xfree86-multiterminal em /etc/rcS.d para o arquivo /etc/init.d/xfree86-multiterminal.
Obs: O comando update-rc.d existe somente nas distribuições baseadas no Debian. Alternativamente, crie manualmente um link com nome S70xfree86-multiterminal.

## Configuração do Gdm

Edite o arquivo /etc/gdm/gdm.conf na seção [servers] inserindo o seguinte:

## Configuração GRUB/LILO

Finalmente, é necessário passar um parâmetro para o kernel indicando quantos VT's(teclados virtuais) adicionais devem ser criados:

### GRUB

Edit o arquivo /boot/grub/menu.lst.

### LILO

No arquivo de configuração do lilo, /etc/lilo.conf, insira o seguinte:

## Verificando problemas

Problemas na inicialização do multiterminal podem ser analizados em: /var/log/Xorg.*.log. Cada Servidor X criará seu próprio arquivo de log.