File: capitulo.IV.tex

package info (click to toggle)
lucas 20002403-7
  • links: PTS
  • area: main
  • in suites: woody
  • size: 2,588 kB
  • ctags: 50
  • sloc: makefile: 93; sh: 84
file content (1690 lines) | stat: -rw-r--r-- 69,662 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690

\chapter{X-WINDOW}

\section{Introduccin.}
                
X Window es un entorno grfico desarrollado para el sistema operativo
UNIX por el MIT1. Proporciona al sistema un interfaz completamente
grfico en base a ventanas en las que se ejecutarn las distintas
aplicaciones que podemos ejecutar, mens desplegables,... todo ello
con el uso del ratn en todo momento.

Si se est familiarizado con cualquier otro entorno similar, no ser
muy difcil el trabajar en el nuevo que se ofrece. De esta forma se
cubre una de las deficiencias achacadas al UNIX en general en un
momento en que cada vez es ms importante el aspecto, y la sencillez
de manejo para el usuario final.

Para ser ms concretos en la definicin hay que decir que X est
desarrollado bajo el modelo cliente-servidor. La parte que realiza la
tarea de servidor gestiona todo el acceso al hardware. El software
cliente se comunica con el servidor mediante el envo de rdenes
(mensajes) destinadas a la gestin del entorno y muestra de datos
mediante ste. Ejemplo de clientes son xterm (simula un terminal en
una ventana), xman, xview, Mosaic (existe una versin para LINUX),
etc.. cada uno de lo que coloquialmente denominamos "programas para X
"  "programas para ejecutar bajo X" (aunque con xterm tambin podemos
ejecutar cualquier otro software que no est concebido para X). El
servidor se encarga de algunas tareas como las descritas a
continuacin:

\begin{itemize}

\item Manipulacin a bajo nivel de ventanas (operaciones de creacin y
destruccin de las mismas), sin confundirlo con el manejo que
posteriormente podemos hacer mediante el gestor escogido.  

\item Servir como gestor de recursos del sistema para las aplicaciones
a ejecutar.  

\item Procesar rdenes para el dibujo de grficos.

\item Notificar a las aplicaciones los eventos ocurridos (pulsado de
una tecla, movimiento del ratn, errores...) 

\item Monitorizar y comunicar a las aplicaciones los errores que se
pueden generar. 

\item Control de la pantalla.

\item Comunicacin entre los diferentes clientes (cortar y pegar...)
\end{itemize}

        
Incluso el gestor de ventanas (hay varios disponibles) es un programa
cliente ms de los que se pueden ejecutar, es ms, ser necesario
ejecutar uno de ellos obligatoriamente para trabajar en este entorno,
algunas de sus tareas son:

\begin{itemize}

\item Permitir redimensionar las ventanas.

\item Mover las ventanas a cualquier posicin de la pantalla.

\item Convertir una ventana en un icono y viceversa.

\item Decorar ventanas con barras de ttulos y desplazamiento, bordes,
botones, etc. 

\item Control de todas las ventanas abiertas en un determinado
momento. 

\item Lanzamiento de aplicaciones. 
        
\end{itemize}

{\tt X Window} est concebido para entornos de red, clientes y
servidor pueden ser ejecutados en mquinas distintas, el proceso de
comunicacin cliente-servidor (paso de mensajes) es totalmente
transparente para el usuario.

En nuestro caso ejecutaremos el servidor y todos los clientes en la
misma mquina (para LINUX tambin es una red) lo cual no supone
problema alguno.

La versin actual del entorno X Window es la nmero once, en su
revisin nmero 6 y pertenece al denominado "X Consortium", grupo
formado en 1988 por el MIT junto a otras empresas como DEC,
IBM,.. cuyo objetivo es la cooperacin con la industria para la
creacin y evolucin de un estndar grfico basado en el X Window.
                
Existen varias categoras de miembros en esta organizacin,
estructurado en forma de equipos multidisciplinares que participan en
el desarrollo, implementacin, revisin y prueba de cualquier idea que
surja en el mbito del desarrollo del entorno grfico. Cualquier
persona tiene cabida en esta entidad.







XFree86 es la implementacin del X Window que tenemos a nuestra
disposicin para LINUX (y otras implementaciones del UNIX) en su
versin 3.1.22, basada en el servidor X386 desarrollado por el MIT
destinado a plataformas de Intel 386/486 y Pentium adems de la
configuracin hardware comn a este tipo de procesadores. Para conocer
ms detalles del software instalado podemos ejecutar el comando
'xdpyinfo' en una ventana de terminal el cual nos mostrar informacin
detallada sobre la versin y caractersticas del entorno grfico.

XFree86 est distribuido bajo una licencia que permite disponer
libremente tanto de software que lo forma en forma de cdigo fuente
como en formato binario. Est desarrollado, mantenido y distribuido
por grupo XFree86 Project Inc., cuyo fin es el desarrollar el servidor
X Window para cualquier UNIX ejecutable en plataformas PC
(http://www.xfree.org).

En la distribucin que hemos tomado como referencia (Slackware), las
series que empiezan con la letra X (X, XAP, XD,....) son las
relacionadas con este software. Para nuestros fines ser necesario
instalar las series X y XAP, con ello dispondremos del X Window y
algunas aplicaciones que nos pueden ser de utilidad para el entorno.

Hay que avisar de algo muy importante, el software viene sin
configurar, esto es, una vez instalado hay que realizar este proceso a
fin de poder ejecutarlo. Intentar ejecutar este interfaz sin haberlo
configurado previamente puede producir efectos no deseados, incluso en
la documentacin adicional se nos insiste en la posibilidad de daar
nuestro hardware por lo que se recomienda encarecidamente el
documentarse bien antes de dar este paso.
        
En este captulo se intentar explicar lo ms detalladamente posible
todos los pasos necesarios para poder configurar este software, o al
menos, el poder ejecutar XFree86 de una forma que denominar 'mnima'3
(el entorno funciona en slo un modo) para, a partir de este punto,
poder profundizar en el resto de parmetros que rodean a este proceso.
                        
XFree86 no es sencillo de configurar, o ms concretamente, no es tan
sencillo como lo pueden ser otros entornos grficos (algunos incluso
tienen la capacidad de detectar el hardware y autoconfigurarse), pero
esta dificultad es directamente proporcional a su flexibilidad,
XFree86 puede ser ejecutado en un amplsimo conjunto del hardware
disponible en el mercado destinado al uso de grficos perteneciente a
distintos fabricantes y , por tanto, con la ausencia de estndares
bien definidos que faciliten la tarea. Muchos fabricantes anuncian sus
productos como "compatibles con ..." aunque a la hora de la verdad nos
podemos encontrar que esta compatibilidad no es total.


En el proceso que nos ocupa tendremos que enfrentarnos al manejo de
parmetros con los que puede que no estemos familiarizados en
absoluto, tales como ancho de banda, tasas de desplazamiento vertical
y horizontal, pulsos de reloj... que son los que interesa conocer para
nuestro propsito. Se va a tener siempre en cuenta lo que se puede
denominar como 'caso peor', no se dispone de la informacin tcnica
necesaria sobre la tarjeta grfica montada en el ordenador ni del
monitor o esta no se ajusta a la contenida en alguno de los ficheros
con informacin de los que acompaan al Xfree86.
        
Si nuestro hardware se ajusta exactamente a las especificaciones de
alguno de estos ficheros tendremos el 90 % del trabajo hecho, pero no
hay que olvidar que la mayora de los PC de los que hay en nuestro
entorno carecen de los manuales con las especificaciones tcnicas
mnimas del tipo de componentes que lo forman.

Existen en el mercado implementaciones de este tipo de software
dedicado a su explotacin comercial cuya ventaja puede consistir en
una mayor estabilidad, soporte tcnico, facilidad de instalacin y
configuracin, mayor rendimiento, etc... A pesar de poder existir
diferencias todos son compatibles entre s.

\section{ Informacin Disponible}

A la hora de enfrentarnos a la configuracin del XFree86 disponemos de
la siguiente informacin:
\begin{itemize}

\item Ficheros FAQ y HOWTO: 
        \begin{itemize}
        \item /usr/doc/faq/faq/linux-faq.xxx4
        \item /usr/doc/faq/howto/XFree86-HOWTO
        \item Directorio /usr/doc/faq/faq/xfaq
        \end{itemize}

\item Otros ficheros:
        \begin{itemize} 

        \item Contenidos en el directorio /var/X11R6/lib/doc. Nos
        pueden ser de ayuda en el momento de la configuracin con
        informacin para cada uno de los servidores de los que
        disponemos,sobre tarjetas grficas, monitores, ...
        \end{itemize}   
\end{itemize}

Se recomienda leer los siguientes ficheros (como mnimo): README,
README.Config, VideoModes.doc y README.Linux adems de las pginas del
manual (comando man) referentes al XFree86 y al servidor escogido.

\section{Hardware necesario}

XFree86 puede ser ejecutado en la mayora del hardware existente en el
mercado destinado a los grficos. Dependiendo del servidor escogido
podremos ejecutar el entorno X en diferentes tipos de hardware, cada
servidor est concebido para soportar un grupo concreto de tarjetas
grficas, desde las monocromo, pasando por las VGA, SVGA, ... todo
ello con buses del tipo ISA, VESA o PCI. Como ejemplo a continuacin
se detalla parte del hardware que puede manejar el servidor XF86_SVGA,
destinado al manejo de este tipo de tarjetas grficas:

\begin{itemize}

\item  Tseng ET3000, ET4000AX, ET4000/W32

\item  Western Digital/Paradise PVGA1

\item  Western Digital WD90C00, WD90C10, WD90C11,
WD90C24, WD90C30, WD90C31, WD90C33

\item                    Genoa GVGA

\item     Trident TVGA8800CS, TVGA8900B, TVGA8900C,             
                        TVGA9000i, TVGA9100B, TVGA9200CX, TVGA9320,
                        TVGA9400CX, TVGA9420

\item     ATI 18800, 18800-1, 28800-2, 28800-4, 28800-5, 28800-6,                       68800-3, 68800-6, 68800AX, 68800LX, 88800

\item NCR 77C22, 77C22E, 77C22E+

\item  Cirrus Logic CLGD5420, CLGD5422, CLGD5424, CLGD5426, CLGD5428,
CLGD5429, CLGD5430, CLGD5434, CLGD6205, CLGD6215, CLGD6225,
CLGD6235, CLGD6420 

\item            Compaq AVGA

\item             OAK OTI067, OTI077

\item             Avance Logic AL2101

\item                     MX MX68000, MX680010

\item     Video 7/Headland Technologies HT216-32

\end{itemize}


Dos definiciones previas:
\begin{description}

\item[Servidor]: es la parte del software que va a encargarse del
manejo del hardware tanto grfico como el resto de componentes del
ordenador, establecer un interfaz con todas las aplicaciones cliente
que corrern en el sistema y que simplemente han de enviar las rdenes
precisas al servidor para obtener los resultados necesarios. 

\item En la configuracin del XFree86 no hablaremos de las
tarjetas grficas refirindonos a su nombre (marca y modelo) sino al
chipset (juego de chips) que la integran, en la definicin del
hardware que soporta cada servidor nos vamos a encontrar con la
especificacin de los juegos que puede manejar, agrupados por sus
fabricantes. Podemos conocer la tarjeta que tenemos pero nos hace
falta saber la circuitera que integra.

\end{description}

El primer paso que tenemos que dar es escoger un servidor de los que
tenemos disponibles, esto es imprescindible (la utilidad setup nos
obligar a escoger uno) antes de iniciar nuestro cometido.

Tambin hay que hacer una resea en cuanto al resto del hardware
necesario, XFree86 necesita gran cantidad de recursos para
funcionar. En la documentacin de que se dispone se indica que un
procesador Intel 386 (o compatible) con la mxima velocidad posible y
4 Mb. de memoria RAM es la configuracin mnima para poder ejecutar X,
pero se recomienda al mismo tiempo el disponer de un procesador modelo
486 y de 8 Mb. de memoria RAM para poder ejecutar el entorno en unas
condiciones optimas. En general se puede decir que, independientemente
del procesador habremos de disponer de 16 Mb de memoria virtual como
mnimo (8 Mb. de RAM y 8 de rea de intercambio) para que el sistema
funcione bien, a ms memoria principal, mejor. Si no disponemos de
rea de intercambio teniendo 16 Mb. de memoria principal o ms no ser
necesario el configurarla.

\section{Instalacin del Software }

Una vez ms podemos acudir al programa SETUP para realizar este
proceso. Hemos de instalar las series X y XAP como mnimo para poder
utilizar la versin del X Window que vamos a utilizar. Si posee un
conocimiento exacto del software que necesita instalar y donde se
encuentra puede utilizar PKGTOOL, pero conviene recordar que
instalando este software 'a mano' habr que introducir un comando a
fin de dejar el sistema a punto para su configuracin, todo esto se
describe a continuacin.

El primer paso a dar es escoger el servidor que se ajusta a nuestras
necesidades, esto lo podemos hacer consultando los ficheros contenidos
en el directorio /var/X11R6/lib/doc con nombre 'README.xxx' siendo xxx
el nombre de cada uno de los servidores y adems podemos recurrir al
manual de cada uno de ellos5. Los servidores de los que disponemos
son:
\begin{itemize}
\item                   XF86_SVGA:
                        Servidor genrico para tarjetas SVGA. Contiene soporte para
                juegos de chips acelerados6 de los fabricantes Cirrus 542[0,2,4,6,8,9], 543[0,4], Western       Digital 90C3[1,3] y Oak Technologies Inc. OTI087, no acelerado para el resto de chips.

\item                   XF86_Mono:
                        Para tarjetas del tipo Monocromo, incluso las Hrcules.

\item                   XF86_VGA16:
                Para tarjetas VGA con capacidad para 16 colores.

\item                   XF86_S3:
                        Servidor acelerado para tarjetas con chips S3.
                                
\item                   XF86_Mach32:
                        Servidor acelerado para tarjetas con chips ATI Mach32.

\item                   XF86_Mach64:
                        Servidor acelerado para tarjetas con chips ATI Mach64.

\item                   XF86_Mach8:
                        Servidor acelerado para tarjetas con chips ATI Mach8.

     
                
\item           XF86_8514:
                        Servidor acelerado para tarjetas con chips 8514/A.

\item                   XF86_P9000:
                        Servidor acelerado para tarjetas con chips P9000.

\item                   XF86_AGX:
                        Servidor acelerado para tarjetas con chips AGX.

\item                   XF86_W32:
                        Servidor acelerado para tarjetas con chips ET4000/W32.
\end{itemize}

Una vez escogido el servidor que mejor se adapta a nuestras
necesidades daremos paso a la instalacin del software. Si lo hacemos
mediante el programa SETUP el mismo har todas las tareas de
instalacin necesarias por nosotros, de hacerlo mediante PKGTOOL o con
los comandos tar y gzip hemos de asegurarnos que el servidor est
correctamente instalado mediante el comando:

\begin{verbatim}
        # ln -sf /usr/X11R6/bin/XF86_SVGA  /usr/X11R6/bin/X
\end{verbatim}

Esto crear un enlace al fichero XF86_SVGA (puesto como ejemplo)
llamado X, en este caso tendremos que el fichero X seala al servidor
que hemos escogido, si tecleamos:

\begin{verbatim}
        # ls -all X 
\end{verbatim}

obtendremos por pantalla el siguiente resultado:

{\tt lrwxrwxrwx 1 root root 24 Mar 19 18:21 X->/usr/X11R6/bin/XF86_SVGA}

        

Si la instalacin se hace mediante SETUP es recomendable hacerla con
la opcin VERBOSE activada de forma que podemos ver y confirmar todo
el software que se va a instalar, de esta forma nos podemos hacer una
idea de todas las utilidades de que vamos a disponer para utilizar el
entorno.

\section{Configuracin.}

\subsection{Detectando el Hardware.}

En este momento y tras revisar todos los conceptos desarrollados en
los captulos anteriores nos podemos encontrar ante dos situaciones
bien distintas:

\begin{enumerate}

\item Conocemos perfectamente todos los parmetros necesarios, ya que
disponemos de informacin tcnica suficiente tanto del monitor como de
la tarjeta grfica que tenemos instalada o, por otra parte, nuestro
hardware coincide exactamente con la informacin disponible en alguno
de los ficheros de ayuda que acompaan a Xfree86. En este caso el
proceso ser muy sencillo, ya que nicamente tendremos que trasladar
esto parmetros al lugar correcto y, salvo pequeos ajustes, tendremos
funcionando nuestro servidor X y alguna de las aplicaciones con las
que contamos (clientes).

\item No disponemos de informacin alguna referente al ordenador en el
que vamos a instalar XFree86 (cosa bastante frecuente en los
denominados ordenadores "clnicos"). Aqu tendremos que recurrir
igualmente a los ficheros mencionados, pero antes podemos ejecutar un
comando que nos va a servir para obtener informacin muy til sobre
nuestro sistema:
\end{enumerate}

\begin{verbatim}
        # X -probeonly > salida.tmp1 2>&18
\end{verbatim}
                        
De esta forma en el fichero creado (salida.tmp1) tendremos informacin
que nos puede ser de inters, la entrada

\begin{verbatim}
                '2>&1' 
\end{verbatim}
permite que el fichero recoja la salida estndar y los errores.

En el ltimo punto de este apartado se describe mayor informacin
sobre todos los valores que se necesitan conocer y cmo extraerlos a
partir de la informacin tcnica disponible sobre la tarjeta grfica y
el monitor. La configuracin detallada a continuacin se basa en
parmetros que pueden funcionar en nuestra mquina pero no por ello
son los ptimos, se tratan en general de contribuciones de distintos
autores, valores estndar para una familia de perifricos, etc...
                                                        
\begin{figure}[htbH]
\tiny
\begin{verbatim}
XFree86 Version 3.1.2 / X Window System
(protocol Version 11, revision 0, vendor release 6000)
Operating System: Linux 
Configured drivers:
  SVGA: server for 8-bit colour SVGA (Patchlevel 0):
      et4000, et4000w32, et4000w32i, et4000w32p, et3000, pvga1, wd90c00,
      wd90c10, wd90c30, wd90c24, wd90c31, wd90c33, gvga, vgawonder,
      tvga8800cs, tvga8900b, tvga8900c, tvga8900cl, tvga9000, clgd5420,
      clgd5422, clgd5424, clgd5426, clgd5428, clgd5429, clgd5430, clgd5434,
      clgd5436, clgd6205, clgd6215, clgd6225, clgd6235, ncr77c22, ncr77c22e,
      cpq_avga, oti067, oti077, oti087, mx, al2101, ali2228, ali2301,
      ali2302, ali2308, ali2401, cl6410, cl6412, cl6420, cl6440, video7,
      ct65520, ct65530, ct65540, ct65545, ark1000vl, ark1000pv, ark2000pv,
      realtek, generic
(using VT number 7)

XF86Config: /usr/X11R6/lib/X11/XF86Config
(**) stands for supplied, (--) stands for probed/default values
(**) Mouse: type: Microsoft, device: /dev/mouse, baudrate: 1200
(**) SVGA: Graphics device ID: "Generic SVGA"
(**) SVGA: Monitor ID: "Generic Monitor"
(**) FontPath set to "/usr/X11R6/lib/X11/fonts/misc/"
(--) Trident chipset version: 0x13 (TVGA8900C)
(--) SVGA: chipset:  tvga8900c
(--) SVGA: videoram: 1024k
(--) SVGA: clocks:  25.14  28.32  44.84  35.85  57.15  64.84  50.29  39.84
(--) SVGA: Maximum allowed dot-clock: 90.000 MHz
(**) SVGA: Mode "640x480": mode clock =  25.175, clock used =  25.140
(**) SVGA: Virtual resolution set to 800x600
(--) SVGA: SpeedUp code selection modified because virtualX != 1024
\end{verbatim}
\caption{\label{Figura-4-1} Aspecto del fichero salida.tmp1}
\end{figure}

Podemos ver que ya tenemos informacin sobre la tarjeta grfica que
tenemos instalada y una lnea indicada como 'clocks' que puede ser de
utilidad posteriormente.

Existe un programa que tambin ayuda a dar informacin sobre nuestra
tarjeta grfica que se indica como opcional si el proceso anterior no
ha tenido el xito esperado, este es el Superprobe. Tras su invocacin
tendremos una pantalla similar a la siguiente y la informacin que se
indica:

\begin{verbatim}
SuperProbe Version 2.5
        (c) Copyright 1993,1994 by David Wexelblat <dwex@xfree86.org>
(...)
 6-bit First video: Super-VGA
        Chipset: Trident 8900C
        Memory:  1024 Kbytes
        RAMDAC:  Generic 8-bit pseudo-color DAC
                 (with 6-bit wide lookup tables (or mode))
\end{verbatim}
                
Tenemos igualmente las caractersticas de nuestra tarjeta grfica con
la que podemos acceder a los ficheros Devices y ModeDB.txt para buscar
los valores para este parmetro que coincidan.

Una vez hemos hecho este proceso previo vamos a crear el fichero
principal de configuracin para nuestro sistema, XF86Config,
ubicndolo en el directorio /var/X11/lib. Tenemos uno con el nombre
XF86Config.eg que nos va a servir como base para desarrollar nuestro
propio fichero de configuracin, si lo deseamos podemos crear una
copia del mismo a partir de la cual trabajar:

{\tt \# cp -a XF86Config.eg XF86Config}

        
        
                
\subsection{El Fichero XF86Config.}

Est estructurado en siete secciones principales, cada una de las
cuales contiene informacin referente a distintos parmetros que va a
necesitar para funcionar el servidor grfico, estos son:

\begin{description}
\item[Files] Directorios donde va a buscar los ficheros necesarios      
                para poder utilizar distintas fuentes y colores.
                        

\item[ServerFlags] Algunas opciones a utilizar a la hora de
ejecutar el servidor X. 

\item[Keyboard] Configuracin de algunas teclas especiales y la
                forma en que el servidor va a responder ante stas.

\item[Pointer] Para la configuracin del ratn.
                        
\item[Monitor] Datos sobre el monitor.

\item[Device] Aqu es donde especificaremos todos los datos
referentes a la tarjeta grfica. 

\item[Screen] Configuracin del rea de trabajo de la que podemos
                disponer en nuestra pantalla.
\end{description}


Todas las secciones tienen una sintaxis similar:
\begin{verbatim}
                        Section "Nombre de la Seccin"
                                Parmetros
                                        .
                                        .       
                        EndSection
\end{verbatim}

Cada una de las secciones ser descrita con el fin de especificar la
estructura de nuestro sistema, en general no hay que hacer muchos
cambios en este fichero, exceptuando las secciones Monitor y Device.
                                
        


El comando introducido para la creacin del fichero salida.tmp1
extraer ciertos valores del fichero (los marcados con el smbolo
(**)) y los marcados con el smbolo (--) los calcular a partir del
hardware disponible y ciertos algoritmos que el servidor contiene.

Las modificaciones a realizar en el fichero las podemos hacer con
cualquiera de los procesadores de texto que acompaan al LINUX (vim,
jed, jove, emacs...), con el que estemos ms familiarizados.

\subsubsection{Files}

En esta seccin generalmente no se ha de hacer cambio alguno, a no ser
que hayamos instalado determinados tipos de fuentes de carcteres
extra que deseamos que el servidor encuentre. Si durante la
instalacin del software hemos instalado las fuentes denominadas
'75dpi' y '100dpi' incluiremos estas lneas en la seccin (eliminando
el signo '\#' del comienzo de cada lnea).

\subsubsection{Serverflags}

Tenemos tres parmetros que afectarn al comportamiento del servidor
durante su funcionamiento.

\begin{itemize}

\item NoTrapSignals permite al servidor el interrumpirse a la llegada
de cierto tipo de seales y crear un fichero que despus podremos
revisar con un programa depurador (debugger). La opcin por defecto
consiste en una salida 'limpia' del programa. 

\item DontZap Inhabilita el uso de la combinacin de teclas
<Ctrl>+<Alt>+<Del> para terminar la ejecucin del servidor. 

\item DontZoom: Activada har que no podamos cambiar la resolucin
(modos) del XFree86 a que podemos optar durante la ejecucin del
servidor mediante las teclas <Ctrl>+<Alt>+<TeclNum_+> y
<Ctrl>+<Alt>+<TeclNum_-> (signos +/- del teclado numrico). 
\end{itemize}

\subsubsection{Seccin Keyboard}

En el apartado Protocol dejaremos definido el "Standard" ya que no es
muy normal el tener que utilizar el modo "Xqueue" debido al hardware
para el que est concebido.
                
        
\begin{itemize}


                        
\item Autorepeat viene seguido de dos parmetros que van a permitirnos
el afinar el comportamiento del teclado en cuanto a la capacidad de
autorepeticin cuando mantenemos una tecla pulsada durante un tiempo. 

\item ServerNumLock permite al servidor el utilizar la parte numrica
del teclado. 

\item Xleds seguido de la serie de nmeros del uno al tres (1, 1 2  1
2 3) har que el software cliente maneje los indicadores luminosos del
teclado (NumLock, CapsLock y ScrollLock). 

\item LeftAlt, RightAlt, AltGr, ScrollLock y RightAlt seguido de uno
de los parmetros siguientes: Meta, Compose, ModeShift, ModeLock,
ScrollLock, Control nos va a definir el comportamiento de estas teclas
que podamos considerar como 'especiales'. Si no especificamos nada
los valores por defecto sern: 

\begin{verbatim}
                                        LeftAlt Meta.
                                        RightAlt Meta.
                                        RightCtrl Compose.
                                        ScrollLock ModeLock.
\end{verbatim}

Ser necesario modificar el valor de la tecla RightAlt a ModeShift, de
esta forma el servidor reconocer la tecla marcada generalmente como
"Alt Gr".
\end{itemize}
                
\subsubsection{Seccin Pointer}

\begin{itemize}
\item Microsoft es el parmetro que utilizaremos en el apartado
Procotol dado que la mayora de los ratones existentes son compatibles
con este protocolo, si disponemos de un ratn que no responde con este
protocolo podemos probar con uno de los siguientes: BusMouse,
Logitech, MMSeries, Mouseman, MouseSystems, PS/2, MMHitTab, OSMouse.  

El apartado Device contiene el fichero que manejar el ratn y que
estar contenido en el directorio /dev, esta lnea puede contener
'/dev/mouse' como enlace al nombre del manejador del puerto en el que
tengamos conectado el dispositivo. Es conveniente el comprobar si
existe este enlace, si necesitamos crearlo nosotros mismos o, si lo
deseamos, podemos poner el nombre directamente del manejador de la
forma '/dev/ttyS0' (puerto al que lo tengamos conectado).

\item BaudRate <valor> indicar al servidor la velocidad de
comunicacin con el ratn (en baudios). El valor estndar es 1200. 


\item Emulate3Buttons y Emulate3Timeout <valor> permiten al servidor
el emular la existencia de un tercer botn en nuestro ratn en el
supuesto que no lo tuviese o no lo reconoce existiendo ste, esto se
hace pulsando los dos botones simultneamente (en uno con tres botones
no utilizaremos el botn central). 

\item ChordMidle reconoce el mencionado 3er. botn del ratn, aunque
se especifica que es para ratones del tipo Logitech. 

\item SampleRate <valor> Fija el nmero de eventos que el ratn
enviar al servidor por segundo. Vlido solo para algunos ratones
Logitech. 

\item ClerDTR 'limpia' la lnea DTR del puerto serie usado por el
ratn. Vlido slo para ratones que utilizan el protocolo
MouseSystems. 

\item ClearRTS Tiene el mismo objetivo que el parmetro anterior pero
en este caso se encarga de la lnea RTS. 
\end{itemize}

\subsubsection{Seccin Monitor.}

En esta seccin especificaremos el tipo de monitor disponible y los
modos (resolucin) con los que queremos trabajar, hay varios tipos
disponibles dependiendo del servidor, monitor y tarjeta grfica:
640x480, 800x600, 1024x768 y 1280x1024. Pero no slo existen estos
modos, en teora se puede configurar cualquier modo que nuestro
hardware pueda gestionar siempre que los valores introducidos indiquen
al servidor como ha de comportarse.

En funcin del hardware podremos trabajar con una, dos, tres o todas
las resoluciones disponibles sin ms que pulsar la combinacin de
teclas <Ctr>+<Alt> y el signo '+'  '-' del teclado numrico durante
la ejecucin de X-Window, generalmente los modos 640x480 y 800x600 son
soportados por todo tipo de hardware.

En el fichero README.Config como apartado final tenemos una serie de
modos disponibles y los parmetros que tendremos que introducir en
nuestro fichero XF86Config.

En la figura podemos ver los modos agrupados por la resolucin y con
los parmetros a utilizar en el fichero de configuracin, a stos
valores debemos de hacer constante referencia a la hora de configurar
la seccin que se describe.

\begin{figure}[htbH]
\small
\begin{verbatim}
  #  Mode       Refresh  Hor. Sync  Dot-clock  Interlaced?  VESA?
  #  -------------------------------------------------------------
  #  640x480     60Hz      31.5k     25.175M       No         No
  #  640x480     60Hz      31.5k     25.175M       No         No
  #  640x480     63Hz      32.8k     28.322M       No         No
  #  640x480     70Hz      36.5k     31.5M         No         No
  #  640x480     72Hz      37.9k     31.5M         No        Yes
  #  800x600     56Hz      35.1k     36.0M         No        Yes
  #  800x600     56Hz      35.4k     36.0M         No         No
  #  800x600     60Hz      37.9k     40.0M         No        Yes
  #  800x600     60Hz      37.9k     40.0M         No         No
  #  800x600     72Hz      48.0k     50.0M         No        Yes
  #  1024x768i   43.5Hz    35.5k     44.9M        Yes         No
  #  1024x768    60Hz      48.4k     65.0M         No        Yes
  #  1024x768    60Hz      48.4k     62.0M         No         No
  #  1024x768    70Hz      56.5k     75.0M         No        Yes
  #  1024x768    70Hz      56.25k    72.0M         No         No
  #  1024x768    76Hz      62.5k     85.0M         No         No
  #  1280x1024i  44Hz      51kHz     80.0M        Yes         No
  #  1280x1024i  44Hz      47.6k     75.0M        Yes         No
    
\end{verbatim}
\caption{\label{Figura-4-2} Extracto de la tabla de modos disponibles}
\end{figure}

A continuacin se explica la forma en que hemos de completar esta
seccin nicamente de forma que tengamos disponible un par de modos o
resoluciones. Si deseamos disponer de ms modos el mecanismo es
similar.

Dependiendo de la tarjeta grfica y el monitor instalados optaremos
por una de las formas en que podemos configurar los modos que se nos
ofrece.

\begin{figure}[htbH]
\begin{verbatim}

 # 640x480@60Hz Non-Interlaced mode
 # Horizontal Sync = 31.5kHz
 # Timing: H=(0.95us, 3.81us, 1.59us), V=(0.35ms, 0.064ms, 1.02ms)
 #
 # name        clock   horizontal timing     vertical timing      flags
 "640x480"     25.175  640  664  760  800    480  491  493  525
 
 # Alternate 800x600@56Hz Non-Interlaced mode
 # Horizontal Sync = 35.4kHz
 # Timing: H=(0.89us, 4.00us, 1.11us) V=(0.11ms, 0.057ms, 0.79ms)
 #
 # name        clock   horizontal timing     vertical timing      flags
 "800x600"     36      800  832  976 1016    600  604  606  634
 
\end{verbatim}
\caption{\label{Figura-4-3} Algunos de los modos en su especificacin
 concreta}
\end{figure}
                        
                
Los tems que forman la seccin son:

        
        
\begin{itemize}

        
\item Identifier "<cadena>": Aqu hemos de introducir el nombre de
nuestro monitor a fin de identificarlo. Este nombre deber coincidir
con el introducido posteriormente en la seccin Screen. Si  vamos a
definir varias secciones Monitor cada una debe tener un identificador
propio. 

\item VendorName "<cadena>": Fabricante del Monitor.

\item ModelName "<cadena>": Modelo del Monitor.

Estas dos ltimas entradas son opcionales y pueden dejarse tal como
estn (al igual que la primera si slo vamos a tener un monitor
configurado).

\item HorizSync <rango>: Especificaremos el valor/es del rango/s de
frecuencia/s horizontal/es (Tasa de Desplazamiento Horizontal9) del
monitor. Existen varias formas de especificar este valor, se puede ver
en el fichero como ejemplo: 

\begin{itemize}
\item Valor constante: 31.510           para monitores con frecuencia fija.
\item Rango de Valores: 30-64           para monitores multifrecuencia.
\item Mltiples valores: 31.5, 35.2     para monitores con frecuencia fija
        y la necesidad de especificar varios valores.
\item Mltiples Rangos: 15-25, 30-50    para monitores multifrecuencia
        con varios rangos de valores.
\end{itemize}

La frecuencia indica el nmero de lneas trazadas por segundo que el
monitor puede soportar durante su trabajo.

Esta forma de indicar los valores tambin nos ser til para el
siguiente (VertRefresh).

La unidad por defecto son los kiloherzios (kHz), aunque podemos
especificar otros mltiplos sin ms que indicarlo (Mhz para
Megaherzios, Hz para Herzios).

\item VertRefresh <rango>: Los valores que indiquemos en este apartado
son para la Tasa de Desplazamiento Vertical del monitor, la unidad por
defecto en este caso es el Herzio (podemos especificar tambin
kiloherzios y megaherzios). En este caso damos a conocer el nmero de
imgenes por segundo (entendiendo una imagen como el trazado de una
pantalla completa) a que el monitor puede trabajar. 

        
Tanto la Tasa de Desplazamiento Horizontal como la Vertical ayudarn
al servidor a conocer si los modos que vamos a especificar
posteriormente son soportados por el monitor.

Si desconocemos los valores para el monitor en el que estamos
configurando el X Window tenemos tres opciones:

        \begin{enumerate} 
        \item Recurrir al fichero Monitors en el que
        tenemos una lista de monitores y los modos que se pueden
        configurar en estos. Est formada en base de contribuciones de
        usuarios.
\begin{verbatim}        
 #Date: Fri, 16 Sep 1994 23:16:32 -0700
 #From: "Leonard N. Zubkoff" <lnz@dandelion.com>
 Section "Monitor"
   Identifier "Apollo 1280x1024-68Hz"
   VendorName "Apollo"
   ModelName "010700-005"
   BandWidth 125
   HorizSync 73.702
   VertRefresh 68.24
   Mode "1280x1024"
     DotClock 124.996
     HTimings 1280 1312 1504 1696 VTimings 1024 1027 1030 1080
   EndMode
 EndSection
\end{verbatim}  

        \item En la distribucin Slackware viene un programa llamado
        ConfigXF86 que ayuda en la configuracin del servidor. Consta
        de una serie de mens en los que pregunta el tipo de hardware
        a configurar, algunos parmetros que debe conocer y ste
        crear un fichero (llamado Xconfig!) con los valores
        correctos. Seguimos teniendo el problema a la hora de no
        conocer exactamente el hardware disponible.

        \item Escoger la entrada del fichero Monitors que ms se
        parece al nuestro y probar a incluirlo en nuestro fichero, de
        esta forma haremos la prueba por 'ensayo y error', ya que al
        arrancar el Servidor ste nos indicar mediante un mensaje de
        error si los campos no estn bien introducidos (podemos crear
        un fichero con la salida estndar para poder ver despus el
        contenido de este en este caso). De esta forma seguimos
        corriendo el riesgo de daar el monitor.
        \end{enumerate}
        
\item Gamma <valor/es>: Valor opcional para introducir la correccin
gamma de un monitor. Puede ser introducido como un valor o tres
valores separados. No todos los servidores usan esta informacin. 

\item Mode "<nombre>" Detallaremos a continuacin los modos en que
queremos que trabaje el monitor. Podremos definir tantos como el
hardware pueda soportar. Es conveniente el intentarlo con un modo de
los ms simples (640x480 por ejemplo) hasta que funcione correctamente
para, posteriormente, configurar los modos adicionales que deseemos.


En este apartado existen igualmente dos formas de definir los campos
que van a formar cada modo:

\begin{verbatim}
         ModeLine "640x480" 25.127 640 664 760 800 480 491 493 525
         Mode "640x480"
                DotClock        25.127
                HTimings        640 664 760 800
                VTimings        480 491 493 525
          EndMode

\end{verbatim}

Que modos se pueden configurar y cmo se pueden conocer estos
valores?
                
Para definir un modo hay que tener en cuenta que el valor DotClock del
modo a definir coincide con uno de los valores que hemos obtenido de
los DotClocks de la tarjeta grfica y obtendremos el resto de
parmetros del fichero README.Config.

Del fichero salida.tmp1 que hemos creado anteriormente observemos los
valores obtenidos para la tarjeta grfica:
                
{\tt (--) SVGA: clocks:  25.14  28.32  44.84  35.85  57.15  64.84  50.29  39.8411}
                                                                
Y que el valor marcado en 'negrita' coincide (aunque no exactamente)
con el primer valor sealado para el modo escogido para el ejemplo:

\begin{verbatim}

         ModeLine "640x480" 25.127 640 664 760 800 480 491 493 525
                
         Mode "640x480"
                DotClock        25.127
                HTimings        640 664 760 800
                VTimings        480 491 493 525
          EndMode
\end{verbatim}




        
Esta regla se tiene que aplicar para el resto de modos que existen en
el fichero README.Config, el primer valor de la resolucin escogida
debe coincidir con uno de los valores de la lnea clocks de la tarjeta
grfica.
        
Si tenemos dos formas de configurar un modo y en ambas el valor para
DotClock coincide con alguno de los ndices de la lnea mencionada,
podemos probar las dos formas y ver cual se ajusta ms al hardware o
funciona correctamente (siguiendo con el supuesto de no conocer el
hardware disponible). Es aconsejable intentar aquellos marcados como
VESA

\begin{verbatim}
 # Alternate 800x600@60Hz Non-Interlaced mode
 # Horizontal Sync = 37.9kHz
 (...)
# VESA 800x600@72Hz Non-Interlaced mode
# Horizontal Sync = 48kHz
# Timing: H=(1.12us, 2.40us, 1.28us) V=(0.77ms, 0.13ms, 0.48ms)
(...)
\end{verbatim}

En este caso podemos escoger primero el segundo grupo de valores.
\begin{figure}[htbH]
\small
\begin{verbatim}
 # Alternate 800x600@60Hz Non-Interlaced mode
 # Horizontal Sync = 37.9kHz
 # Timing: H=(1.20us, 3.80us, 1.40us) V=(0.13ms, 0.053ms, 0.69ms)
 #
 # name        clock   horizontal timing          vertical timing          flags
 "800x600"     40      800 848 1000 1056     600  605  607  633
 
 # VESA 800x600@72Hz Non-Interlaced mode
 # Horizontal Sync = 48kHz
 # Timing: H=(1.12us, 2.40us, 1.28us) V=(0.77ms, 0.13ms, 0.48ms)
 #
 # name        clock   horizontal timing         vertical timing            flags
 "800x600"     50      800  856  976 1040    600  637  643  666  +hsync +vsync
\end{verbatim}
\caption{\label{Figura-4-4} Dos formas de definir el modo "800x600"}
\end{figure}

Los cuatro valores que se definen en la figura como horizontal timing
y vertical timing indican al servidor cmo ha de hacer para visualizar
el modo definido.  

\item Flags: Nos servir para especificar parmetros opcionales en la
definicin. En este apartado podemos introducir los siguientes
valores: "Interlace" para el modo entrelazado. "DoubleScan" cuando
cada lnea debe ser definida dos veces. "+HSync" y "-HSync" para
ajustar la sincrona horizontal del monitor al igual que los
parmetros "+VSync" y  "-VSync" para la vertical. "Composite" para
indicar que la sincrona es de este tipo en monitores que lo
soporten. "+CSync" y "-CSync" sirven igualmente para concretar este
apartado.  

\end{itemize}
                



\subsubsection{Seccin Device.}

Para la definicin de la tarjeta grfica instalada. En la seccin
anterior se ha tenido que hacer constante referencia a este elemento a
pesar de no estar especificado hasta el momento. Esta seccin es
opcional.

\begin{itemize}
\item Identifier "<cadena>": Al igual que en el caso anterior, el
identificador asignado deber coincidir con el colocado en la seccin
Screen posterior. Podemos tener varias tarjetas grficas definidas. 

\item VendorName "<cadena>": Nombre del fabricante (opcional)12.
                
\item BoardName "<cadena>": Nombre de la tarjeta grfica (opcional).

\item Chipset "<tipo>": Especifica tipo de chip que configura la
tarjeta. En muchos casos esta entrada no hace falta indicarla, pues el
servidor puede probar el tipo de tarjeta instalada (opcional). 

\item Ramdac "<tipo>": Tipo de RAMDAC usado por la tarjeta. Utilizado
solo por algunos servidores y en otros casos no hace falta indicarlo
(opcional). 

\item DacSpeed <valor>: Velocidad del RAMDAC, indicado en
Mhz. Utilizado por un numero muy reducido de servidores. 

\item Clocks <valor1> <valor2> ...... : Quiz el campo ms importante
de esta seccin, aqu especificaremos los valores para los pulsos de
reloj que utiliza la tarjeta grfica. Para el ejemplo los extraeremos
del fichero creado al principio (salida.tmp1) y los colocaremos en
esta lnea sin alterar su orden ni intentar el redondeo de alguno de
ellos, hemos de trasladar estos valores tal cual. 
        
De no colocar esta lnea (tambin puede tomarse como opcional), ser
el servidor el que los calcule cada vez que arranque o basndose en la
informacin de la entrada siguiente, utilizadas para tarjetas de tipo
programable.

\item Clockchip "<tipo>": Especifica el tipo de chip que incorpora la
tarjeta grfica para las que lo tienen del tipo programable. Slo
algunos servidores soportan este tipo de tarjetas (opcional). 

\item ClockProg "<comando>" [textclock]: Se ejecutar el comando
sealado a fin de fijar el reloj de la tarjeta grfica en lugar de
utilizar el cdigo incorporado al servidor. Este comando debe
especificarse como una ruta en la estructura de ficheros
disponible. La lnea Clocks debe estar presente para especificar que
valores estarn disponibles para el servidor.

La palabra textclock indica al servidor que el comando debe ser
ejecutado para restaurar el modo texto a la salida o en el cambio de
terminales virtuales, debe coincidir con uno de los valores de la
lnea Clocks.

El comando es ejecutado con el identificador real del usuario con la
salida y la entrada estndar (stdin y stdout) hacia la salida
grfica. A este se le pasan dos argumentos, la frecuencia del reloj en
Mhz y un ndice a la entrada concreta en la entrada Clocks. La salida
puede ser 0 (correcto) o un valor en el rango 1-254.

El comando es ejecutado en la inicializacin del primer modo
configurado y en el cambio de resolucin. Si el programa falla en su
comienzo el servidor terminar. Si es durante un cambio de modo, este
no es cambiado pero el servidor sigue ejecutndose.

\item Opcin "<cadena_de_opciones": En el manual del servidor tenemos
informacin de las opciones soportadas a la hora de ejecutar el
servidor (opcional). Tenemos otra opcin indicndolos en la subseccin
DISPLAY de la seccin siguiente. 

\item VideoRam <memoria>: Cantidad de RAM de vdeo disponible, medida
en Kbytes. El servidor puede determinarla en el arranque (opcional). 

\item BIOSBase <direccin>: Nos sirve para especificar la direccin
base de la parte de la BIOS encargada del manejo de la salida por
pantalla con tarjetas VGA. Normalmente sta es C0000 (hex.)
(opcional). 

\item MemBase <direccin>: Indicar la direccin base de un buffer de
la tarjeta grfica destinado al trazado de lneas. Utilizado solo por
algunos servidores (opcional). 

\item IOBase <direccin>: Especifica la direccin base de la BIOS para
la entrada/salida. Utilizada solo por algunos servidores (opcional). 

\item DACBase <direccin>: La tarjeta grfica VGA dispone de un DAC
(Digital to Analogic Converter) como componente destinado a convertir
la seal digital a una analgica entendible por en monitor. Con este
campo indicamos la direccin de este componente (opcional). 

        

\item POSBase <direccin>: Para la direccin base del POS. Utilizado
solo por algunos servidores (opcional). 
                
\item COPBase <direccin>: Direccin base del coprocesador
numrico. Utilizado solo por algunos servidores (opcional). 
                
\item VGABase <direccin>: Direccin base de la memoria de la tarjeta
grfica VGA. Utilizada solo por algunos servidores (opcional). 

\item Instance <valor>: Indicaremos al servidor (el que lo utilice) si
la tarjeta grfica est integrada en la placa base o est colocada
como una tarjeta de expansin ms (opcional). 

\item Speedup "<valor>": Detallaremos las velocidades habilitadas para
el servidor. Utilizado solo por algunos servidores (opcional). 
\end{itemize}

Los siguientes tres parmetros estn indicados para el servidor
XF86_S3 nicamente, hay que dirigirse al manual de ste servidor para
ms detalles:
\begin{itemize}
\item S3MNAdjust <M> <N>
\item S3MClk
\item S3RefClock
\end{itemize}



\subsubsection{Seccin Screen}

Una vez introducidos el valor/es para los monitores y tarjetas
grficas que deseemos (recuerdo que se pueden definir varios en cada
una de las secciones) es en esta seccin en donde concretaremos que
configuracin ha de utilizar un servidor en particular. Podemos tener
varias secciones de este tipo.

\begin{itemize}

\item Driver "<cadena>": Cada una de estas secciones debe comenzar con
esta entrada y la <cadena> especificada debe ser nica. El servidor a
utilizar debe ser concretado en esta parte, podemos introducir: Accel,
Mono, SVGA, VGA2 y VGA16. 

\item Device "<cadena>": Que dispositivo grfico vamos a utilizar
(debe estar definido anteriormente!). 

                
\item Monitor "<cadena>": Monitor a utilizar (tambin definido con
anterioridad). 

\item ScreenNo <nmero>: Para alterar el orden en que son consideradas
las entradas Screen. Si no se concreta el orden es el de entrada de
cada una de ellas (opcional). 

\item BlankTime <valor>: Minutos que deben transcurrir el ordenador
sin actividad para que se apague la pantalla. El valor por defecto es
de 10 minutos. Se restablecer de nuevo la pantalla si pulsamos
cualquier tecla o movemos el ratn. 
                
\item SuspendTime <valor>: Para monitores compatibles con el tipo VESA
DPMS este valor (en minutos) especifica el tiempo de inactividad para
pasar al estado 'suspendido'. 

\item OffTime <valor>: Para los monitores anteriores, especifica el
tiempo para pasar al estado 'off', el valor por defecto es de 30. 

\end{itemize}

SuspendTime y OffTime son utilizadas slo por algunos servidores.



\subsubsection{Subseccin Display}

Nos encontramos ante una subseccin incluida en la que estamos
especificando para determinar ciertos valores, a pesar de la
nomenclatura la sintaxis es igual a la de una seccin (con las
palabras Subsection  EndSubsection).

Para algunos servidores y tarjetas grficas esta subseccin es
obligatoria. Si tenemos varias secciones Display cada una debe
identificarse por una entrada Depth nica que despus ser utilizada
en caso de definir, por ejemplo, ms de un tipo de resolucin en
cuanto a colores disponibles (8, 16...).

\begin{itemize}

\item Depth <valor>: Donde valor puede ser: 8, 15, 16 24  32. De esta
forma especificamos los 'bpp' (bits per pixel) que el servidor debe
utilizar (si tiene esta capacidad) para la generacin de colores y
depende de la memoria disponible en la tarjeta grfica. Por ejemplo
para una resolucin de "800x600" con una definicin de 16 bits por
pixel (65535 posibles colores) necesitamos $(800x600x16)/(8x1024)=
937.5$ Kb de memoria.  

En memoria dispondremos de esta forma de los bits especificados para
referenciar un color concreto para cada pixel. El valor almacenado no
es mas que un ndice a un mapa de colores que indica al hardware como
ha de dibujar cierto color. A mayor valor mayor nmero de colores
podrn utilizar los clientes ejecutados.

\item Weight <valor>: Para indicar el 'peso' de los tres colores
bsicos que forman la imagen (RBG) cuando el servidor trabaja en el
modo 16bpp. Valores de referencia pueden ser 555 y 565 (opcional). 

\item Virtual <valorx> <valory>: Resolucin de la pantalla virtual a
usar. El primer valor debe ser mltiplo de 8 para servidores en color
y de 32 para servidores monocromo. Si no existe este campo el servidor
lo calcular de forma que se puedan representar todos los modos
configurados. Algunos servidores no soportan esta capacidad
(opcional). 

\item ViewPort <x> <y>: Determina la posicin inicial de la esquina
superior izquierda de la pantalla inicial. Slo es necesario cuando la
pantalla virtual es diferente de la resolucin del modo inicial
configurado. Si no se especifica se considerar la pantalla inicial
centrada en el rea virtual definida (opcional). 

\item Modes "<cadena>" ....: Obligatoria para algunos
servidores. Indicaremos la lista de modos a utilizar concretados en la
seccin Monitor. Si algn modo no cumple ciertos requisitos en su
especificacin el servidor lo eliminar de los modos disponibles al
ejecutarse. 

\item InvertVCLK "<cadena>" [0$\|$1]: Especifico del servidor
XF86_S3. Indica el estado invertido/no-invertido  de los modos. Si el
modo es "*" se aplicar a todos los modos. Ciertas tarjetas grficas
necesitan este parmetro para funcional (opcional). 

\item EarlySC "<cadena>" [0$\|$1]: Servidor XF86_S3 (opcional). 

\item BlankDelay "<cadena>" <valor1> <valor2>: Para el servidor S3
(opcional). 
                
\item Visual "<cadena>": Esta entrada opcional indica el tipo por
defecto de visualizacin para la pantalla principal (root). Para
servidores de 8bpp tenemos los siguientes valores: StaticGray,
GrayScale, StaticColor, TrueColor y DirectColor. 

Para servidores de 16bpp y 32bpp solo tenemos disponible el valor
TrueColor. 

Para el servidor de 1bpp disponemos del valor StaticGray.

Para servidores de 4bpp son: StaticGray, GrayScale, StaticColor,
PseudoColor. 
                
\item Option "<opciones>": En el manual de cada uno de los servidores
se especifican ciertos parmetros que pueden ser incluidos en esta
lnea (opcional). 

\item Black <red> <green> <blue>: Permite especificar el color 'negro'
en el manejador VGA2 del servidor XF86_Mono. 

\item White <red> <green> <blue>: Para indicar el color 'blanco' como
en caso anterior.

\end{itemize}
                
A fin de configurar ciertos aspectos disponemos adems de dos
programas que permiten configurar detalles como el grfico a utilizar
como puntero, si deseamos que se emitan ciertas seales sonoras
durante nuestro trabajo, el aspecto de la pantalla principal (root),
posibilidades de ahorro de energa, etc.. Dichos programas son xset y
xsetroot.

Xset permite configurar el servidor desde la lnea de comandos (o
introduciendo los parmetros deseados en el fichero correspondiente),
para conocer la configuracin actual teclear 'xset q'.

Xsetroot lo utilizaremos si necesitamos configurar el aspecto del rea
de trabajo, permite escoger el tipo de ratn, el tipo de fondo a
utilizar (podemos incluir el grfico que deseemos), etc...



\section{ Clculo de valores para la entrada ModeLine}

A continuacin se expondr de forma detallada el mecanismo mediante el
cual se obtiene la imagen que podemos ver en nuestro monitor durante
una sesin de trabajo como base para entender todo el proceso descrito
anteriormente para configurar XFree86, por ltimo  se describe paso a
paso un ejemplo de cmo calcular los valores que van a describir una
resolucin a partir de las caractersticas tcnicas de un monitor. El
uso de la terminologa anglosajona (siempre en cursiva) responde a un
intento de claridad utilizando al mximo lo que puede encontrarse en
cualquier documentacin al respecto no obstante se intentar utilizar
un trmino en castellano cuando sea posible. 

Como en otras ocasiones formas de obtener un mismo resultado puede
haber varias una vez conocida la relacin entre los datos que se
necesitan utilizar, puede basarse en este caso para calcular las
entradas ptimas para su monitor. De no tener disponibles los datos
necesarios para operaciones como las descritas en el ejemplo pueden
utilizarse las frecuencias especificadas para el monitor a fin de
escoger la entrada vlida, siempre teniendo en cuenta si el monitor
soporta los valores asignados por el modo escogido.
                        
Puede describirse la forma de dibujar la pantalla del ordenador
haciendo un smil con la escritura de un texto a mano o con un
procesador de textos, la tarjeta grfica emite una serie de seales
que provocan que tres haces de electrones (uno por color: rojo, azul y
verde) causen con su impacto en una zona sensible del tubo de imagen
el que aparezca un punto luminoso, este fenmeno es repetido con una
frecuencia muy alta, con el objetivo de mantener iluminado el mximo
tiempo posible esta zona de la pantalla (pixel), de no ser as el
punto se apagara sin ms.

Si aprovechamos este efecto para el trazado de lneas horizontales a
en base a puntos contiguos ya tenemos el patrn mnimo que
utilizaremos para cualquier dibujo. El trazado de las lneas se hace
de izquierda a derecha de la pantalla, por lo que empezando por la
esquina superior izquierda de la misma y siguiendo en la lnea de
abajo en sucesivas ocasiones tendremos como resultado el dibujo de una
pantalla completa.

Debido a las limitaciones impuestas por los monitores el trazado de
las lneas horizontales no comienza al principio de la pantalla ni
finaliza en el extremo, se deja un margen a ambos lados debido a que
el control de las seales en los extremos es difcil. Por el mismo
motivo no son dibujadas todas las lneas para el trazado de una
pantalla, de ah que la imagen presente un marco alrededor.

Hacen falta por tanto una serie de seales para que este proceso est
perfectamente sincronizado que son generadas por la tarjeta grfica
mediante un circuito del tipo 6845 o similar, adems dispone de
memoria RAM y otros componentes que ayudan al trabajo en modo texto y
grfico. El 6845 genera los pulsos de reloj (dot clocks) que van a
provocar el dibujado de los puntos en la pantalla, adems la seal
(horizontal sync) que provoca que se salte a la lnea siguiente para
trazar otra lnea (horizontal retrace) y, una vez finalizado el
trazado de una pantalla completa, (se ha llegado al extremo inferior
derecho de la pantalla) se debe producir una (vertical sync) que
provoque la vuelta al punto de partida de la pantalla (vertical
retrace).

Existen asimismo una serie de tiempos de espera que hay que respetar
antes y despus de la generacin de las seales descritas en el
prrafo anterior, para desactivar y activar correctamente los haces de
electrones durante estos intervalos, ya que no deseamos que se dibuje
nada en la pantalla. Estos tiempos se denominan Front Porch para el
instante antes de una seal y Back Porch para despus.
                
Con todo lo expuesto resolveremos un modo para un monitor y una
tarjeta grfica imaginarios, suponemos un monitor con las siguientes
caractersticas:

\begin{itemize}
\item  Frecuencia Horizontal: 15-40 KHz.
\item  Frecuencia Vertical: 40-100 Hz.
\item  Ancho de Banda mximo: 80 MHz.
\item  Sincronismo Horizontal: 2 ms.
\item  Front Porch y Back Porch: 2 ms. 
\item  Sincronismo Vertical: 0,08 ms.
\item  Front Porch: 0,02 ms.
\item  Back Porch: 0,6 ms.
\end{itemize}

Nuestro objetivo consiste en calcular la entrada ModeLine de tal forma
que podamos trabajar en esta resolucin, adems de con una tasa de
refresco (RR13) de la imagen lo ms alta posible a fin de reducir
drsticamente el parpadeo de la imagen en la pantalla que en ocasiones
no es apreciable, pero puede perjudicarnos seriamente. El estndar
VESA define una frecuencia de 72 Hz (72 imgenes/segundo) como valor
ideal.

Con una Frecuencia Horizontal de 40 Khz. tenemos que se puede trazar
una lnea un tiempo de 25 ms $(1/40000)$ que con un tiempo total de
espera de 6 ms. (Sincronismo Horizontal + Back Porch + Front Porch)
nos deja con 19 ms. para el trazado de una lnea.

Dividiendo los 19 ms. entre el nmero de puntos totales que queremos
por lnea, obtendremos el tiempo que se tarda en dibujar cada uno de
ellos y de ah la frecuencia a la que ha de trabajar la tarjeta
grfica, si quiere realizarlo correctamente (este ser el valor que
pondremos como dotclock).

\begin{equation}
\text{Tiempo por pixel} = \frac{19 ms}{640 puntos} =  29.6 ns >> 30 ns.
\end{equation}

Por lo que necesitaremos que la tarjeta grfica trabaje al menos a 33
Mhz. para poder obtener dicho resultado. Utilizaremos el valor ms
cercano posible si no disponemos de ste y siempre por debajo del
ancho de banda mximo soportado por el monitor.

Todos los valores referidos al trazado horizontal (los cuatro primeros
de la lnea ModeLine sin contar la entrada dot clock) estn
especificados en puntos, por lo que necesitamos pasar los tiempos de
espera a esta magnitud. Tambin hay que sealar que todas estas
entradas deben ser mltiplos de 8 debido al tipo de registros
integrados en la tarjeta VGA y la forma en que el programa XFree86 los
utiliza.

Con 2 ms. de tiempo para los valores de espera hemos de saber cuantos
puede dibujar la tarjeta grfica en ese tiempo:

\begin{equation}
Puntos = \frac{2 ms}{33 Mhz} = 66 \rightarrow 64 \text{(mltiplo de 8 ms cercano)}
\end{equation}                                  
                
Ya podemos introducir en la lnea los cinco primeros valores para la
resolucin deseada.

        ModeLine "640x480" 33 640 (640+64) (640+64+64) (640+64+64+64)

Podemos ver que el primer valor se corresponde con el nmero de puntos
que deseamos, el segundo con el punto de inicio del trazado de una
lnea, el tercero en punto en el que ha de finalizar y por ltimo se
refleja el nmero total de puntos dibujados (aunque no visibles,
claro).
        
Los valores que definen el trazado vertical de la pantalla hemos de
trasladarlos a lneas, en este caso no es necesario el redondeo a un
valor mltiplo de 8. Para conseguir esto hemos de dividir los valores
presentados entre el tiempo que se tarda en trazar una lnea (25 ms)
obtenido al comienzo del ejemplo, obtenemos:

\begin{itemize}
\item Sincronismo Vertical: 3 lneas.
\item Front Porch: 0.8 lneas  1 lnea.
\item Back Porch: 24 lneas.
\end{itemize}

Obtenemos as los siguientes valores verticales:

                        480     481     484     508

El primer valor indica las lneas que queremos, la segunda y la
tercera en cual comienza y finaliza la seal de sincronismo y por
ltimo el nmero total de lneas trazadas.

Para los valores obtenidos podemos obtener la Frecuencia de Refresco
de la pantalla a partir del siguiente clculo:


%                                         Dot clock               33 Mhz.
%                        RR =  ----------------------------------= ------------------= 78 Hz.
%                                Puntos x Lineas (totales)       832 x 508

\begin{equation}
RR =  \frac{ Dot clock}{Puntos \cdot Lineas (totales)} = 
\frac{33 MHz}{832 \cdot 508} = 78 Hz
\end{equation}

        
Podemos ver que el valor conseguido est por encima del recomendado
por el estndar mencionado.

A lo largo de toda la exposicin se ha dado por entendido que no se
desea utilizar ningn modo entrelazado, debido a que no se trata de un
modo ptimo de trabajo con el entorno grfico y se encuentra ya en
desuso.

\section{Disfrutando de Xfree86.}

Una vez tenemos configurado el software se proceder a ejecutar
XFree86, si se hace tecleando:

{\tt                            \# X}

Simplemente arranca el servidor, por lo que la pantalla se nos
mostrar de color oscuro, aparecer el smbolo del ratn y ... nada
ms. Que se ha hecho mal?, la respuesta es NADA.

Acostumbrados a otros sistemas operativos se puede pensar que algo ha
ido mal y que, por tanto, hay que volver a revisar el fichero
XF86Config para ver que parmetro se ha introducido mal. Para
atenernos a la terminologa hay que decir que adems del servidor hay
que ejecutar algunos clientes bsicos para podernos comunicar con el
servidor correctamente, el principal en este caso es el gestor de
ventanas.

Se ejecutar el entorno utilizando el comando 'startx', fichero que
obtendr los parmetros que deseamos pasar al servidor y a los
clientes a ejecutar mediante el programa xinit que es el que realmente
realiza la tarea de arrancar el software.

Startx busca la existencia de los ficheros .xinitrc y .xserverrc en el
directorio del usuario que lo invoca, de no existir utilizar
/usr/X11R6/lib/X11/xinit/xinitrc y /usr/X11R6/lib/X11/xinit/xserverrc
respectivamente.

El fichero xserverrc generalmente no necesitaremos crearlo ya que por
defecto se ejecuta el servidor denominado X (recuerde que con este
valor ejecutaremos el escogido durante la instalacin).

Caso de no existir ninguno de los ficheros xinitrc posibles xinit
ejecutar:

{\tt                    \# xterm -geometry +1+1 -n  login -display :0}
      
\begin{figure}[htbH]          
\small
\begin{verbatim}
#!/bin/sh
# $XConsortium: startx.cpp,v 1.4 91/08/22 11:41:29 rws Exp $
# $XFree86: xc/programs/xinit/startx.cpp,v 3.0 1994/05/22 00:02:28 dawes Exp $
(...)
userclientrc=$HOME/.xinitrc
userserverrc=$HOME/.xserverrc
sysclientrc=/usr/X11R6/lib/X11/xinit/xinitrc
sysserverrc=/usr/X11R6/lib/X11/xinit/xserverrc
clientargs=""
serverargs=""
if [ -f $userclientrc ]; then
    clientargs=$userclientrc
else if [ -f $sysclientrc ]; then
    clientargs=$sysclientrc
fi
fi if [ -f $userserverrc ]; then
    serverargs=$userserverrc
else if [ -f $sysserverrc ]; then
    serverargs=$sysserverrc
fi
fi
whoseargs="client"
while [ "x$1" != "x" ]; do
    case "$1" in
        /''*|\.*)       if [ "$whoseargs" = "client" ]; then
                    clientargs="$1"
                else
                    serverargs="$1"
                fi ;;
        --)     whoseargs="server" ;;
        *)      if [ "$whoseargs" = "client" ]; then
                    clientargs="$clientargs $1"
                else
                    serverargs="$serverargs $1"
                fi ;;
    esac
    shift
done
xinit $clientargs -- $serverargs
\end{verbatim}

\caption{\label{Figura-4-5} Fichero startx}
\end{figure}


Para el caso en que deseemos especificar algunas opciones que el
servidor se debe tener en cuenta a la hora de ejecutarse, se dispone
de las siguientes (estas opciones son generales, para ms informacin
acudir al manual del servidor que estemos utilizando):

\begin{itemize}
\item vtXX: Con el nmero 'XX' concretaremos el terminal virtual
(accesibles mediante las teclas F1...F12) que el servidor escoger
para su ejecucin. Si no se concreta se escoger el primero
disponible, es decir, sin procesos pendientes a la espera de entrada
de usuarios. Puede verse que terminal va a utilizarse en el fichero
'salida.tmp1' que creamos al comienzo, antes de crear el fichero
XF86Config, en la lnea '(using VT number 7)' . 

\item -probeonly: El servidor finalizar antes de pasar a
ejecutarse. Acceder al fichero XF86Config para extraer cierta
informacin, el resto la detectar. De ah el comando descrito para la
creacin del fichero 'salida.tmp1'. 

\item -bpp <valor>: Fija el valor para 'bits per pixel (bits
utilizados para especificar cada punto de la imagen en pantalla). El
valor por defecto es 8. No todos los servidores soportan el resto de
valores posibles (15, 16, 24, 32). 

\item -weight <valor>: Para el valor de los tres colores (RGB) en el
modo 16bpp. Por defecto ser 565. 

\item -gamma <valor>: Correccin para el parmetro gamma, en el rango
[0.1,10]. Por defecto es 1.0 para los valores R, G y B. No todos los
servidores lo soportan. 

\item -rgamma <valor>: Igual al caso anterior para el campo R (color rojo).

\item -ggamma <valor>: Igual al caso anterior para el campo G (color verde).

\item -bgamma <valor>: Para el campo B (color azul).

\item -showconfig: Presenta una lista de 'drivers' grficos
configurados en el servidor. 

\item -verbose: Muestra la mxima informacin posible en el arranque.

\item -xf86config <fichero>: El fichero de configuracin es distinto
al XF86Config. Slo se puede aprovechar esta posibilidad si se ejecuta
el servidor como administrador (root). 

\item -keeptty: til para el testeo del servidor en su desarrollo.

\end{itemize}


\begin{figure}[htbH]
\small
\begin{verbatim}
#!/bin/sh
# $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $

userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap
# merge in defaults and keymaps
if [ -f $sysresources ]; then
    xrdb -merge $sysresources
fi

if [ -f $sysmodmap ]; then
    xmodmap $sysmodmap
fi

if [ -f $userresources ]; then
    xrdb -merge $userresources
fi

if [ -f $usermodmap ]; then
    xmodmap $usermodmap
fi
# start some nice programs
xsetroot -solid SteelBlue
fvwm
\end{verbatim}

\caption{\label{Figura-4-6} Fichero xinitrc.fvwm}
\end{figure}
                
                                
        
En realidad existen varios ficheros xinitrc.<nombre> en el directorio
/usr/X11R6/lib/X11/xinit y un enlace al fichero xinitrc.fvwm
(xinitrc). En el caso de ejemplo y que viene por defecto en la
instalacin se ejecuta el gestor de ventanas fvwm14.

Los ficheros que el fichero menciona inicialmente (.Xresources y
.Xmodmap) son los que configuran el entorno a nivel de recursos15 y
teclado. El programa que gestiona los recursos es el xrdb y para la
redefinicin del teclado es xmodmap.
                
En nuestro caso no existe inicialmente el fichero .Xresources por lo
que el sistema tomar por defecto los valores especificados en el
fichero .Xdefaults.

Podemos crear un fichero .xinitrc para cada usuario o modificar el
xinitrc para que todas las sesiones que iniciemos de XFree86 sean
afectadas por los mismos parmetros totalmente a nuestro gusto. Para
ello veamos un ejemplo muy sencillo de fichero:

\begin{verbatim}
        #!/bin/sh
        # Un simple fichero .xinitrc
        # Iniciamos un terminal virtual (pueden ser ms).
        color_xterm -geometry -20+10 -fg darkslategray -bg white &
        # Otros clientes
        oclock -geometry 70x70+5+5 &
        xload -geometry 85x60+85+5 &
        xsetroot -solid red &
        # Ejecutamos el gestor de ventanas
        exec fvwm
\end{verbatim}
        
En este ejemplo solo se ha introducido cinco clientes: un terminal
virtual, un sencillo reloj analgico, un monitor de la carga del
sistema, para definir el color de la pantalla y por fin el gestor de
ventanas. Sealar la importancia que tiene el que los clientes se
ejecuten en segundo plano (indicado por el smbolo '\&') o
concurrentemente y el comando exec para el gestor de ventanas.

De no ejecutar los clientes en segundo plano nos veramos en la
situacin de que el servidor los ejecutara uno despus de otro, en
este caso el terminal virtual sera el primero en ejecutarse, al
finalizar su ejecucin dara paso al reloj y as sucesivamente.

Con el comando exec el gestor de ventanas sustituir al proceso xinit
que arranc el servidor, de esta forma cuando salgamos del gestor de
ventanas tambin finalizar ste.

Cada uno de los clientes tiene una serie de modificadores propios que
nos ayudan a definir el tamao de la ventana en el que va a
ejecutarse, colores, posicin... que hay que buscar en el manual
propio a fin de poder configurarlo adecuadamente.
                                
Por ltimo mencionar la forma de finalizar la ejecucin del servidor (
y posteriormente del tndem servidor+gestor de ventanas), se puede
hacer mediante las teclas: <Ctr>+<Alt>+<Backspace>16 o con la opcin
adecuada del gestor de ventanas.

Como se puede observar hasta el momento tenemos varias posibilidades a
la hora de configurar el comportamiento del entorno grfico en
general: el fichero XF86Config, ficheros xinitrc y xserverrc o
directamente en la invocacin del programa startx, por ejemplo:

{\tt                            \# startx -- -bpp 16 -weight 555}

En el apartado siguiente se ver como puede modificarse el aspecto del
gestor de ventanas a utilizar adems de una breve explicacin del
trmino recursos17 y como utilizar este mecanismo para cambiar el
aspecto de los programas clientes que se vayan ejecutar y que permiten
este sistema con lo que ya habremos repasado las principales formas de
configurar el 'entorno grfico' de LINUX.

\section{Personalizar  el  entorno.}

Hasta el momento hemos visto los valores que nos van a definir las
condiciones en las que el servidor trabajar en relacin con los
clientes que podamos ejecutar. Se han configurado modos o
resoluciones, directorios donde encontrar ciertos ficheros,
frecuencias horizontales y verticales, pulsos de reloj de la tarjeta
grfica...

Todo esto es imprescindible para la ejecucin del X Window en la
mquina que vayamos a utilizar pero no hemos visto todava la forma de
aplicar nuestros gustos personales al trabajo que vayamos a realizar,
la forma de especificar colores a utilizar, tipos de ventanas, forma
del ratn, iconos, etc...

De esta tarea se encarga el gestor de ventanas que es un cliente al
que hemos hecho constante referencia en apartados anteriores y vamos a
concretar algo ms sus caractersticas.

Existen muchos gestores implementados para el X Window, cada uno con
unas caractersticas propias que lo distinguen totalmente de los dems
en cuanto a apariencia del rea de trabajo, uso de recursos del
sistema, licencia de uso, forma de configurarlo,....

Una de las opciones que ms llaman la atencin sobre alguno de estos
gestores de ventanas es el poder definir un rea de trabajo virtual
ms grande que el espacio definido por nuestra pantalla, as podemos
tener las ventanas fuera de los lmites del rea que puede verse a
travs de la pantalla repartidas por el rea de trabajo a nuestro
antojo.

Uno de los ms extendidos, implementado especficamente para el
sistema operativo LINUX es el fvwm. Este gestor de ventanas es el que
viene definido por defecto en los ficheros de configuracin, aunque la
distribucin Slackware contiene otros.