Les HOWTO Linux...
Page suivante - Page précédente - Table des matières
6. Trucs et Astuces
6.1 Exécution de jeux X et GL sans setuid
Si vous exécutez uniquement les versions X et GL de Quake, QuakeWorld ou Quake
II, vous n'aurez pas besoin de les lancer avec les permission root. SVGA est le
seul mode qui requiert d'être lancé par root. Les versions X ont simplement
besoin d'avoir accès à /dev/dsp
, le fichier périphérique son. les
versions GL ont de plus besoin d'avoir accès à la carte 3Dfx par
/dev/dsp
.
/dev/dsp
doit être lisible et modifiable par Quake. La plupart des
distributions définissent les permissions à 662 (rw-rw--w-
) par défaut.
La solution la plus simple est de faire un chmod 666 /dev/dsp
. Sur la
plupart des systèmes, la possibilité de lire depuis un fichier périphérique son
ne pose pas de problème de sécurité majeur. Si cette approche n'est pas
acceptable pour votre système, créez un groupe propriétaire de /dev/dsp
et rendez les joueurs de Quake membre de ce groupe.
Vous aurez besoin du driver /dev/3dfx
de la page glide de Daryll
Strauss (
http://glide.xxedgexx.com/3DfxRPMS.html) pour lancer les anciennes
applications glide (like GLQuake) sans être root. Téléchargez le paquetage
Device3Dfx.xxx.rpm
et installez-le en suivant les instructions de la
page web. Après l'installation du driver, vérifiez que les permissions de
/dev/3dfx
sont à 666 (chmod 666 /dev/3dfx
).
Lorsque /dev/dsp
et /dev/3dfx
seront correctement paramétrés,
vous pourrez retirer le bit setuid de vos exécutables Quake/QW/Q2. Faites
simplement (en tant que root) chmod 0755 XXXXX
, où XXXXX représente
glquake
, quake.x11
, ou quake2
.
Si vous avez joué en tant que root avant de faire ces modifications, beaucoup de vos fichiers Quake (comme les sauvegardes) peuvent appartenir à root et être inaccessibles à un utilisateur normal, aussi souvenez-vous de modifier le propriétaire de ces fichiers avant de jouer en tant que simple utilisateur.
6.2 Lancement des jeux SVGA et GL depuis X **
Les clients Quakeworld et Quake II GLX sont des applications natives X, mais
depuis qu'elles utilisent Mesa plutôt que le mini-driver 3Dfx, elles sont plus
lentes que les versions lib3dfxgl.so
. Pour cette raison, vous pouvez
préférer encore lancer ces jeux depuis X plutôt que d'utiliser les clients GLX.
Ce qui suit est tiré de la Gazette LINUX n°20, "Truc" par Joey Hess ( joey@kite.ml.org). L'original de ce document se trouve sur http://www.ssc.com/lg/issue20/lg_tips20.php#squake
Oui, il est possible d'exécuter les jeux Quake depuis X en tant que root, mais cette option est inconvenante, et vous courez en plus le risque d'un plantage de Quake laissant la console sans réponse. Avec un peu de travail, vous pouvez donner la possibilité à un utilisateur normal de lancer Quake SVGA et GL depuis X ET de revenir automatiquement sous X lorsque le programme se termine, que son arrêt soit normal ou non.
Nota: lorsque je précise "Quake" dans le texte ci-dessus, je veux en fait dire "quake, glquake squake, qwcl, glqwcl, qwcl.x11 ou quake2".
- Premièrement, vous aurez besoin du paquetage open(1) de Jon
Tombs. C'est un lot de très petits programmes qui vous permettent de passer
d'une console virtuelle à l'autre et de lancer des programmes sur chacune
d'elles. Téléchargez open depuis
http://sunsite.unc.edu/pub/Linux/utils/console/. Vous ne devriez pas
avoir grand chose de plus à faire que
make;make install
pour le compiler et l'installer. Une fois l'installation achevée, vous devrez rendreopen
etswitchto
exécutables "setuid root". Pour cela:cd /usr/local/bin chown root open switchto chmod 4755 open switchto
- Maintenant, enregistrez le code suivant dans un fichier appelé
getvc.c
:/* getvc.c * Affiche le numéro de la CV courante sur la sortie standard. * Une grande partie de ce code a été inspirée du programme open, * et ce code est basé sur GPL * * Joey Hess, Fri Apr 4 14:58:50 EST 1997 */ #include <sys/vt.h> #include <fcntl.h> main () { int fd = 0; struct vt_stat vt; if ((fd = open("/dev/console",O_WRONLY,0)) < 0) { perror("Failed to open /dev/console\n"); return(2); } if (ioctl(fd, VT_GETSTATE, &vt) < 0) { perror("can't get VTstate\n"); close(fd); return(4); } printf("%d\n",vt.v_active); } /* End of getvc.c */
Compilez et installez quelque part dans votre$PATH
:gcc getvc.c -o getvc strip getvc mv getvc /usr/local/bin
- Maintenant créons un script appelé
runvc
: votre$PATH
:#!/bin/sh # Lance quelque chose sur une CV, depuis X, et retourne sous X # lorsque c'est fait. # GPL Joey Hess, Thu, 10 Jul 1997 23:27:08 -0400 exec open -s -- sh -c "$* ; chvt `getvc`"
Rendez-le exécutable et mettez-le quelque part dans votre$PATH
:
Maintenant vous pouvez utiliser la commandechmod 755 runvc mv runvc /usr/local/bin
runvc
pour exécuter Quake. Continuez à utiliser la ligne de commande qui vous sert habituellement pour lancer votre partie, mais insérezrunvc
au début:
Vous basculerez automatiquement sur une console virtuelle, lancerez Quake puis retournerez sous X lorsque vous sortirez de Quake!runvc ./quake2 +set vid_ref gl +connect quake.foo.com
6.3 Conserver la souris à l'intérieur de la fenêtre sous X
Extrait du fichier readme.linux
Quake II:
Par défaut, la souris ne sera pas confinée dans la fenêtre de Quake2. Pour obliger Quake2 à capturer la souris, sélectionnez 'Windowed Mouse' sur le menu vidéo, ou tapez '_windowed_mouse 0' sur la console. Faites l'inverse pour la relâcher. Vous pouvez définir des raccourcis clavier pour capturer et relâcher la souris dans la console, de cette façon: bind i "_windowed_mouse 1" bind o "_windowed_mouse 0" Alors "i" activera la capture de la souris et "o" la relâchera.
6.4 Le paramétrage "gonflant" 3Dfx fonctionne également sous Linux
Vous pouvez avoir vu ou entendu parler de certain moyens de "gonfler" les performances d'OpenGL pour Quake par un paramètrage spécial des variables d'environnement. Ces variables sont également valides sous Linux. Vous les définissez simplement de façon légèrement différente. Si un guide "gonflant" pour Windows/DOS vous indique de faire:
SET SST_GRXCLK=59
Sous Linux, réalisez-le de cette manière:
export SST_GRXCLK=59
6.5 Le navigateur de serveur du pauvre
Joe S. ( jszabo@eden.rutgers.edu) suggère:
Une astuce que j'utilise avec qstat:
Je créer un fichier de mes serveurs favoris, puis je fais:
qstat -f /C/quake2/file.txt | less
Je presse Ctrl z pour arrêter, puis je copie l'adresse IP ou le nom de l'hôte avec gpm dans une ligne de commande du genre:
./quake2 +connect expert.eqclans.com
Alors je peux utiliser fg (Ndt: "fg" pour "foreground", commande shell qui a
pour effet de remettre un programme au premier plan) pour revenir sur ma liste
ultérieurement... 6.6 Utilisation de lib3dfxgl.so
pour Quake I
**
Vous pouvez utiliser le mini-driver 3Dfx (lib3dfxgl.so
) de Quakeworld
ou Quake II avec glquake
également. Copiez simplement le script
glqwcl.3dfxgl
ou quake2.3dfxgl
dans un nouveau fichier, appelé
glquake.3dfxgl
. Editez alors le script glquake.3dfxgl
pour
qu'il lance glquake
au lieu de glqwcl
. Les mêmes restrictions
sur l'exécution en tant que root s'appliquent ici, de même que les différences
entre une exécution sous glibc et libc5.Voyez les section
Quakeworld ou
Quake II pour de plus amples
informations sur lib3dfxgl.so
.
Page suivante - Page précédente - Table des matières