multi terminal

13
FACULDADE DE TECNOLOGIA DE CARAPICUÍBA Curso Superior de Análise de Sistemas e Tecnologia da Informação- ASTI Documentação Criação 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

Upload: venancio

Post on 24-Nov-2015

69 views

Category:

Documents


0 download

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