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 rendre open et switchto 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:
     chmod 755 runvc
     mv runvc /usr/local/bin
    
    Maintenant vous pouvez utiliser la commande runvc pour exécuter Quake. Continuez à utiliser la ligne de commande qui vous sert habituellement pour lancer votre partie, mais insérez runvc au début:
     runvc ./quake2 +set vid_ref gl +connect quake.foo.com
    
    Vous basculerez automatiquement sur une console virtuelle, lancerez Quake puis retournerez sous X lorsque vous sortirez de Quake!

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.3dfxgldans 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