De meeste grafische kaarten op een Intel gebaseerd systeem werken met de Linux kernel, als de fabrikant de nodige gegevens wil verstrekken. De Xservers van XFree86 worden bij de meeste linux distributies meegeleverd. Informatie over nieuwe (ook beta) releases van XFree86 kun je vinden op de site van de XFree86 organisatie, of op een van de Mirrors (Sunsite Europe).
Momenteel (21/01/99) is de laatste versie van de XFree86 distributie 3.3.3.1
Als je een nieuwe grafische kaart wilt gaan kopen, lees dan eerst de lijst van ondersteunde kaarten door http://www.xfree86.org/cardlist.html, dan ben je er 99.99% zeker van dat je kaartje ook met Linux werkt.
Je zou kunnen kijken of XSuSE een Xserver voor je kaart heeft gemaakt. Verder is het dan meestal wel mogelijk om de XF86_VGA16 Xserver van XFree86 te gebruiken, het zou kunnen dat bepaalde modes dan niet werken. Lees ook de volgende vraag.
Doorgaand op de vorige vraag: als jouw grafische kaart niet ondersteund wordt door XFree86 dan zou je kunnen uitzoeken of een van de commerciële Xservers deze wel ondersteunt. Sommige commerciële servers hebben een aantal mogelijkheden welke XFree86 (nog) niet heeft, zoals multiheaded displays, 24bpp en 8bpp overlays, hardware gamma color correction enz... Er is een Engelstalige FAQ over dit onderwerp: de X on Intel-based UNIX FAQ.
Gratis cq OpenSource
Commerciële:
Tom Peters vond MetroX van Metrolink over het algemeen de zwakste van de drie. Hij werkt bijv. niet samen met de ``gpm'' mouse driver voor de Linux console (tenminste t/m MetroX v3.1). Maar hij raadt aan om de lijsten met ondersteunde hardware en features te bekijken op de websites, en vervolgens zelf te kijken welke de "beste" is voor jouw hardware.
(aanvulling door: Bart Hanssens < antares@rtfs.net>)
Ook Accelerated-X 4.1 en WordPerfect 8.0 PE zijn niet bepaald goeie maatjes: het kleurenpalet van WP is meestal zwart en WPG-clipart wordt niet goed - of soms zelfs helemaal niet - weergegeven. Daartegenover staat wel dat Accelerated-X heel makkelijk te configureren valt en dat deze server enorm veel kaarten ondersteunt.
Lees eerst de lijst van ondersteunde kaarten door http://www.xfree86.org/cardlist.html
Alles wat de XFree86 Xserver moet weten staat in de file XF86Config; volgens de Linux File System Standaard hoort hij thuis in /etc/X11/ .
Hoe die configuratie eruit moet zien is een vraag waar niet zomaar antwoord op te geven is. Voordat je een bepaalde Xserver gaat proberen is het van belang om goed te weten welke hardware er in de PC zit.
Er is een Engelstalige XFree86 QuickStart guide welke naar mijn mening aardig duidelijk is.
Als je een redelijk standaard grafisch kaartje hebt, dan is het meestal voldoende om de opgezochte gegevens (van je eigen hardware !) uit het onderstaande stukje op te schrijven. Daarna kun je één van de setup programma's draaien om de Xserver te configureren.
Dit is een checklist welke je naast de bestaande documentatie zou kunnen gebruiken voordat je X gaat configureren:
Deze gegevens staan meestal in de handleiding van de grafische kaart. Als je niet weet wat voor chipset je grafische kaart gebruikt (kijk eerst in de cardlist van XFree86) dan kun je het programma ``SuperProbe'' gebruiken. Dit programma is onderdeel van de XFree86 distributie. Het programma geeft bijvoorbeeld zo'n output:
First video: Super-VGA Chipset: S3 Trio64V+ (Port Probed) Memory: 2048 Kbytes RAMDAC: Generic 8-bit pseudo-color DAC (with 6-bit wide lookup tables (or in 6-bit mode))
Ik weet nu dus dat mijn kaart (Miro22SD) een S3 Trio64V+ chipset gebruikt en dat deze 2 MB memory heeft. Je kunt hem hierna opzoeken bij de S3 Trio chipset in de files ``Cards'' of ``AccelCards'' (zit bij de XFree86 distributie).
(aanvulling door: Bart Hanssens < antares@rtfs.net>)
Opgelet: bij sommige kaarten mislukt SuperProbe, en het is mogelijk dat je daarna enkel een zwart scherm te zien krijgt: je zal dan je PC moeten herstarten.
Als de handleiding niet duidelijk vermeldt welke chipset er op je grafische kaart zit, dan kijk je indien mogelijk best eens op de grafische kaart zelf. Soms wordt deze informatie ook getoond bij het (her)starten van je PC, snel lezen is dan de boodschap. Neem ook eens een kijkje in de ``/usr/lib/X11/Cards'' file.
Vervolgens is het van belang om deze gegevens van de monitor te weten:
Deze gegevens staan meestal in de handleiding van de monitor. Schrijf al deze gegevens van de checklist op.
Één van de makkelijkste methoden om X te configuren is via het programma ``XF86Setup''. Met dit programma kun je met een GUI een XF86Config bestand genereren. Meer uitleg over XF86Setup is in het programma zelf te vinden onder ``help''. Het is wel nodig om de X_SVGA server geinstalleerd te hebben op je systeem. ``XF86Setup'' heeft die Xserver nodig. Het zou kunnen zijn dat de X_SVGA server niet werkt met jouw hardware; probeer dan één van de onderstaande manieren.
Een andere mogelijkheid is om het scriptje ``xf86config'' te gebruiken. Dit scriptje vraagt een aantal gegevens en maakt daar vervolgens een ``/etc/XF86Config'' file van. Als je dit scriptje gebruikt, dan krijg je de meest complete /etc/XF86Config file, sommige opties worden met de andere scriptjes niet in de file gezet (XIE, pex5 fonts en dergelijke).
Let OP !: Als je Xwrapper gebruikt om de Xserver op te starten moet je ``xf86config'' niet zelf de link naar de Xserver laten aanmaken. De symboliclink ``/etc/X11/X'' moet wijzen naar de Xserver die je gebruikt. De link ``/usr/bin/X11R6/X'' moet dan wijzen naar ``Xwrapper''.
Als je RedHat gebruikt, is het ook mogelijk om het programma ``Xconfigurator'' te gebruiken (informatie in de RedHat documentatie).
Nu een XF86Config file gegenereerd is door één van deze bovenstaande programma's, is het handig om die XF86Config door te lezen. Controleer of de gegevens kloppen (commentaar staat in de file), en maak aanpassingen waar nodig. Helaas is er niet zoiets als een universele XF86Config file (honderden combinaties van grafische kaarten en monitoren), dus het heeft weinig zin om die in deze VVV door te nemen . Zie voor uitleg van de verschillende secties ``man Xserver''.
Na deze stappen heb je hopelijk een werkend X systeem. Mocht het nu nog niet lukken, dan kan het zijn dat je kaart (nog) niet ondersteund wordt door XFree86. Je zou dan waarschijnlijk wel de ``XF86_SVGA'' server kunnen gebruiken, het is dan mogelijk dat bepaalde modes niet werken. Je zou kunnen uitzoeken of de videokaart wel met een van de commerciële servers werkt (zie Welke servers Zijn er).
Dit is wel de meest gestelde vraag. Het simpelste is het toevoegen van een DefaultColorDepth statement in de XF86Config file, als volgt: (DefaultColorDepth mag natuurlijk ook 8 16 24 of 32 zijn).
Section "Screen" Driver "accel" Device "Miro_22SD" Monitor "Nec_multisync" # Dus na de sectie Screen (ook instellingen voor o.a. DPMS) DefaultColorDepth 16 BlankTime 0 SuspendTime 0 OffTime 0 # maar voor de sectie Display Subsection "Display" Depth 8 Modes "1280x1024" "1024x768" "800x600" "640x480" ViewPort 0 0 Virtual 1280 1024 EndSubsection enz... enz...
Als dit toegevoegd is aan de XF86Config, werkt dit voor elke wijze waarop de Xserver is op te starten (bv. zowel XDM als xinit). Je kunt echter ook op de volgende manieren de kleurdiepte instellen (als je altijd met een standaard kleurdiepte werkt kun je het volgende stukje overslaan).
Als je ``startx'' gebruikt om X op te starten dan kun je een aantal argumenten aan dit scriptje toevoegen. De optie ``--'' (twee - tekens achter elkaar) wil zeggen dat alle argumenten na deze streepjes aan de Xserver doorgegeven moeten worden (voor de mogelijke opties aan de Xserver zie ``man Xserver'').
startx -- -bpp 8 startx -- -bpp 16 startx -- -bpp 24 startx -- -bpp 32
Als je moe wordt van drie keer de ``-'' typen dan kun je ``-bpp kleurdiepte'' toevoegen aan de entry serverargs in ``/usr/X11/bin/startx'' (``startx'' is geen programma, het is een scriptje om X op te starten op het lokale display).
Bijvoorbeeld (``startx'' editen met favoriete editor):
serverargs="-bpp 16 -logo -v -a 1 -t 15 -s 5 -p 1"
Door de optie -logo heb je gelijk een leuke bewegende X logo screensaver in plaats van het standaard zwarte scherm.
Als de Xserver via XDM op je lokale PC wordt gestart, zorg dan dat ``-bpp kleurdiepte'' in de file ``Xservers'' staat.
:0 local /usr/X11R6/bin/X :0 -bpp 16 -logo -v -a 1 -t 15 -s 5 -p 1 #:1 local /usr/X11R6/bin/X -bpp 16 #
Dan ondersteunt je Xserver deze mode niet of je XF86Config is niet helemaal compleet.
Zorg dat voor alle kleurdieptes er een entry in je XF86Config staat. Hier een voorbeeld van een stukje uit mijn XF86Config. Neem deze niet over in je eigen XF86Config, maar kijk of de "Depth" statements er wel allemaal staan in de subsectie "Display" !
Section "Screen" Driver "accel" Device "Miro 22SD" Monitor "NEC MultiSync 4FGe" DefaultColorDepth 16 BlankTime 0 SuspendTime 0 OffTime 0 Subsection "Display" Depth 8 Modes "1024x768" "800x600" "640x480" ViewPort 0 0 Virtual 1280 1024 EndSubsection Subsection "Display" # De Depth statement moet er dus staan voor elke kleurdiepte! Depth 16 Modes "1024x768" "800x600" "640x480" ViewPort 0 0 Virtual 1024 768 EndSubsection Subsection "Display" Depth 32 Modes "800x600" "640x480" ViewPort 0 0 Visual "TrueColor" Virtual 800 600 EndSubsection EndSection
Dit gebeurt vaak met bus muizen (PS/2) in combinatie met gpm (de console mouse server) en X. Zowel gpm als X willen gebruik maken van de muis. Je kunt dit oplossen door een nieuwe versie van gpm te gebruiken en deze als repeater te configureren (dit werkt voor alle typen muizen die GPM ondersteund).
Pas de manier waarop gpm opstart aan op de volgende manier:
if [ -n "$MOUSETYPE" ]; then daemon gpm -R -t $MOUSETYPE else daemon gpm -R fi echo
# /etc/gpm.conf - configuration file for gpm(1) # # If mouse response seems to be to slow, try using # responsiveness=15. append can contain any random arguments to be # appended to the commandline. # # If you edit this file by hand, please be aware it is sourced by # /etc/init.d/gpm and thus all shell meta characters must be # protected from evaluation (i.e. by quoting them). # # This file is used by /etc/init.d/gpm and can be modified by # /usr/sbin/gpmconfig. # device=/dev/ttyS0 responsiveness= type=bare append="-R -l \"a-zA-Z0-9_.:~/\300-\326\330-\366\370-\377\""
nog niet af
nog niet af
Daarna de Xserver configureren voor gpm als mouse server.
[ /etc/X11/XF86Config ]
# ********************************************************************** # Pointer section # ********************************************************************** #Section "Pointer" Protocol "MouseSystems" Device "/dev/gpmdata"
De gpm server gebruikt het device /dev/gpmdata als een FIFO buffer met MouseSystems als protocol.
Nu gpm herstarten en X opstarten met de nieuwe configuratie. Hopelijk bijten GPM en X elkaar nu niet meer.
Virtual resolution (ook wel Virtual Desktop genoemd) is een feature van de Xserver waardoor je met een kleiner scherm met een schijnbaar grote desktop kan werken. Het geeft een venster welke schuivend over het schijnbaar grotere desktop schuift. Hoewel dit met laptops heel handig kan zijn, vinden sommige mensen deze feature op de desktop systeem "irritant".
Je kunt dit uitzetten door de Virtual resolution statement in de ``/etc/X11/XF86Config'' te verwijderen of deze niet groter te maken dan je maximale echte screen size. De statement staat in de sub-sectie ``Display'' in de sectie ``Screen''.
De volgorde van resolutie omschakeling hangt af van de volgorde in de ``XF86Config'' file. Het schijnt dat sommige monitors (welke niet multisync zijn) niet geschikt zijn voor deze resolutie omschakelingen en daardoor kunnen beschadigen ( lees de handleiding van je monitor dus goed door ! ).
door: Bart Hanssens < antares@rtfs.net>
Je kan deze functie uitschakelen door in /etc/X11/XF86Config de hash (#) te verwijderen die voor de optie DontZoom staat (zoek in het "ServerFlags" gedeelte)
Nee niet met de XFree86 Xserver, het is wel mogelijk met sommige Xservers van bijvoorbeeld ``Accelerated X'' om een window in een andere kleurdiepte te draaien. Een niet bevredigende oplossing zou kunnen zijn om de Xserver nog een keer op te starten met een andere kleurdiepte als ander display. zie ook X meerdere keren starten.
Schakelen vanuit X naar een console gaat (in XFree86) als volgt: ctrl-alt-Fx (``Fx'' is functietoets). Om weer terug te komen in X moet je de alt-Fx toets gebruiken, die hoort bij het eerste vrije console (bij mij F7), en dan ben je weer terug in X.
ctrl-alt-backspace . Nu ``kill'' je dus de Xserver. Als er Xclients lopen (ook remote) zullen deze ook stoppen!
De X sessie wordt netjes afgesloten als de laatste client in de .Xsession file wordt gestopt. Meestal is dit de window manager. Als dus de window manager via het window manager menu wordt afgesloten, zal X ook stoppen (tenminste als de window manager de laatste entry in de .Xsession file is).
door: Bart Hanssens < antares@rtfs.net>
Je kan deze functie uitschakelen door in ``/etc/X11/XF86Config'' de hash (#) te verwijderen die voor de optie DontZap staat (zoek in het ``ServerFlags'' gedeelte)
(door Alrik van den Brom)
Bij het switchen van je X-screen naar je console (m.b.v. CTRL-ALT-F[1-6]) en bij het afsluiten van X (hetzij via CTRL-ALT-BS of gewoon via de WM), dus als je weer terug in text-mode komt, kan de volledige karakterset door de war zijn geschopt. Dit uit zich in een niet leesbaar scherm, vol ondefinieerbare tekens. Alle letters, cijfers en andere karakters (zelfs de spaties) zijn omgezet naar rare tekens. Het is zelfs zo dat alle consoles (tty1 t/m tty6) onleesbaar zijn geworden, en niet alleen die vanuit waar je X op hebt gestart. Dit kan weer hersteld worden door in te loggen op een andere console (dat moet dan blind, maar username + password kan je meestal toch blind typen) en dan ``setfont'' in te typen. Dan wordt de juiste karakterset weer geladen, voor alle consoles. Als je X afsluit ipv tijdelijk te switchen naar een console, is inloggen op een andere console uiteraard niet nodig. Een andere mogelijkheid is om `setfont` in het ``startx'' script te zetten. Waarom dit met sommige grafische kaarten gebeurt is mij niet bekend.
(kleine aanvulling door J-W)
Als je het SVGAtextmode programma gebruikt op de linux console kan het waarschijnlijk voldoende zijn om dit programma opnieuw aan te roepen. Uiteraard kun je dit ook in het ``startx'' script zetten. SVGAtexmode roept meestal ook gelijk setfont aan, met het juiste font voor de resolutie waar de console op staat.
Ja, dat is mogelijk. De namen van de lokale server zijn als volgt: :0 :1 :2 (enz...). Als je ``startx'' gebruikt om X te starten kun je deze een argument meegeven welke server het moet zijn:
"startx -- :0" (dit is bij mij nu alt-F7). Switch nu naar een andere console: alt-Fxx . Nu kun je nog een keer een Xserver starten: "startx -- :1" (dit is bij mij nu alt-F8). "startx -- :2" (enz...). enz...
Je kunt nu op dezelfde manier tussen de displays switchen als tussen de consoles.
Als je X op je lokale display opstart met `xdm` dan zou je normaal gesproken de displays aan de Xservers file moeten toevoegen. Als volgt:
# /etc/X11/xdm/Xservers :0 local /usr/X11R6/bin/X vt7 :0 :1 local /usr/X11R6/bin/X vt8 :1
Als je systeem XDM opstart, dan worden nu dus twee Xservers gestart namelijk "jouwmachine:0 en jouwmachine:1".
Normaal gesproken kan dat met het programma ``xon'' gedaan worden, maar ``xon'' maakt gebruik van ``rsh'' en dit is een erg onveilige manier over een ``untrusted'' netwerk zoals het internet. Het ``xon'' programma geeft de variabelen (DISPLAY, XAUTHORITY en XUSERFILESEARCHPATH) door aan het programma welke remote draait. Het ``xon'' programma is vooral handig als je maar enkele applicaties remote wil draaien.
Je kunt ook telnetten naar de remote computer en dan de "DISPLAY" environment variable setten. Als de remote computer gebruik maakt van PAM (Pluggable Authentication Modules), kun je de DISPLAY environment variable door de modules ``pam_env.so'' te gebruiken. Dit doe je als volgt:
In ``/etc/pam.d/login'' moet de volgende regel staan
session required /lib/security/pam_env.so
Vervolgens zet je in de ``/etc/security/pam_env.conf'' file dit neer:
# Set the REMOTEHOST variable for any hosts that are remote, default # to "localhost" rather than not being set at all REMOTEHOST DEFAULT=localhost OVERRIDE=@{PAM_RHOST} # # Set the DISPLAY variable if it seems reasonable DISPLAY DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY}
Nu zal bij een binnenkomende telnet connectie de juiste DISPLAY environment geset worden, zodat men ook remote X applicaties kan draaien.
Waarschijnlijk zal de Xserver een "permission denied" zeggen als de Xclient het remote display wil openen. Het voert te ver om de security van X uit te leggen; zie daarvoor de manual page van Xsecurity (1).
Een van de makkelijkere manieren om veilig te werken met X is XDM te gebruiken om `xauth` aan te sturen. Het gebruik van "xhost +hostname" is erg onveilig op een niet te vertrouwen netwerk.
Een beter alternatief is het programma `ssh` ("Secure Shell"). Dit programma geeft ook de juiste variabelen door aan de applicatie en kan ook X11 connecties "tunnelen" bijvoorbeeld door op te starten met `ssh-agent startx`. Meer informatie over "Secure Shell" kun je vinden op de site van de SSH organisatie.
Meer informatie over het remote draaien van X applicaties is te vinden op de site van Vincent Zweije: How to Run Remote X Applications
Als je X sessies over de modem (of een ander medium met lage bandbreedte) wil starten, kan het handig zijn om "LBX" (Low Bandwidth X) te gebruiken. LBX doet onder andere aan compressie van het Xprotocol waardoor de verbinding een flink stuk zuiniger met de beschikbare bandbreedte omgaat.
(aanvulling door: Bart Hanssens < antares@rtfs.net>)
Meer informatie vind je in de LBX Mini-HOWTO. Een alternatief is het programma dxpc. Het verschil is dat LBX al standaard in de X server zit, terwijl dxpc een apart stukje software is. Dxpc is iets moeilijker te configureren, maar haalt betere resultaten dan LBX. Zie: http://ccwf.cc.utexas.edu/~zvonler/dxpc/.
Waarschijnlijk heb je het X Window System met ``X'' opgestart. Een X sessie start je met het script ``startx'' of via ``xdm''. Als je een grijs scherm met een ``X cursor'' op het scherm krijgt, dan ben je in ieder geval zeker dat je Xserver werkt ;^).
Dit is tevens een bewijs van de stelling dat X zelf geen GUI is.