Certificat | LPIC-1 |
Examen: | 102 (torneu a la resta de temes) |
Fitxers: | LPI106_InterficiesGrafiques.pdf (LPI106_InterficiesGrafiques.odp) |
Objectius: | http://www.lpi.org/eng/certification/the_lpic_program/lpic_1/exam_102_detailed_objectives |
Dipòsit SVN: | https://svn.projectes.lafarga.cat/svn/lpi/Materials/Examen_102/106.1 |
Usuari: | anonymous |
Paraula de pas: | qualsevol paraula de pas |
106.1. Instal·lació i configuració de X11 | |
---|---|
![]() |
|
![]() |
Àrees Clau de Coneixement: |
![]() |
La següent és una llista parcial de fitxers, termes i utilitats utilitzades: |
![]() |
Apunts: LPI 106.1. Instal·lació i configuració de X11 |
Amb l'ordre lspci podeu consultar quin és el tipus de targeta gràfica que teniu:
$ lspci | grep VGA 00:02.0 VGA compatible controller: Intel Corporation 82G33/G31 Express Integrated Graphics Controller (rev 10)
Podeu obtenir informació més detallada amb:
$ sudo lshw -C video *-display description: VGA compatible controller product: 82G33/G31 Express Integrated Graphics Controller vendor: Intel Corporation physical id: 2 bus info: [email protected]:00:02.0 version: 10 width: 32 bits clock: 33MHz capabilities: msi pm bus_master cap_list rom configuration: driver=i915 latency=0 resources: irq:27 memory:fea80000-feafffff ioport:dc00(size=8) memory:d0000000-dfffffff(prefetchable) memory:fe900000-fe9fffff
Alguns dels controladors de targetes de vídeo de marques com ATI o Nvidia utilitzen drivers propietaris. Ubuntu té una eina gràfica per gestionar aquest tipus de controladors a:
Sistema > Administració > Gestor de controladors privatius
Cada driver té el seu propi paquet com podeu observar a:
$ dpkg -l | grep xserver ii x11-xserver-utils 7.5+1ubuntu2 X server utilities ii xserver-common 2:1.7.6-2ubuntu2 common files used by various X servers ii xserver-xorg 1:7.5+5ubuntu1 the X.Org X server ii xserver-xorg-core 2:1.7.6-2ubuntu2 Xorg X server - core server ii xserver-xorg-input-all 1:7.5+5ubuntu1 the X.Org X server -- input driver metapacka ii xserver-xorg-input-evdev 1:2.3.2-5ubuntu1 X.Org X server -- evdev input driver ii xserver-xorg-input-mouse 1:1.5.0-1 X.Org X server -- mouse input driver ii xserver-xorg-input-synaptics 1.2.2-1ubuntu2 Synaptics TouchPad driver for X.Org server ii xserver-xorg-input-vmmouse 1:12.6.5-4ubuntu1 X.Org X server -- VMMouse input driver to us ii xserver-xorg-input-wacom 1:0.10.5-0ubuntu2 X.Org X server -- Wacom input driver ii xserver-xorg-video-all 1:7.5+5ubuntu1 the X.Org X server -- output driver metapack ii xserver-xorg-video-apm 1:1.2.2-1 X.Org X server -- APM display driver ii xserver-xorg-video-ark 1:0.7.2-1 X.Org X server -- ark display driver ii xserver-xorg-video-ati 1:6.12.192-2ubuntu2 X.Org X server -- AMD/ATI display driver wra ii xserver-xorg-video-chips 1:1.2.2-1 X.Org X server -- Chips display driver ii xserver-xorg-video-cirrus 1:1.3.2-1ubuntu1 X.Org X server -- Cirrus display driver ii xserver-xorg-video-fbdev 1:0.4.1-1ubuntu1 X.Org X server -- fbdev display driver ii xserver-xorg-video-geode 2.11.7-1 X.Org X server -- Geode GX2/LX display drive ii xserver-xorg-video-i128 1:1.3.3-1 X.Org X server -- i128 display driver ii xserver-xorg-video-i740 1:1.3.2-1 X.Org X server -- i740 display driver ii xserver-xorg-video-intel 2:2.9.1-3ubuntu1 X.Org X server -- Intel i8xx, i9xx display d ii xserver-xorg-video-mach64 6.8.2-2 X.Org X server -- ATI Mach64 display driver ii xserver-xorg-video-mga 1:1.4.11.dfsg-2ubuntu1 X.Org X server -- MGA display driver ii xserver-xorg-video-neomagic 1:1.2.4-2 X.Org X server -- Neomagic display driver ii xserver-xorg-video-nouveau 1:0.0.15+git20100219+9b4118d-0ubuntu5 X.Org X server -- Nouveau display driver (ex ii xserver-xorg-video-nv 1:2.1.15-1ubuntu3 X.Org X server -- NV display driver ii xserver-xorg-video-openchrome 1:0.2.904+svn827-1 X.Org X server -- VIA display driver ii xserver-xorg-video-r128 6.8.1-2 X.Org X server -- ATI r128 display driver ii xserver-xorg-video-radeon 1:6.12.192-2ubuntu2 X.Org X server -- AMD/ATI Radeon display dri ii xserver-xorg-video-rendition 1:4.2.3-1 X.Org X server -- Rendition display driver ii xserver-xorg-video-s3 1:0.6.3-1 X.Org X server -- legacy S3 display driver ii xserver-xorg-video-s3virge 1:1.10.4-1 X.Org X server -- S3 ViRGE display driver ii xserver-xorg-video-savage 1:2.3.1-1ubuntu1 X.Org X server -- Savage display driver ii xserver-xorg-video-siliconmotion 1:1.7.3-1 X.Org X server -- SiliconMotion display driv ii xserver-xorg-video-sis 1:0.10.2-2 X.Org X server -- SiS display driver ii xserver-xorg-video-sisusb 1:0.9.3-1 X.Org X server -- SiS USB display driver ii xserver-xorg-video-tdfx 1:1.4.3-1 X.Org X server -- tdfx display driver ii xserver-xorg-video-trident 1:1.3.3-1 X.Org X server -- Trident display driver ii xserver-xorg-video-tseng 1:1.2.3-1 X.Org X server -- Tseng display driver ii xserver-xorg-video-v4l 1:0.2.0-4 X.Org X server -- Video 4 Linux display driv ii xserver-xorg-video-vesa 1:2.3.0-1ubuntu1 X.Org X server -- VESA display driver ii xserver-xorg-video-vmware 1:10.16.9-1 X.Org X server -- VMware display driver ii xserver-xorg-video-voodoo 1:1.2.3-1 X.Org X server -- Voodoo display driver
Utilitzen mapes de bits i altres artilugis (WIMP) per tal de representar i recollir la informació que s'intercanvia amb l'usuari final. Són una alternativa als sistemes informàtics basats en text (caràcters).
Prehistoria
Els concepte de treball amb finestres i punters ja s'inicia als anys 60 amb projectes com w:SAGE o Intelligence amplification i programes com w:Sketchpad.
Inicis dels entorns gràfics:
Xerox PARC (Palo Alto Research Center, Inc.) crea els primers ordinadors personals no comercials als anys 70. PARC és una companyia de recerca i desenvolupament fundada el 1970 situada a Palo Alto, California. Es coneguda pel haver inventat:
El Xerox Alto va ser desenvolupat per Xerox PARC al 1973 i va ser el primer ordinador personal amb GUI i escriptori.
Però el primer ordinador que va ser venut comercialment va ser el Xerox Star al 1981 (costava $16.000) i una GUI basada en finestres. Va ser el primer sistema comercial que utilitzava carpetes, ratolí, Ethernet, servidor de fitxers i impressores i correu electrònic:
NOTA: Steve Jobs va treballar prèviament a Xerox abans d'Apple
Apple i MAC
Al 1984 Mac treu els primers PCs comercials que popularitzen les GUIs. Els sistemes gràfics a Linux sempre s'han basat en els sistemes X que van aparèixer al 1984. La primera versió de Windows és la 1.0 (1985).
Els primers ordinadors d'Apple van ser:
NeXT
Amiga i Atari:
Sistema operatiu Amiga Workbecnh
Sistema operatiu Atari GEM
Windows:
Sistema operatiu IBM PC on s'executava Windows 1.0
Sistema operatiu Windows 1.0. Era un programa per a DOS
Sistema operatiu Windows 3.1
Sistema operatiu Windows Vista
El X Window System aka les X o X11 és el sistema estàndard de finestres en el món Unix, i per extensió GNU/Linux.
NOTA: Noteu la importància de la s final. És X Window System i no pas X Windows System
Les primeres versions daten de mitjans dels 80. El sistema W Window System (1983) (sistema operatiu Unix System V) és considera el precursor de les X. X va ser desenvolupat al MIT el 1984.
Des de els seus inicis es va crear pensant en una arquitectura client-servidor pensada per treballar en xarxa de forma remota amb entorns gràfics. Realment X Window System és un protocol de xarxa i de pantalla que proveeix d'un sistema de finestres (entorn gràfic) a dispositius de mapes de bits.
Proveeix un sèrie d'eines estàndard per crear aplicacions amb interfície gràfica d'usuari (GUI) en sistemes Unix-like. També és suportat per la majoria de sistemes operatius de forma directa (MacOS, OpenVMS) o mitjançant aplicacions extres (Windows).
Actualment (des de 2004) la implementació de referència és la de la Xorg.Foundation. Abans s'utilitzava XFree86:
IMPORTANT: El sistema client-servidor està vist des de la perspectiva de les aplicacions (en comptes de l'usuari). Les aplicacions són clients del servidor X.
La variable d'entorn DISPLAY és l'encarregada de definir a on s'enviaran les dades gràfiques (és a dir quin és el servidor). En la majoria de casos client i servidors es troben a la mateixa màquina.
La majoria d'aplicacions X tenen un paràmetre anomenat -display que permet executar l'aplicació en una pantalla remota.
El servidor X s'encarrega:
Històricament la configuració de les X s'ha realitzar al fitxer /etc/X11/xorg.conf.
No apareixen al fitxer /etc/services però el servidor X sol escoltar peticions al port 6000:
$ nmap 192.168.111.29 Starting Nmap 5.00 ( http://nmap.org ) at 2010-05-03 14:18 CEST Interesting ports on portatil (192.168.111.29): Not shown: 979 closed ports PORT STATE SERVICE ... 6000/tcp open X11 ...
Si s'inicien més servidors:
$ nmap 192.168.111.29 ... 6000/tcp open X11 6001/tcp open X11:1
Els components d'un entorn d'escriptori són:
Consulteu Gnome.
Consulteu KDE.
El servidor X només proporciona capacitats per utilitzar la pantalla com a un dispositiu de mapa de bits. Els gestors de finestres proporcionen el suport per treballar amb finestres.
Normalment l'executable és:
/usr/bin/X
Amb tasksel podeu instal·lar entorns d'escriptori complets (Gnome, KUbuntu, Edubuntu, Xubuntu, etc.)
$ sudo tasksel --list ... u edubuntu-desktop-kde Edubuntu KDE desktop u edubuntu-desktop-gnome Edubuntu desktop u kubuntu-desktop Kubuntu desktop u mobile-mid Ubuntu MID edition u mobile-netbook-remix Ubuntu Netbook Remix u ubuntu-desktop Ubuntu desktop u xubuntu-desktop Xubuntu desktop
El paquet ubuntu-desktop ens instal·la un escriptori bàsic Gnome.
Consulteu tasksel.
Per instal·lar Gnome a una Ubuntu (l'escriptori d'Ubuntu per defecte):
$ sudo apt-get install ubuntu-desktop
A les versions Ubuntu 6.06 (Dapper Drake) i Ubuntu 8.04 (Hardy Heron):
$ sudo apt-get install gnome-desktop-environment
Podem només instal·lar el servidor X:
$ sudo apt-get install xserver-xorg
Normalment però amb el servidor X no tindrem suficient i caldrà com a mínim instal·lar un gestor de finestres. Un dels més lleugers és OpenBox:
$ sudo apt-get install openbox
També es pot utilitzar fluxbox.
Només instal·lant el client podem executar aplicacions gràfiques i enviar les dades gràfiques a un servidor remot
$ sudo apt-get install xauth
S'utilitza en servidors per tal de no haver d'executar un servidor X al servidor però si poder executar aplicacions gràfiques.
Per exemple podem instal·lar aplicacions bàsiques X amb:
$ sudo apt-get install x11-apps
Les aplicacions bàsiques són:
$ dpkg -L x11-apps| grep bin /usr/bin /usr/bin/atobm /usr/bin/bitmap /usr/bin/bmtoa /usr/bin/oclock /usr/bin/x11perf /usr/bin/x11perfcomp /usr/bin/xbiff /usr/bin/xcalc /usr/bin/xclipboard /usr/bin/xclock /usr/bin/xconsole /usr/bin/xcursorgen /usr/bin/xcutsel /usr/bin/xditview /usr/bin/xeyes /usr/bin/xgc /usr/bin/xload /usr/bin/xlogo /usr/bin/xmag /usr/bin/xman /usr/bin/xmore /usr/bin/xwd /usr/bin/xwud
NOTA: Ubuntu Server ja incorpora el client instal·lat xauth
Es tracta del programa encarregar d'iniciar el servidor X. un cop instal·la el servidor X (paquet xserver-xorg) el podeu executar directament amb /usr/bin/X o el que es fa és utilitzar xinit:
$ sudo apt-get install xinit
xinit proporciona l'script startx:
$ sudo startx &
NOTA: Podeu no executar-l oen segon terme però aleshores haureu d'iniciar un altre terminal al servidor
Comproveu que està en execució:
$ ps aux | grep X root 4824 0.0 0.2 2908 824 pts/0 S< 21:33 0:00 xinit /etc/X11/xinit/xinitrc -- /etc/X11/xinit/xserverrc :0 -auth /tmp/serverauth.baBPEgNpqL root 4825 1.4 2.1 15856 8292 tty7 S<s+ 21:33 0:00 /usr/bin/X11/X -nolisten tcp root 4850 0.0 0.1 1872 556 pts/0 S< 21:33 0:00 sh /etc/X11/xinit/xinitrc
Veureu que es mostra una terminal xterm
Ara establiu el display:
$ export DISPLAY=:0.0 $ sudo apt-get install x11-apps $ xeyes
o
$ xclock
O podeu executar qualsevol altre aplicació X. Observeu com les X que teniu són molt primaries i no hi ha cap gestors de finestres (les aplicacions s'executen directament a la pantalla).
Exemples (TODO):
xinit -- /usr/local/bin/Xqdss :1 This is how one could start a specific type of server on an alternate display. xinit -geometry =80x65+10+10 -fn 8x13 -j -fg white -bg navy
Aquest exemple mostra un servidor X amb una xterms amb les opcions indicades.
xinit -e widgets -- ./Xsun -l -c This will use the command .Xsun -l -c to start the server and will append the arguments -e widgets to the default xterm command. xinit /usr/ucb/rsh fasthost cpupig -display ws:1 -- :1 -a 2 -t 5 This will start a server named X on display 1 with the arguments -a 2 -t 5. It will then start a remote shell on the machine fasthost in which it will run the command cpupig, telling it to display back on the local workstation.
Consulteu també el manual:
$ man xinit
Vegeu també startx.
# cat /etc/X11/xinit/xinitrc #!/bin/bash # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ # /etc/X11/xinit/xinitrc # # global xinitrc file, used by all X sessions started by xinit (startx) # invoke global X session script . /etc/X11/Xsession
És a dir s'executa:
/etc/X11/Xsession
Que es tracta d'un script que gestiona l'inici de sessió X. L'script funciona segons el que s'indica als fitxers:
Fitxers de la carpeta /etc/X11/Xsession.d/
# cat /etc/X11/Xsession.d/ 20x11-common_process-args 40x11-common_xsessionrc 60x11-common_localhost 90consolekit 99x11-common_start 30x11-common_xresources 50x11-common_determine-startup 75dbus_dbus-launch 90x11-common_ssh-agent
Per exemple a una Ubuntu 9.04 trobem:
$ cat /etc/X11/Xsession.d/ 20x11-common_process-args 55gnome-session_gnomerc 80im-switch 30x11-common_xresources 60x11-common_localhost 90consolekit 40x11-common_xsessionrc 60xdg-user-dirs-update 90gpg-agent 50x11-common_determine-startup 70pulseaudio 90x11-common_ssh-agent 52libcanberra-gtk-module_add-to-gtk-modules 75dbus_dbus-launch 99x11-common_start
/etc/X11/Xsession.options
$ sudo cat /etc/X11/Xsession.options # $Id: Xsession.options 189 2005-06-11 00:04:27Z branden $ # # configuration options for /etc/X11/Xsession # See Xsession.options(5) for an explanation of the available options. allow-failsafe allow-user-resources allow-user-xsession use-ssh-agent use-session-dbus
startx és un script que fa de front end de l'eina xinit que proporciona un interfície a l'usuari més simple per tal d'iniciar una sessió al sistema X Window. Sovint s'executa sense arguments, per exemple en un servidor on no està activat el servidor X:
$ startx
startx forma part del paquet xinit:
$ dpkg -L xinit | grep bin /usr/bin /usr/bin/startx /usr/bin/xinit
Que executarà startx depèn dels fitxers:
Si cap dels anteriors fitxers existeix els valors per defecte són:
client: xterm -geometry +1+1 -n login -display :0 servidor: X :0
No tots els usuaris poden executar el servidor X:
$ startx X: user not authorized to run the X server, aborting.
A més no podem executar un servidor dos cops al mateix display:
$ sudo startx Fatal server error: Server is already active for display 0 If this server is no longer running, remove /tmp/.X0-lock and start again. Please consult the The X.Org Foundation support at http://wiki.x.org for help. ddxSigGiveUp: Closing log
Cal executar:
$ sudo startx -- :1
NOTA: L'ordre anterior semblarà que us ha tancat de cop la sessió X que teniu oberta. La podeu recuperar amb Ctrl+Alt+F7. La nova sessió es trobarà a Ctrl+Alt+F9, almenys a Ubuntu.
Podeu veure el procés del nou servidor X en execució:
$ ps aux | grep X root 1553 6.9 2.7 161852 97168 tty7 Ss+ 11:49 40:12 /usr/bin/X :0 -br -verbose -auth /var/run/gdm/auth-for-gdm-4VTdME/database -nolisten tcp vt7 root 8912 0.0 0.0 3056 800 pts/4 S+ 21:14 0:00 xinit /etc/X11/xinit/xinitrc -- /usr/bin/X :1 -auth /tmp/serverauth.W3NtGhQQAs root 8913 0.5 0.5 36520 20604 tty9 S<s+ 21:14 0:04 /usr/bin/X :1 -auth /tmp/serverauth.W3NtGhQQAs
Consulteu també el manual:
$ man startx
El nom del fitxer de configuració de les X depén de la implementació de servidor X escollida i de la versió de la implementació:
Consulteu /etc/X11/xorg.conf.
$ cd /etc/X11/Xsession.d [email protected]:/etc/X11/Xsession.d$ ls 10fglrx 40x11-common_xsessionrc 55gnome-session_gnomerc 70pulseaudio 90consolekit 20x11-common_process-args 50x11-common_determine-startup 60x11-common_localhost 75dbus_dbus-launch 90x11-common_ssh-agent 30x11-common_xresources 52libcanberra-gtk-module_add-to-gtk-modules 60xdg-user-dirs-update 80im-switch 99x11-common_start $
$ sudo dpkg-reconfigure -phigh xserver-xorg
TODO
Per generar un fitxer:
/etc/X11/xorg.conf
Cal aturar el servidor X:
$ sudo /etc/init.d/gdm stop
I executar:
$ sudo X -configure
Recursos:
El propi servidor X:
XFree86:
$ sudo XFree86 -configure
Xorg-X11:
$ Xorg -configure
S'ha d'executar quan no està en marxa el servidor gràfic.
/root/XF86Config.new (for XFree86) /root/xorg.conf.new (for X.org-X11).
Eines específiques de distribució:
$ system-config-display
$ sup dpkg-reconfigure xserver-xorg
La variable DISPLAY indica quina pantalla han d'utilitzar les aplicacions gràfiques. Típicament la variable val:
$ echo $DISPLAY :0.0
La sintaxi és:
[hostname]:displaynumber[.screennumber]
Si no s'indica el hostname aleshores s'enten que és la màquina local. Si no s'indica el número de pantalla s'enten que s'utilitza la per defecte (0). És a dir en el nostre cas vol dir que el servidor està a localhost, que és el primer servidor X en execució i que utilitzem la primera pantalla.
La variable s'estableix automàticament quan iniciem una sessió gràfica.
Si executeu:
$ export DISPLAY=:0 $ echo $DISPLAY :0 $ xeyes
Veureu com es mostren els ulls correctament. Per tant:
:0.0 = :0
Si iniciem un altre servidor X, per exemple iniciant un altre compte d'usuari (sense sortir de l'usuari actual), aleshores la variable d'entorn DISPLAY per aquest usuari seria:
$ echo $DISPLAY :1.0
Cada usuari utilitza el seu servidor X tal i com podeu comprovar si executeu:
$ ps aux | grep X root 1245 2.4 4.0 242808 145220 tty7 Rs+ May02 44:30 /usr/bin/X :0 -br -verbose -auth /var/run/gdm/auth-for-gdm-ZtJz4S/database -nolisten tcp vt7 root 20991 0.0 0.8 58592 29588 tty9 Ss+ May02 0:09 /usr/bin/X :1 -br -verbose -auth /var/run/gdm/auth-for-gdm-Fo4L3r/database -nolisten tcp
Com podeu veure (opció -nolisten tcp) a Ubuntu per defecte el servidor X no escolta peticions que provinguin de la xarxa (només accepta connexions per sockets Unix localhost i no obre cap socket TCP/IP)
Si un usuari vol enviar dades gràfiques al servidor X d'un altre usuari cal que li doni permisos d'accés. Consulteu xhost.
Recursos:
IMPORTANT: Tingueu en compte que els servidors X de la majoria de distribucions modernes no escolten peticions remotes a través de la xarxa, caldria desactivar aquest comportament per defecte per tal de poder fer pràctiques d'enviar dades gràfiques a màquines remotes. Consulteu el fitxer: /etc/X11/xinit/xserverrc i /etc/gdm/gdm.schema
$ sudo xhost + access control disabled, clients can connect from any host
La comanda xhost permet controlar quins clients poden utilitzar el nostre servidor X.
Creeu un nou usuari:
$ sudo adduser pep
I inicieu una nou interpret d'ordres amb aquest usuari:
Ara intenteu executar una aplicació gràfica com xterm o xeyes
$ xterm No protocol specified xterm Xt error: Can't open display: :0.0
Sortiu amb exit de l'usuari pep. Ara executeu:
$ xhost access control enabled, only authorized clients can connect SI:localuser:sergi SI:localuser:gdm SI:localuser:root
Xhost mostra quins usuaris tenen permisos per utilitzar el servidor X que s'està executant actualment. Afegiu a l'usuari pep:
Es pot donar accés a tothom des de la màquina local amb:
$ xhost localhost
NOTA: Podeu permetre l'accés a tothom (tots els usuaris i totes les màquines) amb: $ xhost +. No es gens recomanable ja que s'està donant accés complet a tothom i per exemple es poden capturar les tecles que premeu (keystrokes) invalidant per exemple la seguretat per paraula de pas. Ho podeu fer temporalment i desactivar-ho amb $ xhost -
Des de una màquina remota cal Permetre les connexions TCP al servidor X i després indicar el host al que voleu donar permisos:
$ xhost +nom_host
Potser abans haureu d'afegir el host al DNS o al fitxer /etc/hosts.
Xauth permet l'accés al servidor X de qualsevol usuari que conegui el secret adequat, és a dir un registre d'autenticació o "magic cookie". Aquest esquema d'autenticació (authorization scheme) és conegut formalment com MIT-MAGIC-COOKIE-1.
Les cookies per a diferents displays s'emmagatzemen al fitxer ~/.Xauthority de cada usuar o es gestionada pel Display manager (p. ex. GDM)i, fitxer que ha de ser inaccessible per als altres usuaris del sistema. El programa xauth és l'encarregat de gestionar aquestes cookies.
Es pot especificar un fitxer de cookies diferents amb la variable d'entorn XAUTHORITY, cosa que es fa molt rarament:
$ env | grep XAUTHORITY XAUTHORITY=/var/run/gdm/auth-for-sergi-Xyk1Er/database
$ file /var/run/gdm/auth-for-sergi-Xyk1Er/database /var/run/gdm/auth-for-sergi-Xyk1Er/database: X11 Xauthority data
L'ordre:
$ xauth -v Using authority file /var/run/gdm/auth-for-sergi-Xyk1Er/database xauth> quit
o
$ xauth list BSFHPCasa/unix:0 MIT-MAGIC-COOKIE-1 81a42734945fe1a86de5ac0edecec4f90
Fixeu-vos que el fitxers és de només lectura/escriptura per al vostre usuari:
$ ls -al /var/run/gdm/auth-for-sergi-Xyk1Er/database -rw------- 1 sergi sergi 54 2010-05-09 11:49 /var/run/gdm/auth-for-sergi-Xyk1Er/database
Mostra quines cookies estem utilitzant.
Al iniciar una sessió X el servidor llegeix una cookie des del fitxer que s'indica amb l'argument -auth:
$ ps aux | grep X root 1553 6.9 1.0 54484 36996 tty7 Rs+ 11:49 36:22 /usr/bin/X :0 -br -verbose -auth /var/run/gdm/auth-for-gdm-4VTdME/database -nolisten tcp vt7
A partir el servidor només permet les connexions dels usuaris que coneixen la mateixa cookie.
Xauth té un clar avantatge de seguretat respecte a xhost, es pot limitar l'accés a un servidor X a usuaris específics en màquines especifiques (amb xhost només podem controlar l'accés per màquines o usuaris NIS) i no és susceptible a atacs d'spoofing (adreces de màquines falsejades).
Xauth permet un mode interactiu:
$ xauth Using authority file /var/run/gdm/auth-for-sergi-Xyk1Er/database xauth>
Utilitzeu help per obtenir ajuda o consulteu el manual:
$ man xhost
Ara vegem un exemple de com utilitzar xhost per tal que un altre client pugui utilitzar el nostre servidor. Primer consulteu la cookie del servidor:
# xauth list BSFHPCasa/unix:0 MIT-MAGIC-COOKIE-1 81a42734945fe1a86de5ac0edecec4f90
Ara entreu com un altre usuari:
$ su - bego Contrasenya: [email protected]:~$ xauth list xauth: creating new authority file /home/bego/.Xauthority
NOTA: Noteu com hem utilitzat l'opció - de su. Si no utilitzem aquesta opció entrarem com l'usuari bego però amb mantindrem les variables d'entorn de l'usuari inicial entre les quals es troba XAUTHORITY i us donaria l'error:
xauth: /var/run/gdm/auth-for-sergi-Xyk1Er/database not writable, changes will be ignored
Ara afegiu la cookie per aquest usuari:
$ xauth add BSFHPCasa/unix:0 MIT-MAGIC-COOKIE-1 81a42734945fe1a86de5ac0edecec4f90 xauth: creating new authority file /home/bego/.Xauthority [email protected]:~$ export DISPLAY=:0.0 [email protected]:~$ xeyes
NOTA: Si el client és remot cal activar el servidor X per tal que escolti peticions TCP
Vegeu també SSH Forwarding i xhost.
Recursos:
Consulteu SSH Forwarding.
S'utilitza FontPath a la secció Files del fitxer /etc/X11/xorg.conf per tal d'indicar quin és l'origen de les fonts a utilitzar. La sintaxi és:
<trans>/<hostname>:<port-number>
On <trans> és e tipus de sistema de transport per accedir al servidor de fonts X:
I <hostname> és el nom de la màquina que executa el servidor de fonts i <port-number> és el número de port TCP al qual el servidor de fonts està esperant peticions.
Per exemple, es podria indicar un servidor de fonts X xfs remot amb:
FontPath "unix/:7100"
Recordeu que normalment el servidor de fonts X escolta peticions al port 7100. Quan utilitzem uni, podem no indicar el hostname ja que s'entén que ens referim a localhost.
Es poden indicar múltiples camins separats per comes o es opt repetir la línia FontPath tants cops com sigui necessari.
També es poden indicar camins absoluts cap a directoris del sistema.
Quan no s'especifica FontPath s'utilitzen els camins per defecte.
El servidor de fonts més utilitzat és X font server (xfs) i proporciona un mecanisme estàndard que permet que un servidor X es comuniqui amb un generador de fonts (font renderer) que pot estar en una màquina remota.
Normalment els servidors de fonts accepten peticions de xarxa TCP/IP al port 7100.
És important però tenir en compte que l'ús de fonts al costat del servidor és considera actualment obsolet i es recomana l'ús de fonts al costat del client. Aquest tipus de fonts es generen al client i no pas al servidor amb el suport de llibreries com Xft2 o Cairo i l'extensió XRender.
A més, per als pocs casos en els que es necessita tenir fonts del costat del servidor, els servidors X ja porten integrat el seu propi generador de fonts de forma que no es necessita cap extern. Les fonts es poden configurar directament als fitxer de configuració de les X (/etc/X11/xorg.conf).
Si consulteu la descripció del paquet xfs:
$ sudo apt-cache show xfs Package: xfs Priority: optional ... Description: X font server xfs is a daemon that listens on a network port and serves X fonts to X servers (and thus to X clients). All X servers have the ability to serve locally installed fonts for themselves, but xfs makes it possible to offload that job from the X server, and/or have a central repository of fonts on a networked machine running xfs so that all the machines running X servers on a network do not require their own set of fonts. xfs may also be invoked by users to, for instance, make available X fonts in user accounts that are not available to the X server or to an already running system xfs.
El servidor de fonts xfs és un dimoni que permet oferir fonts X a servidors o clients remots mitjançant una connexió TCP. La majoria de servidors X poden proporcionar-se a si mateixos les fonts X i per aquesta raó en moltes distribucions no trobareu aquest paquet instal·lat per defecte.
L'avantatge d'un servidor de fonts X és que permet descarregar de la feina de proporcionar les fonts a un servidor X i també permet centralitzar la gestió de les fonts a totes les màquines d'una xarxa.
Per instal·lar un servidor de fonts:
$ sudo apt-get install xfs
Podeu comprovar que està en execució amb:
$ ps aux | grep xfs 123 15232 0.0 0.0 3992 1908 ? Ss 07:39 0:00 /usr/bin/xfs -daemon -user debian-xfs -droppriv
Per defecte el servidor no accepta peticions remotes, veureu que el port està tancat:
$ nmap -p 7100 localhost Starting Nmap 5.00 ( http://nmap.org ) at 2010-05-10 07:41 CEST Warning: Hostname localhost resolves to 2 IPs. Using 127.0.0.1. Interesting ports on localhost (127.0.0.1): PORT STATE SERVICE 7100/tcp closed font-service
Cal modificar el fitxer de configuració:
$ sudo joe /etc/X11/fs/config ...
I comentar (#) la línia:
no-listen = tcp
Un cop comentada la línia cal tornar a iniciar el servidor X:
$ sudo /etc/init.d/xfs restart Stopping X font server: xfs. Setting up X font server socket directory /tmp/.font-unix...done. Starting X font server: xfs.
I ara ja està el servidor preparat:
$ nmap -p 7100 localhost Starting Nmap 5.00 ( http://nmap.org ) at 2010-05-10 07:45 CEST Warning: Hostname localhost resolves to 2 IPs. Using 127.0.0.1. Interesting ports on localhost (127.0.0.1): PORT STATE SERVICE 7100/tcp open font-service
Consulteu:
LPI_106.1_Instal·lació_i_configuració_de_X11#Configuraci.C3.B3_del_servidor_de_fonts
Per veure com cal configurar un servidor X per tal d'utilitzar un servidor de fonts ja sigui remot o local.
Recursos:
La extensió X RandR s'utilitza per configurar els ports de pantalla (display) estan disponibles ( cal tenir en compte que un ordinador pot tenir diferents sortides, LCD, Monitors VGA, DVI, TVOUT etc...) i per configurar els modes de pantalla (display modes) com la orientació, la resol·lució, etc.
L'ordre xrandr sense més opcions:
$ xrandr Screen 0: minimum 320 x 200, current 1440 x 900, maximum 4096 x 4096 VGA1 connected 1440x900+0+0 (normal left inverted right x axis y axis) 410mm x 256mm 1440x900 59.9*+ 1280x1024 75.0 1152x864 75.0 1024x768 75.1 60.0 832x624 74.6 800x600 75.0 60.3 640x480 75.0 60.0 720x400 70.1
Us mostra les sortides disponibles (display modes) al vostra ordinador i les resol·lucions disponibles en cada dispositiu.
Segons el manual:
$ man xrandr
És una ordre que permet treballar amb l'extensió RandR. Per a obtenir més ajuda podeu executar:
$ xrandr --help$ xrandr --help usage: xrandr [options] where options are: -display <display> or -d <display> -help -o <normal,inverted,left,right,0,1,2,3> or --orientation <normal,inverted,left,right,0,1,2,3> -q or --query -s <size>/<width>x<height> or --size <size>/<width>x<height> -r <rate> or --rate <rate> or --refresh <rate> -v or --version -x (reflect in x) -y (reflect in y) --screen <screen> --verbose --dryrun --nograb --prop or --properties --fb <width>x<height> --fbmm <width>x<height> --dpi <dpi>/<output> --output <output> --auto --mode <mode> --preferred --pos <x>x<y> --rate <rate> or --refresh <rate> --reflect normal,x,y,xy --rotate normal,inverted,left,right --left-of <output> --right-of <output> --above <output> --below <output> --same-as <output> --set <property> <value> --scale <x>x<y> --transform <a>,<b>,<c>,<d>,<e>,<f>,<g>,<h>,<i> --off --crtc <crtc> --panning <w>x<h>[+<x>+<y>[/<track:w>x<h>+<x>+<y>[/<border:l>/<t>/<r>/<b>]]] --gamma <r>:<g>:<b> --primary --noprimary --newmode <name> <clock MHz> <hdisp> <hsync-start> <hsync-end> <htotal> <vdisp> <vsync-start> <vsync-end> <vtotal> [+HSync] [-HSync] [+VSync] [-VSync] --rmmode <name> --addmode <output> <name> --delmode <output> <name>
Depenent de la targeta gràfica consulteu:
Intel:
$ man intel
ATI:
$ man radeon
NOTA: Un dels "avantatges" de xrandr és que śe ideal per fer pràctiques proves ja que els canvis mai són permanents, es pot recuperar els sistema reiniciant el sistema o l'entorn X
Si instal·leu les Guest Additions de Virtual Box a una màquina virtual podreu canviar les resol·lucions de pantalla molt fàcilment amb xrandr:
$ xrandr Screen 0: minimum 64 x 64, current 1440 x 778, maximum 32000 x 32000 VBOX1 connected 1440x778+0+0 0mm x 0mm 1440x778 60.0*+ 800x600 60.3 640x480 59.9
Exemples de canvi de resol·lució:
$ xrandr --output LVDS --mode 800x600 $ xrandr --output VBOX1 --mode 1440x778
Si feu una accés remot amb un servidor remot amb SSH i X11Forwarding (l'exemple és una connexió a un màquina virtual amb VirtualBox):
$ ssh -X [email protected]
Un cop dins si executeu:
$ xrandr Screen 0: minimum 320 x 200, current 1440 x 900, maximum 4096 x 4096 VGA1 connected 1440x900+0+0 (normal left inverted right x axis y axis) 410mm x 256mm 1440x900 59.9*+ 1280x1024 75.0 1152x864 75.0 1024x768 75.1 60.0 832x624 74.6 800x600 75.0 60.3 640x480 75.0 60.0 720x400 70.1
Que són les dades de les resol·lucions disponibles a la màquina clietn SSH i no pas a la remota.
IMPORTANT: Aquest funcionament és correcte. Recordeu que l'arquitectura X11 és client-servidor.
Fixeu-vos que en realitat a la màquina virtual:
$ xrandr Screen 0: minimum 64 x 64, current 1440 x 778, maximum 32000 x 32000 VBOX1 connected 1440x778+0+0 0mm x 0mm 1440x778 60.0*+ 800x600 60.3 640x480 59.9
De fet si canvieu la resol·lució des del client SSH no canviareu la resol·lució del servidor SSH si no del client!
$ xrandr -v Server reports RandR version 1.3
NOTA: Executat a una Ubuntu 9.10
Per exemple per apagar el monitor:
$ xrandr --output VGA --off
es pot tornar a activar i decidir on és vol col·locar:
$ xrandr --output VGA --auto --right-of LVDS
Mostra més informació:
$ xrandr --verbose Screen 0: minimum 64 x 64, current 1440 x 778, maximum 32000 x 32000 VBOX1 connected 1440x778+0+0 (0x10b) normal (normal) 0mm x 0mm Identifier: 0x39 Timestamp: 3523623 Subpixel: unknown Clones: CRTC: 0 CRTCs: 0 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: 1440x778 (0x10b) 68.0MHz *current +preferred h: width 1440 start 1442 end 1444 total 1446 skew 0 clock 47.0KHz v: height 778 start 780 end 782 total 784 clock 60.0Hz 800x600 (0x3b) 40.0MHz +HSync +VSync h: width 800 start 840 end 968 total 1056 skew 0 clock 37.9KHz v: height 600 start 601 end 605 total 628 clock 60.3Hz 640x480 (0x3c) 25.2MHz -HSync -VSync h: width 640 start 656 end 752 total 800 skew 0 clock 31.5KHz v: height 480 start 490 end 492 total 525 clock 59.9Hz 1024x768_60.00 (0x11b) 63.5MHz h: width 1024 start 1072 end 1176 total 1328 skew 0 clock 47.8KHz v: height 768 start 771 end 775 total 798 clock 59.9Hz
Formats de pantalla panoràmica (Widescreen):
WSXGA WSXGA+ WUXGA WXGA WXGA
Suporten formats 16:10 i 10:9 (poden ser problemàtics)
Formats 16:10:
Un exemple de secció:
Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 Modes "1680x1050" EndSubSection EndSection
Normalment Xorg utilitza la informació I2C/DDC per agafar la configuració d'aquest tipus de pantalles però en alguns casos pot no anar (per exemple un KVM o multiplicador VGA).
Al fitxer /var/log/Xorg.0.log es poden obtenir el modelines:
(II) MGA(0): Supported additional Video Mode: (II) MGA(0): clock: 146.2 MHz Image Size: 433 x 271 mm (II) MGA(0): h_active: 1680 h_sync: 1784 h_sync_end 1960 h_blank_end 2240 h_border: 0 (II) MGA(0): v_active: 1050 v_sync: 1053 v_sync_end 1059 v_blanking: 1089 v_border: 0 (II) MGA(0): Ranges: V min: 48 V max: 85 Hz, H min: 30 H max: 94 kHz, PixClock max 170 MHz
Aquesta informació són les dades EDID. Per crear un ModeLine només cal posar els nombres en l'ordre correcte:
ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>
Per exemple:
Section "Monitor" Identifier "Monitor1" VendorName "Bigname" ModelName "BestModel" ModeLine "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089 Option "DPMS" EndSection
Els clients utilitzen llibreries gràfiques per tal d'utilitzar el servidor X. La llibreria estàndar bàsica és Xlib però actualment és més habitual trobar aplicacions fetes amb les llibreries:
TODO:
Xlib and other client libraries
Most client programs communicate with the server via the Xlib client library. In particular, most clients use libraries such as Xaw, Motif, GTK+, or Qt which in turn use Xlib for interacting with the server. The use of Xlib has the following effects:
1. Xlib makes the client synchronous with respect to replies and events: 1. the Xlib functions that send requests block until the appropriate replies, if any is expected, are received; in other words, an X Window client not using Xlib can send a request to the server and then do other operations while waiting for the reply, but a client using Xlib can only call an Xlib function that sends the request and wait for the reply, thus blocking the client while waiting for the reply (unless the client starts a new thread before calling the function); 2. while the server sends events asynchronously, Xlib stores events received by the client in a queue; the client program can only access them by explicitly calling functions of the X11 library; in other words, the client is forced to block or busy-wait if expecting an event. 2. Xlib does not send requests to the server immediately, but stores them in a queue, called the output buffer; the requests in the output buffer are actually sent when: 1. the program explicitly requests so by calling a library function such as XFlush; 2. the program calls a function that gives as a result something that involve a reply from the server, such as XGetWindowAttributes; 3. the program asks for an event in the event queue (for example, by calling XNextEvent) and the call blocks (for example, XNextEvent blocks if the queue is empty.)
Higher-level libraries such as Xt (which is in turn used by Xaw and Motif) allow the client program to specify the callback functions associated with some events; the library takes care of polling the event queue and calling the appropriate function when required; some events such as those indicating the need of redrawing a window are handled internally by Xt.
Lower-level libraries, such as XCB, provide asynchronous access to the protocol, allowing better latency hiding.
Segons el manual:
$ man gtf
Calcula els modes de línia VESA ( VESA GTF mode lines ). Vegeu també cvt. Per exemple per calcular el modeline per a una resol·lució 800x600 i 60Hz:
$ gtf 800 600 60 # 800x600 @ 60.00 Hz (GTF) hsync: 37.32 kHz; pclk: 38.22 MHz Modeline "800x600_60.00" 38.22 800 832 912 1024 600 601 604 622 -HSync +Vsync
Consulteu:
Afegir_nous_modes_de_pantalla
Segons el manual:
$ man cvt
Calcula els modes de línia VESA ( VESA GTF mode lines ). Vegeu també gft.
Per exemple per calcular el modeline per a una resol·lució 800x600 i 60Hz:
$ cvt 800 600 # 800x600 59.86 Hz (CVT 0.48M3) hsync: 37.35 kHz; pclk: 38.25 MHz Modeline "800x600_60.00" 38.25 800 832 912 1024 600 603 607 624 -hsync +vsync
Si no s'indica la freqüència de refresc s'utilitzen 60Hz:
$ cvt 800 600 60 # 800x600 59.86 Hz (CVT 0.48M3) hsync: 37.35 kHz; pclk: 38.25 MHz Modeline "800x600_60.00" 38.25 800 832 912 1024 600 603 607 624 -hsync +vsync
Consulteu:
Afegir_nous_modes_de_pantalla
Segons el manual:
$ man X X(7) X(7) NAME X - a portable, network-transparent window system
Configuració:
$ sudo X -configure [sudo] password for sergi: Fatal server error: Server is already active for display 0 If this server is no longer running, remove /tmp/.X0-lock and start again. Please consult the The X.Org Foundation support at http://wiki.x.org for help. ddxSigGiveUp: Closing log
Segurament ja teniu un servidor X en execució:
$ ps aux | grep X root 1394 3.3 0.9 45308 33272 tty7 Rs+ 07:40 14:20 /usr/bin/X :0 -br -verbose -auth /var/run/gdm/auth-for-gdm-DOGJsZ/database -nolisten tcp vt7 sergi 7783 0.0 0.0 3052 812 pts/3 R+ 14:49 0:00 grep X
Segons el manual:
$ man xwinfo xwininfo - window information utility for X
Es tracta d'una utilitat de les X que dona informació sobre les finestres.
$ xwininfo xwininfo: Please select the window about which you would like information by clicking the mouse in that window.
Ara feu clic sobre la finestra de la qual voleu informació i us apareixerà quelcom similar a:
xwininfo: Window id: 0x1a005e6 (has no name) Absolute upper-left X: 0 Absolute upper-left Y: 25 Relative upper-left X: 0 Relative upper-left Y: 25 Width: 1440 Height: 850 Depth: 0 Visual Class: TrueColor Border width: 0 Class: InputOnly Colormap: 0x0 (not installed) Bit Gravity State: ForgetGravity Window Gravity State: NorthWestGravity Backing Store State: NotUseful Save Under State: no Map State: IsViewable Override Redirect State: yes Corners: +0+25 -0+25 -0-25 +0-25 -geometry 1440x850+0+25
Amb:
$ xwininfo -all
Podeu consultar tota la informació relativa a una finestra.
Segons el manual:
$ man xdpyinfo xdpyinfo - display information utility for X ...
Mostra informació relativa al servidor X. Per exemple:
$ xdpyinfo | more name of display: :0.0 version number: 11.0 vendor string: The X.Org Foundation vendor release number: 10604000 X.Org version: 1.6.4 maximum request size: 16777212 bytes motion buffer size: 256 bitmap unit, bit order, padding: 32, LSBFirst, 32 image byte order: LSBFirst number of supported pixmap formats: 7 supported pixmap formats: depth 1, bits_per_pixel 1, scanline_pad 32 depth 4, bits_per_pixel 8, scanline_pad 32 depth 8, bits_per_pixel 8, scanline_pad 32 depth 15, bits_per_pixel 16, scanline_pad 32 depth 16, bits_per_pixel 16, scanline_pad 32 depth 24, bits_per_pixel 32, scanline_pad 32 depth 32, bits_per_pixel 32, scanline_pad 32 keycode range: minimum 8, maximum 255 focus: window 0x5000005, revert to Parent number of extensions: 27 BIG-REQUESTS Composite DAMAGE DOUBLE-BUFFER DPMS DRI2 GLX Generic Event Extension MIT-SCREEN-SAVER MIT-SHM RANDR RECORD RENDER SECURITY ...
Xorg(1) Xorg(1) NAME Xorg - X11R7 X server SYNOPSIS Xorg [:display] [option ...] DESCRIPTION Xorg is a full featured X server that was originally designed for UNIX and UNIX-like operating systems running on Intel x86 hardware. It now runs on a wider range of hardware and OS platforms. This work was derived by the X.Org Foundation from the XFree86 Project's XFree86 4.4rc2 release. The XFree86 release was originally derived from X386 1.2 by Thomas Roell which was contributed to X11R5 by Snitily Graphics Consulting Service.
$ sudo Xorg -configure Fatal server error: Server is already active for display 0 If this server is no longer running, remove /tmp/.X0-lock and start again. Please consult the The X.Org Foundation support at http://wiki.x.org for help. ddxSigGiveUp: Closing log
Segons el manual:
$ man xrdb ... xrdb - X server resource database utility
GDM l'executa de la següent forma al fitxer /etc/gdm/Init/Defaults:
sysresources=/etc/X11/Xresources # merge in defaults if [ -f "$sysresources" ]; then xrdb -merge "$sysresources" fi
Es a dir executa la configuració es troba a:
$ cat /etc/X11/Xresources/x11-common ! $Id$ ! load color-specific resources for clients that have them #ifdef COLOR *customization: -color #endif ! make Xaw (Athena widget set) clients understand the delete key ! this causes problems with some non-Xaw apps, use with care ! *Text.translations: #override ~Shift ~Meta <Key>Delete: delete-next-character()
NOTA: Cal tenir en compte que el valor 0 pot variar, depenent de si tenim una o més targetes de xarxa.
El fitxer de log /var/log/Xorg.0.log mostra els valors EDID:
$ tail -f /var/log/Xorg.0.log (II) intel(0): Modeline "1280x1024"x75.0 135.00 1280 1296 1440 1688 1024 1025 1028 1066 +hsync +vsync (80.0 kHz) (II) intel(0): Modeline "1152x864"x75.0 108.00 1152 1216 1344 1600 864 865 868 900 +hsync +vsync (67.5 kHz) (II) intel(0): Modeline "1024x768"x75.1 78.80 1024 1040 1136 1312 768 769 772 800 +hsync +vsync (60.1 kHz) (II) intel(0): Modeline "1024x768"x60.0 65.00 1024 1048 1184 1344 768 771 777 806 -hsync -vsync (48.4 kHz) (II) intel(0): Modeline "832x624"x74.6 57.28 832 864 928 1152 624 625 628 667 -hsync -vsync (49.7 kHz) (II) intel(0): Modeline "800x600"x75.0 49.50 800 816 896 1056 600 601 604 625 +hsync +vsync (46.9 kHz) (II) intel(0): Modeline "800x600"x60.3 40.00 800 840 968 1056 600 601 605 628 +hsync +vsync (37.9 kHz) (II) intel(0): Modeline "640x480"x75.0 31.50 640 656 720 840 480 481 484 500 -hsync -vsync (37.5 kHz) (II) intel(0): Modeline "640x480"x60.0 25.20 640 656 752 800 480 490 492 525 -hsync -vsync (31.5 kHz) (II) intel(0): Modeline "720x400"x70.1 28.32 720 738 846 900 400 412 414 449 -hsync +vsync (31.5 kHz)
Indica com s'ha d'executar el servidor X
$ cat /etc/X11/xinit/xserverrc #!/bin/sh # $Id: xserverrc 189 2005-06-11 00:04:27Z branden $ exec /usr/bin/X11/X -nolisten tcp
Observeu que per defecte no s'accepten peticions de xarxa. Consulteu també xhost, DISPLAY i /etc/gdm/gdm.schemas.
Consulteu:
LPI_106.1_Instal·lació_i_configuració_de_X11#Permetre_les_connexions_TPC_al_servidor_X
Conté la configuració de GDM. És un fitxer XML.
Observeu que per defecte no s'accepten peticions de xarxa. Consulteu també xhost, DISPLAY i /etc/gdm/gdm.schemas.
Consulteu:
LPI_106.1_Instal·lació_i_configuració_de_X11#Permetre_les_connexions_TPC_al_servidor_X
Per canviar la sortida LVDS a la resol·lució 1024x768:
$ sudo xrandr --output LVDS --mode 1024x768
Per indicar també el refresc:
$ sudo xrandr --output LVDS --mode 1024x768 --rate 75
Recursos:
TODO
Amb l'ordre xrandr podeu afegir un nou mode amb:
$ xrandr --addmode S-video 800x600
L'ordre anterior afegeix el mode 800x600 a una sortida S-video.
Si us dona l'error:
xrandr: cannot find mode "800x600"
És que heu de crear el nou mode amb quelcom similar
$ xrandr --newmode DADES_DEL_NOU_MODE
Per saber les dades que heu de posar podeu utilitzar l'ordre cvt o l'ordre gft:
$ cvt 800 600 # 800x600 59.86 Hz (CVT 0.48M3) hsync: 37.35 kHz; pclk: 38.25 MHz Modeline "800x600_60.00" 38.25 800 832 912 1024 600 603 607 624 -hsync +vsync
Hauríeu de posar doncs:
$ xrandr --newmode "800x600_60.00" 38.25 800 832 912 1024 600 603 607 624 -hsync +vsync
Per aplicar el nou mode:
$ sudo xrandr --output VGA1 --mode "800x600_60.00"
En principi no hauria de caldré indicar modes a mà, ja que tots els dispositius de pantalla haurien d'informar dels modes de pantalla a través del bloc de dades EDID.
NOTA: Per exemple un cas en que les dades EDID no s'envien correctament dels dispositius de pantalla a l'ordinador són els Multiplier VGA
Un exemple més complet:
$ cvt 1920 1200 60 # 1920x1200 59.88 Hz (CVT 2.30MA) hsync: 74.56 kHz; pclk: 193.25 MHz Modeline "1920x1200_60.00" 193.25 1920 2056 2256 2592 1200 1203 1209 1245 -hsync +vsync $ cvt 1680 1050 60 # 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz Modeline "1680x1050_60.00" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync $ xrandr --newmode "1920x1200_60.00" 193.25 1920 2056 2256 2592 1200 1203 1209 1245 -hsync +vsync $ xrandr --newmode "1680x1050_60.00" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync $ xrandr --addmode DVI-1 "1920x1200_60.00" $ xrandr --addmode DVI-0 "1680x1050_60.00"
Recursos:
NOTA: Aquesta configuració només farà els canvis permanents per a l'usuari que es configuri.
El fitxer de configuració ~/.xprofile es executat al iniciar Xorg i existeix i és executable. Es poden posar ordres xrandr en aquest fitxer per tal d'establir una resol·lució per defecte, com per exemple:
xrandr --output VGA-0 --mode 800x600
2 inconvenients:
Tant KDE (KDM) com Gnome (GDM) tenen guions (scripts) d'inici que s'executen quan s'inicien les X.
A GDM els trobareu a:
/etc/gdm/
I a KDM a:
/etc/kde4/kdm/Xsetup
Cal tenir en compte que a GDM es important posar les configuracions abans de la línia:
initctl -q emit login-session-start DISPLAY_MANAGER=gdm
del fitxer:
/etc/gdm/Init/Default
NOTA: Els canvis s'apliquen a tots els usuaris
Els modes es defineixen amb:
Section "Monitor" Identifier "External DVI" Modeline "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync Option "PreferredMode" "1280x1024_60.00" EndSection Section "Device" Identifier "ATI Technologies, Inc. M22 [Radeon Mobility M300]" Driver "ati" Option "Monitor-DVI-0" "External DVI" EndSection Section "Screen" Identifier "Primary Screen" Device "ATI Technologies, Inc. M22 [Radeon Mobility M300]" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1280x1024" "1024x768" "640x480" EndSubSection EndSection Section "ServerLayout" Identifier "Default Layout" Screen "Primary Screen" EndSection
Les configuracions es guarden a nivell d'usuari:
$ locate monitors.xml /home/sergi/.config/monitors.xml $ cat /home/sergi/.config/monitors.xml <monitors version="1"> <configuration> <clone>yes</clone> <output name="DFP2"> </output> <output name="CRT1"> <vendor>FUS</vendor> <product>0x0608</product> <serial>0x01010101</serial> <width>1152</width> <height>864</height> <rate>60</rate> <x>128</x> <y>160</y> <rotation>normal</rotation> <reflect_x>no</reflect_x> <reflect_y>no</reflect_y> <primary>no</primary> </output> <output name="CRT2"> <vendor>???</vendor> <product>0x0000</product> <serial>0x00000000</serial> <width>1280</width> <height>1024</height> <rate>60</rate> <x>0</x> <y>0</y> <rotation>normal</rotation> <reflect_x>no</reflect_x> <reflect_y>no</reflect_y> <primary>no</primary> </output> <output name="TV"> </output> <output name="COMPONENT_VIDEO"> </output> </configuration> <configuration> <clone>yes</clone> <output name="DFP2"> </output> <output name="CRT1"> <vendor>???</vendor> <product>0x0000</product> <serial>0x00000000</serial> <width>1440</width> <height>900</height> <rate>60</rate> <x>160</x> <y>300</y> <rotation>normal</rotation> <reflect_x>no</reflect_x> <reflect_y>no</reflect_y> <primary>no</primary> </output> <output name="CRT2"> <vendor>???</vendor> <product>0x0000</product> <serial>0x00000000</serial> <width>1600</width> <height>1200</height> <rate>60</rate> <x>0</x> <y>0</y> <rotation>normal</rotation> <reflect_x>no</reflect_x> <reflect_y>no</reflect_y> <primary>no</primary> </output> <output name="TV"> </output> <output name="COMPONENT_VIDEO"> </output> </configuration> <configuration> <clone>no</clone> <output name="DFP2"> </output> <output name="CRT1"> <vendor>???</vendor> <product>0x0000</product> <serial>0x00000000</serial> <width>1440</width> <height>900</height> <rate>60</rate> <x>0</x> <y>0</y> <rotation>normal</rotation> <reflect_x>no</reflect_x> <reflect_y>no</reflect_y> <primary>no</primary> </output> <output name="CRT2"> </output> <output name="TV"> </output> <output name="COMPONENT_VIDEO"> </output> </configuration> </monitors>
Des de Ubuntu 9.10 s'ha d'indicar a
Sistema > Preferències > teclats > Disposicions > Opcions > Matar el servidor X
o:
$ setxkbmap -option terminate:ctrl_alt_bksp
A una instal·lació fresca de d'Ubuntu Karmic:
$ dpkg -l | grep xserver ii x11-xserver-utils 7.4+2ubuntu3 X server utilities ii xserver-common 2:1.6.4-2ubuntu4.1 common files used by various X servers ii xserver-xorg 1:7.4+3ubuntu10 the X.Org X server ii xserver-xorg-core 2:1.6.4-2ubuntu4.1 Xorg X server - core server ii xserver-xorg-input-all 1:7.4+3ubuntu10 the X.Org X server -- input driver metapacka ii xserver-xorg-input-evdev 1:2.2.5-1ubuntu6 X.Org X server -- evdev input driver ii xserver-xorg-input-mouse 1:1.4.0-2 X.Org X server -- mouse input driver ii xserver-xorg-input-synaptics 1.1.2-1ubuntu7 Synaptics TouchPad driver for X.Org server ii xserver-xorg-input-vmmouse 1:12.6.4-1ubuntu3 X.Org X server -- VMMouse input driver to us ii xserver-xorg-input-wacom 1:0.8.4.1-0ubuntu4 X.Org X server -- Wacom input driver ii xserver-xorg-video-all 1:7.4+3ubuntu10 the X.Org X server -- output driver metapack ii xserver-xorg-video-apm 1:1.2.1-2 X.Org X server -- APM display driver ii xserver-xorg-video-ark 1:0.7.1-2 X.Org X server -- ark display driver ii xserver-xorg-video-ati 1:6.12.99+git20090929.7968e1fb-0ubuntu1 X.Org X server -- ATI display driver wrapper ii xserver-xorg-video-chips 1:1.2.1-3 X.Org X server -- Chips display driver ii xserver-xorg-video-cirrus 1:1.3.1-1ubuntu2 X.Org X server -- Cirrus display driver ii xserver-xorg-video-fbdev 1:0.4.0-4 X.Org X server -- fbdev display driver ii xserver-xorg-video-geode 2.11.6-1 X.Org server -- Geode GX2/LX display driver ii xserver-xorg-video-i128 1:1.3.2-1 X.Org X server -- i128 display driver ii xserver-xorg-video-i740 1:1.3.0-1 X.Org X server -- i740 display driver ii xserver-xorg-video-intel 2:2.9.0-1ubuntu2.1 X.Org X server -- Intel i8xx, i9xx display d ii xserver-xorg-video-mach64 6.8.2-1 X.Org X server -- ATI Mach64 display driver ii xserver-xorg-video-mga 1:1.4.11.dfsg-1 X.Org X server -- MGA display driver ii xserver-xorg-video-neomagic 1:1.2.3-1 X.Org X server -- Neomagic display driver ii xserver-xorg-video-nv 1:2.1.14-2ubuntu3 X.Org X server -- NV display driver ii xserver-xorg-video-openchrome 1:0.2.903+svn758-0ubuntu1 X.Org X server -- VIA display driver ii xserver-xorg-video-r128 6.8.1-1 X.Org X server -- ATI r128 display driver ii xserver-xorg-video-radeon 1:6.12.99+git20090929.7968e1fb-0ubuntu1 X.Org X server -- ATI Radeon display driver ii xserver-xorg-video-rendition 1:4.2.1-1 X.Org X server -- Rendition display driver ii xserver-xorg-video-s3 1:0.6.2-1 X.Org X server -- legacy S3 display driver ii xserver-xorg-video-s3virge 1:1.10.2-2 X.Org X server -- S3 ViRGE display driver ii xserver-xorg-video-savage 1:2.3.0-1ubuntu1 X.Org X server -- Savage display driver ii xserver-xorg-video-siliconmotion 1:1.7.2-1 X.Org X server -- SiliconMotion display driv ii xserver-xorg-video-sis 1:0.10.1-2 X.Org X server -- SiS display driver ii xserver-xorg-video-sisusb 1:0.9.1-1 X.Org X server -- SiS USB display driver ii xserver-xorg-video-tdfx 1:1.4.1-1 X.Org X server -- tdfx display driver ii xserver-xorg-video-trident 1:1.3.1-1 X.Org X server -- Trident display driver ii xserver-xorg-video-tseng 1:1.2.1-1 X.Org X server -- Tseng display driver ii xserver-xorg-video-v4l 1:0.2.0-3ubuntu1 X.Org X server -- Video 4 Linux display driv ii xserver-xorg-video-vesa 1:2.2.1-1 X.Org X server -- VESA display driver ii xserver-xorg-video-vmware 1:10.16.7-1 X.Org X server -- VMware display driver ii xserver-xorg-video-voodoo 1:1.2.2-1 X.Org X server -- Voodoo display driver
Consulteu Gestors de finestres 3D. Beryl
Consulteu Gnome-shell
L'eina gràfica de configuració de pantalla a gnome és:
$ gnome-display-properties
Les configuracions d'aquesta aplicació es guarden per cada usuari a:
~/.config/monitors.xml
Es pot esborrar des de una terminal aquest fitxer si hem indicat algun valor de resol·lució que no ens permet entrar l'entorn gràfic.
$ rm ~/.config/monitors.xml
Aquest error sol succeir quan hem accedit a una terminal remota sense l'opció X11Forwarding o quan hem entrat amb un altre usuari a una terminal. Per poder iniciar aplicacions gràfiques des de la línia d'ordres és necessari que estigui establerta la variable d'entorn DISPLAY. Per exemple en una sessió remota SSH amb X11Forwarding:
$ echo $DISPLAY localhost:10.0
En una sessió gràfica normal:
$ echo $DISPLAY :0.0
Hi ha una eina anomenada PowerStrip.
Consulteu:
http://www.x.org/wiki/FAQVideoModes#ObtainingmodelinesfromWindowsprogramPowerStrip
$ sudo gedit /etc/gdm/gdm.schemas
Busqueu:
<schema> <key>security/DisallowTCP</key> <signature>b</signature> <default>true</default> </schema>
I canvieu per:
<schema> <key>security/DisallowTCP</key> <signature>b</signature> <default>false</default> </schema>
Abans hi havia una variable al fitxer:
/etc/gdm/gdm.conf
[security] DisallowTCP=false
Cal tornar a iniciar GDM:
$ sudo /etc/init.d/gdm restart
Recursos:
L'han "supersimplificat" perdent moltes de les opcions abans existents (per exemple es podia activar accés per xarxa i XDMCP):