Diferència entre revisions de la pàgina «Exercici X Windows»
Línia 51: | Línia 51: | ||
#*A quina consola virtual creus que estàs? Comprova-ho canviant de consola virtual. | #*A quina consola virtual creus que estàs? Comprova-ho canviant de consola virtual. | ||
#*Quina és la consola gràfica per defecte? | #*Quina és la consola gràfica per defecte? | ||
− | # Executa la següent comanda i comenta què creus que deu ser cadascun dels processos que apareixen:<pre>$ ps -ef | grep X</pre> | + | # Executa la següent comanda i comenta què creus que deu ser cadascun dels processos que apareixen: (OJU, és "X" MAJÚSCULA)<pre>$ ps -ef | grep X</pre> |
#Com pots aturar la consola gràfica creada? Busca dues maneres de fer-ho. | #Com pots aturar la consola gràfica creada? Busca dues maneres de fer-ho. | ||
#Busca com executar REMOTAMENT una aplicació senzilla (xeyes, xlogo, xcalc) al funkyserver (des de la màquina remota) i que la interfície també aparegui en el propi funkyserver (caldrà que hagis arrencat les X prèviament). | #Busca com executar REMOTAMENT una aplicació senzilla (xeyes, xlogo, xcalc) al funkyserver (des de la màquina remota) i que la interfície també aparegui en el propi funkyserver (caldrà que hagis arrencat les X prèviament). |
Revisió del 18:53, 13 maig 2012
X-Windows és un sistema gràfic ideat durant els anys 80 per màquines Unix. Té una arquitectura client-servidor nativa per facilitar l'execució de processos i visualitzacions en màquines diferents.
Per exemple, per poder executar programes en una màquina remota i visualitzar-la a la nostra, es pot fer a través de la senzilla funció:
$ ssh -X usuari@maquina
El paràmetre "-X" fa que es crei un túnel SSH entre les 2 màquines per transferir la informació de les X-Windows (protegida). Si voleu examinar què fa de difernt podeu fer un cop d'ull a la variable d'entorn DISPLAY:
$ echo $DISPLAY
això ens dirà on s'executaran les aplicacions que requereixin interfície de X-Windows. Normalment els displays locals son ":0" o ":1", però en remot apareixen altres ports on s'ha creat el túnel (ho gestiona el propi SSH, no cal que fem res).
Contingut
Teoria X-Windows
Les X-Windows estan totalment pensat amb una arquitectura client-servidor, pel que aïlla la part gràfica de cada aplicació de la part de procés (càlcul, accés a disc, dur, xarxa, etc.). AL TANTO que la denominació "X-server" i "X-client" pot confondre fàcilment:
- El X-server controla el hardware de la targeta gràfica i el teclat i ratolí. La màquina X-server executa la part gràfica i per tant rep ordres del X-client del tipus "pinta una ratlla aquí" o "fes un quadrat blau allà".
- El X-client és la màquina on l'aplicació de procés funciona. Al tanto perquè normalment sol ser el "servidor" de dades corporatiu o similar, i en canvi des del punt de vista de les X és el client.
X-Winodows, al ser un sistema amb clara separació del client i servidor gràfic (X-Windows server) ens permet fer funcions ben diferents que no permeten altres arquitectures monolítiques com W32:
- Executar aplicacions remotament en la nostra pantalla local.
- Executar aplicacions executant-se en una màquina sobre displays d'altres màquines.
- Iniciar sessions d'escriptori remot de manera nativa.
Característiques d'aquesta arquitectura:
- Un punt menys de velocitat ja que l'estructura client-servidor (i més si hi ha xarxa entremig) és més complexa.
- Alliberació de les tasques gràfiques en el X-client, que sol ser el servidor central de dades. Això atorga més capacitat de càlcul al servidor de procés.
- Sistema més estable a l'aïllar la part gràfica on se solen donar molts errors d'execució. Si hi ha un problema, l'aplicació gràfica no s'executa en mode kernel sinó en mode usuari i no penja tota la màquina.
Altres arquitectures com W32 són monolítiques (un sol bloc) i no estan pensades com a client-servidor. Les característiques de les arquitectures monolítiques son:
- Un mica més de velocitat d'execució (o millor performance).
- Més inestabilitat al sistema a l'executar-se la part gràfica dins el kernel (la màquina es penja amb més facilitat).
Cal que llegiu aquests articles de la Wikipèdia:
- Sistema X-Windows. Aquest article té una versió raonable en espanyol.
- Arquitectura X-Windows. Aquest article no té cap versió traduïda de qualitat suficient.
Exercicis Xorg
El realitzarem amb una màquina tipus Ubuntu Server, és a dir, sense cap interfície gràfica (FUNKYSERVER). Comenceu amb una instal·lació neta del funkyserver.
IMPORTANT: Respon a les preguntes que es formulen a la pràctica i fes pantallades de cada apartat.
- Esbrina la comanda adequada per veure quant espai de disc dur està en us. Quant s'utilitza en una instal·lació bàsica de Ubuntu Server?
- Esbrineu quin paquet cal instal·lar en una màquina sense interfície (funkyserver) per aconseguir una execució remota de la típica aplicació XEYES. Pista: intenta instal·lar xeyes aviam què et suggereix fer.
- Respon (mirant la sortida del apt-get):
- Quants paquets et demana instal·lar?
- Quant espai de disc dur requereixen?
- Prova de llançar remotament altres aplicacions com xcalc o xterm. Pots assegurar a simple vista que s'estan executant en el funkyserver?
- Instal·la les xorg bàsiques.
- Quin espai de disc dur ocuparan segons el apt-get?
- Com s'ha d'iniciar la sessió X des de la consola de la pròpia màquina?
- Executa xeyes localment i examina com es comporta. Com l'apagues i segueixes treballant amb la consola?
- A quina consola virtual creus que estàs? Comprova-ho canviant de consola virtual.
- Quina és la consola gràfica per defecte?
- Executa la següent comanda i comenta què creus que deu ser cadascun dels processos que apareixen: (OJU, és "X" MAJÚSCULA)
$ ps -ef | grep X
- Com pots aturar la consola gràfica creada? Busca dues maneres de fer-ho.
- Busca com executar REMOTAMENT una aplicació senzilla (xeyes, xlogo, xcalc) al funkyserver (des de la màquina remota) i que la interfície també aparegui en el propi funkyserver (caldrà que hagis arrencat les X prèviament).
- NOTA: per aconseguir això haureu de modificar la variable d'entorn DISPLAY. Fent "echo $DISPLAY" veureu el contingut. Per canviar-la heu de fer
export DISPLAY=...nomdeldisplay...
- NOTA: per aconseguir això haureu de modificar la variable d'entorn DISPLAY. Fent "echo $DISPLAY" veureu el contingut. Per canviar-la heu de fer
Troubleshooting
Pot ser que no arrenquin les X si heu estat remenant la màquina en mode superusuari. Mireu si l'arxiu .Xauthority del vostre directori d'usuari té el propietari correcte (NO root) i si dona problemes l'esborreu, a l'iniciar sessió es crearà de nou.
Gestors d'escriptoris
A part de les xorg bàsiques cal que instal·lem el gestor d'escriptori si volem una màquina gràfica amb funcionalitat complerta. Provarem els diferents escriptoris per veure les seves diferències.
Abans de començar modifiqueu la màquina virtual per executar-se amb 1 GB de RAM.
De cadascun dels escriptoris treballats cal que:
- Prengus nota de quant ocupen en el disc dur.
- Agafis una pantallada.
- Examinis les seves principals característiques.
- Esbrina quina quantitat de RAM hi ha disponible només arrencar l'escriptori.
Els escriptoris a provar son:
- LXDE
- XFCE
- KDE
- Gnome
- Unity
Consoles gràfiques
Busca com crear una segona consola gràfica sobre la teva màquina. Com canvies entre les diferents consoles virtuals?
La comanda serà una variant de xinit amb algun paràmetre per que s'obri en el display :1 enlloc del display :0
Quins números de consoles gràfiques són el DISPLAY :0 i el DISPLAY :1 ?
Display Manager i connexió remota X-windows amb XDMCP
Els Display Managers son un servei del sistema que facilita l'inici de sessió (login) de forma gràfica. Cada escriptori té els seu Display Manager, com per exemple:
- Xorg: XDM (és el més bàsic)
- Gnome: GDM (Gnome Display Manager)
- LXDE: LXDM
- KDE: KDM
- Unity: LightDM
Recordeu que al ser un servei cal gestionar-lo amb la comanda:
$ sudo service gdm {start|stop|restart}
Podeu tenir un Desktop qualsevol amb un Display Manager diferent, per exemeple, podeu tenir el LXDE amb el XDM. Per canviar de Display Manager per defecte només cal que reconfigureu algun dels paquets, per exemple:
$ sudo dpkg-reconfigure xdm
...i us deixarà triar amb quin DM començar les sessions.
Activar XDMCP
En els següents exercicis es tracta de realitzar allò pel què s'han pensat les X-Windows: obrir una sessió remota des d'una altra màquina. Per poder fer això cal tenir un Display Manager i activar la sessió remota a través de 'XDMCP (X-Windows Desktop Manager Control Protocol). Oju perquè hi ha alguns DM com el LXDM que NO poden treballar amb XDMCP. Haureu, doncs, de provar amb KDM, GDM o XDM (aquest darrer és el més senzill i bàsic).
Podeu mirar aquí per saber més del XDMCP (HOWTO). També XDMCP a la Wikipèdia en anglès o en castellà.
Per realitzar la connexió cal reconfigurar el vostre DM triat i activar el XDMCP. Podeu consultar aquest HOWTO. No us espanteu per l'article que és molt llarg, només cal tocar un parell de línies dels arxius de conf:
- Si utilitzeu XDM aneu al punt 2.6 apartat 2 i 3 (calen els 2!!)
- Si utilitzeu GDM
aneu al punt 2.6 apartat 4. Hi ha un error (el howto és obsolet). Amb GDM heu d'editar l'arxiu /etc/gdm/custom.conf (si no hi és el creeu vosaltres) i hi poseu (o afegiu) el següent:
[xdmcp] Enable=true
- pel GDM també caldrà que modifiqueu l'arxiu /etc/gdm/gdm.schemas (OJU, és un XML) i posar les variables xdmcp/Enable a "true" i la xdmcp/DisplaysPerHost a un valor més gran que 1, per exemple, 4.
Exercici
Utilitza la màquina amfitriona per connectar-te remotament a la màquina virtual (hauràs d'obrir la sessió X en una segona consola gràfica com has fet a l'exercici anterior).
La comanda per obrir una sessió X sobre una altra màquina remota és la següent (xinit afegint el paràmetre -query <ip>). Abans, però, llegiu com habilitar el XDMCP del Display Manager per que la màquina accepti la connexió.
$ xinit (...algunes opcions per obrir un 2n terminal gràfic...) -query <ip_del_xserver>