multi terminal
TRANSCRIPT
-
FACULDADE DE TECNOLOGIA DE CARAPICUBA
Curso Superior de Anlise de Sistemas e Tecnologia da Informao-
ASTI
Documentao
Criao do Multiterminal
2 B Manh
Professor: Antonio Cesar Albuquerque Gerum
Paulo Roberto Dias
Thiago Sousa Cruz
Renan Vinicius
Venancio Sampaio Coelho
Vinicius de Paulo da Silva
Victor Hernandes de Lima Sabino
-
Dados Tcnicos:
2 monitores InfoWay 17 polegadas
2 teclados USB padro ABNT
2 mouses USB
Placa de vdeo ATI Radeon com sada VGA/DVI
CPU:3 GB de memria Ram
Processador core 2 duo 2.93 GHZ
320 GB espao no HD
Configurao mnima
2 monitores
Placa de vdeo offboard
2 pares de mouse e teclado USB
1 gb de memia RAM
Processador de 2,5 GHZ
-
Instalao e atualizao do Sistema Operacional Ubuntu 9.04
A partir de um Live CD foi feita a instalao do Sistema Operacional Ubuntu 9.04, aps
este processo foi feita a atualizao com seguintes procedimentos no terminal:
$ sudo apt-get update
$ sudo apt-get upgrade
Download e Instalao dos Pacotes
So baixados os pacotes adicionais pelo comando:
$ sudo apat-get install xserver-xephyr wmctrl
Aps a instalao destes pacotes faa a criao de usurios para os terminais e outras
configuraes, mas principalmente faa o backup dos arquivos gdm.conf e xorg.conf
(respectivamente encontrados em: /etc/gdm/gdm.conf e /etc/X11/xorg.conf).
Aps o backup feita a criao dos usurios nas seguintes opes : pela interface
grfica e pelo terminal.
Criao de Usurios pela Interface grfica: Sistema>>Administrao>>Usurios e
grupos
Criao de Usurios pelo terminal: $ sudo adduser nome_de_usuario, aperta a tecla
Enter e adiciona uma senha para o novo usurio (outras informaes que aparecero
so opcionais).
Inicialmente, aps a instalao padro, o sistema comear com as duas
telas no modo "clone.
-
Com o comando $ xrandr q ser exibida a configurao atual do monitor
$ xrandr -q
Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 1280 x 1200
VGA-0 connected 1280x1024+0+0 (normal left inverted right x axis y
axis) 338mm x 270mm
1280x1024 60.0*+ 75.0 60.0*
1152x864 75.0
1024x768 75.0 60.0
832x624 74.6
800x600 75.0 60.3
640x480 75.0 59.9
720x400 70.1
DVI-0 connected 1280x1024+0+0 (normal left inverted right x axis y
axis) 338mm x 270mm
1280x1024 60.0*+ 75.0 60.0*
1152x864 75.0
1024x768 75.0 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3
640x480 75.0 72.8 59.9
720x400 70.1
S-video disconnected (normal left inverted right x axis y axis)
Exemplo do que ser exibido no monitor
Edio do arquivo / etc/X11/xorg.conf para indicar o caminho das placas de
vdeo e a resoluo de tela
Section "Device"
Identifier "Card0"
BoardName "ATI Technologies Inc RV370 5B60 [Radeon X300
(PCIE)]"
Driver "ati"
BusID "PCI:1:0:0"
Option "Monitor-VGA-0" "Mon-VGA"
Option "Monitor-DVI-0" "Mon-DVI"
EndSection
Section "Monitor"
Identifier "Mon-VGA"
Option "DPMS"
EndSection
Section "Monitor"
Identifier "Mon-DVI"
Option "DPMS"
Option "Below" "Mon-VGA"
EndSection
Section "Screen"
-
Identifier "Screen-base"
Device "Card0"
Monitor "Mon-VGA"
DefaultDepth 24
Subsection "Display"
Depth 24
Modes "1280x1024"
Virtual 1280 2048
EndSubSection
EndSection
Section "ServerFlags"
# Even if mouse detection fails, X will start
Option "AllowMouseOpenFail" "yes"
# VT switching is disabled
Option "DontVTSwitch" "yes"
# X restart (Ctrl+Alt+Backspace) is disabled
Option "DontZap" "yes"
EndSection
Observe que, desta vez, temos definida uma configurao vertical de
monitores. Este apenas para testar se a acelerao 3D funciona com
dimenses horizontal e vertical da tela virtual menor (ou igual) do que 2048
pixels. Se voc se sentir mais confortvel com uma configurao horizontal,
s usar leftOf ou rightOf em vez de seguir, e alterar o tamanho do virtual
para o correto de acordo com o layout desejado.
Depois de ter feito essa mudana, se reiniciar o servidor X, veremos uma
mesa vertical com as seguintes caractersticas:
$ xrandr -q
Screen 0: minimum 320 x 200, current 1280 x 2048, maximum 1280 x 2048
VGA-0 connected 1280x1024+0+0 (normal left inverted right x axis y
axis) 338mm x 270mm
1280x1024 60.0*+ 75.0 60.0*
1152x864 75.0
1024x768 75.0 60.0
832x624 74.6
800x600 75.0 60.3
640x480 75.0 59.9
720x400 70.1
DVI-0 connected 1280x1024+0+1024 (normal left inverted right x axis y
axis) 338mm x 270mm
1280x1024 60.0*+ 75.0 60.0*
-
1152x864 75.0
1024x768 75.0 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3
640x480 75.0 72.8 59.9
720x400 70.1
S-video disconnected (normal left inverted right x axis y axis)
Uma vez que tenha modificado o arquivo xorg.conf e j tendo obtido uma
grande rea de trabalho que abrange os dois monitores (ou com uma
horizontal ou com um layout vertical), o prximo passo configurar o GDM
para lanar duas sesses Xephyr, um para cada assento.
Anteriormente, voc vai precisar para obter as informaes relacionadas
aos eventos de entrada em seu sistema.
$ ls -la /dev/input/by-path/ | grep event | grep kbd
lrwxrwxrwx 1 root root 9 2009-06-18 13:11 pci-0000:00:1d.2-usb-
0:2:1.0-event-kbd -> ../event5
lrwxrwxrwx 1 root root 9 2009-06-18 13:11 platform-i8042-serio-0-
event-kbd -> ../event3
$ ls -la /dev/input/by-path/ | grep event | grep mouse
lrwxrwxrwx 1 root root 9 2009-06-18 13:11 pci-0000:00:1d.2-usb-
0:1:1.0-event-mouse -> ../event4
lrwxrwxrwx 1 root root 9 2009-06-18 13:11 platform-i8042-serio-1-
event-mouse -> ../event8
Neste caso, temos um conjunto de teclado + mouse PS2 para um assento,
e um par de mouse + teclado USB para o segundo. Os valores que voc
est obtendo aqui ser usado para configurar o dispositivo de entrada
correspondente para cada assento.
O prximo passo criar um lanador para executar Xephyr com os
parmetros adequados e eventos de entrada. Para isso, criamos um arquivo
que ser usado como um lanador de script. Voc pode nomear o arquivo e
coloc-lo como considerar mais apropriado.Decidimos cri-lo como / usr /
sbin / Xephyr-path.sh
Use seu editor favorito (vi, gedit, ...) para criar, e no se esquea de torn-
lo executvel pelo usurio root (o dono do arquivo).
$ sudo gedit /usr/sbin/Xephyr-path.sh
$ sudo chmod 744 /usr/sbin/Xephyr-path.sh
-
Voc deve criar um arquivo com algo parecido com esses contedos
(XX=idioma do seu teclado.Exemplo:br):
$ cat /usr/sbin/Xephyr-path.sh
#!/bin/bash
# 200906 - josean
# http://netpatia.blogspot.com/
trap "" usr1
XEPHYR=/usr/bin/Xephyr
DISPLAY=:0
XAUTHORITY=/var/lib/gdm/:0.Xauth
args=()
while [ ! -z "$1" ]; do
if [[ "$1" == "-kbdpath" ]]; then
shift
if [ ! -z "$1" ]; then
args=("${args[@]}" "-keybd")
args=("${args[@]}" "evdev,,device=/dev/input/by-
path/$1,xkbrules=xorg,xkbmodel=evdev,xkblayout=XX")
fi
elif [[ "$1" == "-mousepath" ]]; then
shift
if [ ! -z "$1" ]; then
args=("${args[@]}" "-mouse")
args=("${args[@]}" "evdev,,device=/dev/input/by-path/$1")
fi
else
args=("${args[@]}" "$1")
# echo "+++ args $1 +++" >> /tmp/logXephyr
fi
shift
done
# Next line is just to create a log file with the invocation
parameters, for debug purposes
echo $XEPHYR "${args[@]}" >> /tmp/logXephyr
exec $XEPHYR "${args[@]}"
-
Aps a criao do script, voc pode prosseguir com as modificaes no arquivo / etc /
gdm / gdm.conf arquivo.
Na [servidores] do gdm.conf, comentamos as regras correspondentes ao layout
original e define o novo. Ns modificamos o arquivo para criar a base do servidor X e
duas sesses Xephyr (um para cada banco) sobre a base X.
#
**********************************************************************
******
[servers]
# 0=Standard
#
# Means that DISPLAY ":0" will start an X server as defined in the
# [server-Standard] section.
#
**********************************************************************
******
# Multiseat setup (200906)
0=Xephyr0
1=Xephyr1
2=Xephyr2
[server-Xephyr0]
name=Xephyr0
command=/usr/bin/X -br -dpms -s 0
handled=false
flexible=false
[server-Xephyr1]
name=Xephyr1
command=/usr/sbin/Xephyr-path.sh -br -screen 1280x1024 -kbdpath
platform-i8042-serio-0-event-kbd -mousepath platform-i8042-serio-1-
event-mouse
handled=true
flexible=false
[server-Xephyr2]
name=Xephyr2
command=/usr/sbin/Xephyr-path.sh -br -screen 1280x1024 -kbdpath pci-
0000:00:1d.2-usb-0:2:1.0-event-kbd -mousepath pci-0000:00:1d.2-usb-
0:1:1.0-event-mouse
-
handled=true
flexible=false
#
**********************************************************************
******
Observe que esse o script que voc ter que indicar que os dispositivos de
entrada (de suas conexes fsicas) so para todos os lugares.
A segunda alterao no arquivo gdm.conf est relacionada com a
saudao. Ainda h coisas que precisam ser feitas manualmente.
Ns encontramos o j conhecido problema de ter todas as janelas Xephyr
devidamente colocado (uma sesso Xephyr aparecendo em cada display). O
Xephyr verso atual no suporta o parmetro geometria que a maioria das
aplicaes X incluem, portanto, no possvel colocar a janela do Xephyr no
lugar desejado. Para contornar esse problema, ns criamos um script que
ir ser chamado em vez de fazer uma chamada direta para a sesso de
boas vindas. Tal script invoca algumas ferramentas de linha de comando a
fim de colocar todas as janelas Xephyr apenas no lugar onde queremos t-
lo.Usaremos a linha de comando seguintes ferramentas: xwininfo, wmctrl
para mover uma das sesses Xephyr para o segundo monitor, de modo que
elas no se sobrepem mais. Essa a razo pela qual ns instalamos o
pacote wmctrl.
Na seo [servidor] do gdm.conf alterar a referncia para a saudao inicial
de referncia para um novo script. Esse script, alm de chamar a saudao,
vai colocar corretamente cada janela Xephyr:
-
#
**********************************************************************
******
[daemon]
# The greeter for attached (non-xdmcp) logins. Change gdmlogin to
gdmgreeter
# to get the new graphical greeter.
# Greeter=/usr/lib/gdm/gdmgreeter
Greeter=/usr/sbin/Xephyr-login.sh
#
**********************************************************************
******
Vamos ter que criar o script responsvel pela saudao / login (no nosso
caso, / usr / sbin / Xephyr login.sh). Este script ser executado pelo usurio
gdm, para que criar um arquivo de propriedade do gdm e dar permisso de
execuo apenas para o usurio.
$ sudo gedit /usr/sbin/Xephyr-login.sh
$ sudo chown gdm:gdm /usr/sbin/Xephyr-login.sh
$ sudo chmod 744 /usr/sbin/Xephyr-login.sh
Aps a criao do roteiro tal, deve ter esta aparncia:
$ cat /usr/sbin/Xephyr-login.sh
#!/bin/bash
# /usr/sbin/Xephyr-login.sh
XAUTH_BASE=/var/lib/gdm/:0.Xauth
DISPL_BASE=:0
XEP=$(XAUTHORITY=$XAUTH_BASE xwininfo -root -children -display :0 |
grep "Xephyr on :1" --max-count=1)
echo ${XEP} >> /tmp/logXephyrLogin
-
# assign values to positional parameters to obtain the id (first
parameter) of the Xephyr window
set ${XEP}
DISPLAY=$DISPL_BASE XAUTHORITY=$XAUTH_BASE wmctrl -i -r $1 -e
0,0,1024,-1,-1
# echo $1 >> /tmp/logXephyrLogin_1
/usr/lib/gdm/gdmlogin
No nosso caso, ns nos movemos uma das sesses de 1024 pixels na
vertical (lembre-se que o nosso layout composto por duas 1280x1024
exibe alinhados verticalmente).
Como voc pode ver, quando a saudao esperado para ser chamado, o
script wrapper (incluindo a saudao invocao) executado em seu
lugar. O usurio (s), finalmente v cada saudao em uma exibio
diferente e no resto do processo quase imperceptvel.
O ltimo comentrio sobre a saudao. O velho estilo gdmlogin foi h
algum tempo substitudo por um mais moderno gdmgreeter. H alguma
coisa errada sobre o tamanho da tela de deteco com essa saudao gdm
padro (gdmgreeter). Ele sempre tenta iniciar com uma resoluo de
1600x1200, ento tivemos de mudar para a saudao de idade (gdmlogin),
que detecta corretamente as resolues de tela das sesses Xephyr.
Talvez gdmgreeter usa xrandr para detectar a resoluo de cada sesso
Xephyr, uma vez que 1600x1200 a sada mxima relatada por xrandr em
cada sesso Xephyr. As janelas so de fato Xephyr resizable por meio de
xrandr, ento no temos certeza se este um bug do xrandr que s
informa o tamanho atual, ou um erro de gdmgreeter assumindo que ele
deve mudar o tamanho da janela para o maior disponvel.
-
$ DISPLAY=:1 xrandr -q
Screen 0: minimum 160 x 160, current 1280 x 1024, maximum 1600 x 1200
default connected 1280x1024+0+0 (normal left inverted right x axis y
axis) 0mm x 0mm
1600x1200 0.0
1400x1050 0.0
1280x960 0.0
1280x1024 0.0*
1152x864 0.0
1024x768 0.0
832x624 0.0
800x600 0.0
720x400 0.0
480x640 0.0
640x480 0.0
640x400 0.0
320x240 0.0
240x320 0.0
160x160 0.0
-
Referencias:
http://netpatia.blogspot.com/2009/06/multiseat-in-ubuntu-904.html
http://pt.wikibooks.org/wiki/Multiterminais/Multiterminal_com_Xephyr
http://www.vivaolinux.com.br/artigo/Multiterminais-em-um-PC