Om du endast kör X och GL versionerna av Quake, QuakeWolrd eller Quake II,
behöver du inte köra dem med rooträttigheter. SVGA är det enda läget som
måste köras som root. X versionerna behöver endast tillgång till
/dev/dsp
, ljudenheten. GL versionerna behöver tillgång till
både 3Dfx kortet och /dev/dsp
.
/dev/dsp
måste vara läs och skrivbar av Quake. De flesta
distributioner ger den rättigheterna 662 (rw-rw--w- /dev/dsp
.
På de flesta system är möjligheten att läsa från ljudenheten inget allvarligt
säkerhetsproblem. Om den här lösningen inte är acceptabel för ditt system,
skapa en grupp som äger
/dev/dsp
och låt dina Quakespelare tillhöra den gruppen.
Du behöver drivrutinen för /dev/3dfx
som kan hämtas från
Daryll Strauss' glide sida
(
http://glide.xxedgexx.com/3DfxRPMS.html) för att köra glide
applicationer (som GLQuake) utan rooträttigheter. Ladda ner Device3Dfx.xxx.rpm
paketet och installera enligt instruktionerna på webbsidan.
Efter att du installerat drivrutinen, se till att /dev/3dfx
har
rättigheterna 666 (chmod 666 /dev/3dfx
).
När /dev/dsp
och /dev/3dfx
är korrekt konfigurerade, kan du
ta bort setuidbitten från dina Quake/QW/Q2 binärer. Ge bara (som root)
kommandot chmod 0755 XXXXX
, där XXXXX antingen är glquake
,
quake.x11
, eller quake2
.
Om du har spelat som root innan du gjort dessa ändringar, kommer många av dina Quakefiler (t.ex. sparade spel) vara ägda av root och inte vara åtkomliga för vanliga användare, så kom ihåg att ändra filernas ägare innan du försöker spela utan att vara root.
GLX Quakeworld och Quake II klienterna är rena X applikationer,
men eftersom den använder Mesa istället för 3Dfx mini-drivrutinen,
är de långsammare än lib3dfxgl.so
versionerna. Därför
kanske du föredrar att starta så här från X istället för att använda GLX klienterna.
Följande är baserat på ett "2 cent tip" av Joey Hess ( joey@kite.ml.org) från Linux Gazette. Originalet finns på http://www.ssc.com/lg/issue20/lg_tips20.html#squake
Ja, det är möjligt att köra Quake spelen från X om du är root, men sådant beteende är styggt, och du riskerar att krasha Quake och tappa konsolen. Med lite arbete kan du göra det möjligt för en vanlig användare att köra SVGA och GL Quake från X OCH automatiskt växla tillbaka till X när programmet avslutas, vare sig det avslutas normalt eller ej.
Notis: när jag säger "Quake" i texten nedan, menar jag egentligen "quake, glquake, squake, qwcl, glqwcl, qwcl.x11 eller quake2".
make;make install
för att
kompilera och installera det. När det väl är installerat,
måste du göra open
och switchto
binärerna setuid root.
Gör såhär:
cd /usr/local/bin
chown root open switchto
chmod 4755 open switchto
getvc.c
:
/* getvc.c * Prints the number of the current VC to stdout. Most of this code * was ripped from the open program, and this code is GPL'd * * 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 */
$PATH
:
gcc getvc.c -o getvc
strip getvc
mv getvc /usr/local/bin
runvc
:
#!/bin/sh # Run something on a VC, from X, and switch back to X when done. # GPL Joey Hess, Thu, 10 Jul 1997 23:27:08 -0400 exec open -s -- sh -c "$* ; chvt `getvc`"
$PATH
:
chmod 755 runvc
mv runvc /usr/local/bin
Nu kan du använda runvc
kommandot för att starta Quake.
Använd din vanliga kommandorad men lägg till ett runvc
i början:
runvc ./quake2 +set vid_ref gl +connect quake.foo.com
Du kommer automatiskt att växla till en VC, köra Quake och sedan växla
tillbaka till X när Quake är färdigt.
Från readme.linux
filen i Quake II:
Musen kommer inte automatiskt att 'knytas' till Quake2 fönstret. För att få Quake2 att fånga musen, välj 'Windowed Mouse' från video menyn, eller skriv '_windowed_mouse 0' vid konsolen. För att göra motsatsen, släppa musen, kan du binda tangenterna till att fånga och släppa musen i konsolen så här: bind i "_windowed_mouse 1" bind o "_windowed_mouse 0" Sen kommer "i" att fånga musen och "o" kommer att släppa den.
Du kanske har sett eller hört talas om olika sätt att "tweaka" Quakes OpenGL beteende genom att sätta olika omgivningsvariabler. Dessa variabler fungerar lika bra under Linux. Du måste bara sätta dem en aning annorlunda. Om en Dos/Windows "tweak" guide säger:
SET SST_GRXCLK=59
Får du göra så här under Linux:
export SST_GRXCLK=59
Joe S. ( jszabo@eden.rutgers.edu) föreslår:
ett trick jag använder med qstat:
Jag skapar en fil med mina favorit servrar, sedan skriver jag
qstat -f /C/quake2/file.txt | less
tryck Ctrl-z för att suspendera, kopiera sedan ip adressen eller värdnamnet med gpm till en kommandorad så här:
./quake2 +connect expert.eqclans.com
Sen kan jag använda fg för att gå tillbaka till listan senare...
lib3dfxgl.so
med Quake I
**Du kan använda 3Dfx mini-drivrutinen (lib3dfxgl.so
) från
Quakeworld eller Quake II även med glquake
.
Kopiera bara glqwcl.3dfxgl
eller quake2.3dfxgl
skripten till en ny fil, låt säga glquake.3dfxgl
. Editera sedan
glquake.3dfxgl
skriptet so det kör glquake
istället för
glqwcl
.
Samma restriktioner för att köra som root gäller här, liksom
skillnaderna mellan att köra under glibc och libc5.
Se
Quakeworld eller
Quake II sektionerna för mera information om
lib3dfxgl.so
.