\documentclass[letterpaper,english]{article}
\nonstopmode
\akai
\usepackage{linuxdoc-sgml}
\usepackage{qwertz}
\usepackage{url}
\usepackage[latin1]{inputenc}
\usepackage{t1enc}
\usepackage[english]{babel}
\usepackage{epsfig}
\usepackage{null}
\def\addbibtoc{
\addcontentsline{toc}{section}{\numberline{\mbox{}}\relax\bibname}
}%end-preamble
\setcounter{page}{1}
\title{3D Accelerated With Nvidia HOWTO}
\author{Author: Nvidia Support Team {\ttfamily www.nvidia.com}\\ 
ÒëÕß: \onlynameurl{³ÂÃô½£}  {\ttfamily expns@yahoo.com}}
\date{·­ÒëÈÕÆÚ: 2002Äê11ÔÂ1ÈÕ reversion 0.23 }
\abstract{´ËÎÄµµÎªÄãÌá¹©Ò»¸öÔÚLinux×÷ÒµÏµÍ³ÉÏÉè¶¨ Nvidia 3D¼ÓËÙ¿¨µÄ²Î¿¼.}


\begin{document}
\maketitle
\tableofcontents

\section{ÉùÃ÷}

Èç¹û²ÉÓÃÁË´ËÎÄµµµ±ÖÐµÄ·½·¨¶øµ¼ÖÂÄãµÄÈÎºÎÔÉÊ§(Ó²ÌåËð»µ,º¯Ê½¿â»ìÂÒµÈ),
×÷ÕßÎÞÈ¨³Ðµ£ÈÎºÎÔðÈÎ.

ÔÚ¿ªÊ¼Éè¶¨Ö®Ç°½ô¼Ç:
\begin{itemize}
\item Äã²»Ò»¶¨·ÇµÃ°´´ËÎÄµµÀ´Éè¶¨.
\item Äã²»±Ø¶Ô´ËÎÄµµ±¨ÒÔÌ«´óµÄÆÚÍû.
\item Ò»ÇÐÒÔ "Just for fun" ÎªÔ­Ôò. 
\end{itemize}



\subsection{°æÈ¨}

Copyright (C) 2002, by Nvidia

This document is free; you can redistribute it and/or modify it under the terms of the 
GNU General Public License as published by the Free Software Foundation; 
either version 2 of the License, or (at your option) any later version. 

This document is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 
You can get a copy of the GNU GPL 
\onlynameurl{here}




\section{»·¾³}


\subsection{Ó²Ìå»·¾³}

ÄãÖÁÉÙÓÐÒ»¿é Nvidia ÏµÁÐ3D¼ÓËÙ¿¨ºÍÖ§³ÖËüµÄÄ¸°å,ÏÂÃæÊÇËùÓÐLinuxÖ§³ÖµÄ Nvidia ÏµÁÐ3D¼ÓËÙ¿¨:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
TNT 
TNT2/TNT2 Pro 
TNT2 Ultra 
TNT2 M64/M64 Pro 
Vanta/Vanta LT 
Aladdin TNT2 
GeForce 256 
GeForce2 Pro 
GeForce2 GTS 
GeForce2 MX/MX 400/MX 200/MX 100 
GeForce2 Go 
GeForce2 Ti 
GeForce2 Ultra 
GeForce3 
GeForce3 Ti 200/Ti 500 
GeForce4 Ti 4200/4400/4600  
GeForce4 Mx 420/440/460 
GeForce4 Go 
Quadro 
Quadro DCC 
Quadro2 MXR 
Quadro2 Pro 
Quadro2 EX 
Quadro2 Go 
Quadro4 XGL 550/700/750/900 
Quadro4 NVS 200/400 
nForce 220D/420/420D Integrated GPU
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}




ÒÔÏÂÊÇ²»ÔÚÖ§³ÖÖ®ÁÐµÄ ·¶ÔóÁúXGL(Quadro4) ÏµÁÐµÄÐÍºÅ(AGP8X):
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
NVIDIA Quadro4  980 XGL
NVIDIA Quadro4  580 XGL
NVIDIA Quadro4  380 XGL                
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}



\subsection{ÈíÌå»·¾³}

\begin{itemize}
\item °æ±¾Îª 2.4.0 ÒÔÉÏµÄºËÐÄ. 
\item XFree86°æ±¾Îª4.2.0»ò¸üÐÂ.
\item °æ±¾Îª 3.0 ÒÔÉÏµÄ Gcc
\end{itemize}



\section{ÏÂÔØÇý¶¯³ÌÊ½}


\subsection{ÏÂÔØ GLX Çý¶¯³ÌÊ½}

Äã¿ÉÒÔÏÂÔØµÄ³ÌÊ½°ü¸ñÊ½ÓÐ: rpm , tar, srpm. ÇëÒÀ¾ÝÄãµÄLinux ·¢ÐÐ°æÀ´ÏÂÔØ:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
GLX RPM                http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_GLX-1.0-3123.i386.rpm
GLX SOURCE RPM         http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_GLX-1.0-3123.src.rpm
GLX Tar File           http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_GLX-1.0-3123.tar.gz
GLX RPM for SuSE 7.2   http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_GLX-1.0-3123.suse72.i386.rpm
GLX RPM for SuSE 7.3   http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_GLX-1.0-3123.suse73.i386.rpm
GLX RPM for SuSE 8.0   http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_GLX-1.0-3123.suse80.i386.rpm
GLX RPM for SuSE 8.1   http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_GLX-1.0-3123.suse81.i586.rpm
FTP1                   ftp://download.nvidia.com/XFree86_40/1.0-3123
FTP2                   ftp://download1.nvidia.com/XFree86_40/1.0-3123
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}





\subsection{ÏÂÔØºËÐÄÇý¶¯³ÌÊ½}


\subsubsection{Redhat Linux}

Çë×¢ÒâRedhat²»Í¬°æ±¾Ö®¼äÊÇÓÐ²î±ðµÄ, ¼È±ãËüÃÇÉý¼¶³ÉÏàÍ¬µÄºËÐÄ.
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
RedHat 7.3 Éý¼¶ÖÁ 2.4.18-10 UP i386 ¼Ü¹¹         http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.rh73up_2.4.18_10.i386.rpm

RedHat 7.3 Éý¼¶ÖÁ 2.4.18-10 UP i686 ¼Ü¹¹         http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.rh73up_2.4.18_10.i686.rpm

RedHat 7.3 Éý¼¶ÖÁ 2.4.18-10 ¶àCPU i686 ¼Ü¹¹      http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.rh73smp_2.4.18_10.i686.rpm

RedHat 7.3 Éý¼¶ÖÁ 2.4.18-10 ¶àCPU i586 ¼Ü¹¹      http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.rh73smp_2.4.18_10.i586.rpm

RedHat 7.3 Éý¼¶ÖÁ 2.4.18-10 Enterprise i686 ¼Ü¹¹ http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.rh73smp_2.4.18_10.athlon.rpm

RedHat 7.3 ¶àCPU i686 ¼Ü¹¹                       http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.rh73smp.i686.rpm

RedHat 7.3 ¶àCPU i586 ¼Ü¹¹                       http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.rh73smp.i586.rpm

RedHat 7.3 Enterprise i686 ¼Ü¹¹                  http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.rh73bigmem.i686.rpm

RedHat 7.3 UP Athlon ¼Ü¹¹                        http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.rh73up.athlon.rpm 

RedHat 7.3 ¶àCPU Athlon ¼Ü¹¹                     http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.rh73smp.athlon.rpm 

RedHat 7.2 UP i386 ¼Ü¹¹                          http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.rh72up.i386.rpm

RedHat 7.2 UP i686 ¼Ü¹¹                          http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.rh72up.i686.rpm

RedHat 7.2 Enterprise i686 ¼Ü¹¹                  http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.rh72up.athlon.rpm 
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}





\subsubsection{Mandrake Linux}



\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
Mandrake 8.2 UP i586 ¼Ü¹¹                        http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.mdk82up.i586.rpm
Mandrake 8.2 ¶àCPUi586 ¼Ü¹¹                      http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.mdk82smp.i586.rpm
Mandrake 8.2 Enterprise i586 ¼Ü¹¹                http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.mdk82enterprise.i586.rpm
Mandrake 8.2 Secure i586 ¼Ü¹¹                    http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.mdk82secure.i586.rpm
Mandrake 8.1 UP i386 ¼Ü¹¹                        http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.mdk81up.i386.rpm
Mandrake 8.1 UP i686 ¼Ü¹¹                        http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.mdk81up.i686.rpm 
Mandrake 8.1 ¶àCPU i686 ¼Ü¹¹                     http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.mdk81smp.i686.rpm
Mandrake 8.1 Enterprise i686 ¼Ü¹¹                http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.mdk81enterprise.i686.rpm 
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}
 




\subsubsection{SuSE Linux}

\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
SuSE 8.1                                       http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.suse81.i586.rpm
SuSE 8.0                                       http://download.nvidia.com/XFree86_40/1.0-3123/NVIDIA_kernel-1.0-3123.suse80.i386.rpm
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}





\subsubsection{Ô´´úÂë}

Kernel Source RPM  http://download.nvidia.com/XFree86\_40/1.0-3123/NVIDIA\_kernel-1.0-3123.src.rpm   \\ 
 Kernel Tar Ñ¹Ëõµµ   http://download.nvidia.com/XFree86\_40/1.0-3123/NVIDIA\_kernel-1.0-3123.tar.gz




\section{°²×°}


\subsection{¿ìËÙ°²×°}

ÏÂÔØÏàÊÊµÄ°²×°°ü, È»ááÖ´ÐÐÀàËÆÏÂÃæµÄÖ¸Áî:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
 rpm -ivh NVIDIA_kernel.i386.rpm
 rpm -ivh NVIDIA_GLX.i386.rpm
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}



\subsection{Éý¼¶}

ÎÒÃÇ²»ÔÞ³ÉÖ±½ÓÉý¼¶, Çë°´ÈçÏÂ²½ÖèÖ´ÐÐ:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
rpm -e NVIDIA_kernel.i386
rpm -e NVIDIA_GLX
rpm -i NVIDIA_GLX.i386.rpm
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}





\subsection{Ê¹ÓÃSRPM°²×°°ü}

ÇëÖ´ÐÐÀàËÆÒÔÏÂµÄÖ¸Áî:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
rpm --rebuild NVIDIA_kernel.src.rpm
rpm -ivh /ÄãµÄNVIDIA_kernel.i386.rpm´æ·ÅÎ»ÖÃ
rpm -ivh NVIDIA_GLX.i386.rpm
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


×¢Òâ: RedHat Linux µÄSRPM´æ·ÅÎ»ÖÃÔÚ: /usr/src/redhat/RPMS/i386/NVIDIA\_kernel.i386.rpm




\subsection{»ùì¶tarµÄ°²×°}

²½ÖèÈçÏÂ:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
tar xvzf NVIDIA_kernel.tar.gz
tar xvzf NVIDIA_GLX.tar.gz
cd NVIDIA_kernel
make install
cd ../NVIDIA_GLX
make install
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


×¢Òâ: Ö´ÐÐ make instll Ê±,³ÌÊ½½«×Ô¶¯ÒÆ³ý¾ÉµÄÇý¶¯³ÌÊ½.




\section{Éè¶¨ XF86Config-4}

×¢: ´ËÉè¶¨»ùì¶ XFree86 µÄ 4.0 »ò¸ü¸ßµÄ°æ±¾.

Èç¹ûXF86Config-4Éè¶¨µµÖÐ¼º¾­ÓÐÁË NVIDIA ÏÔÊ¾¿¨µÄÃèÊö,
ÇëÕÕÏÂÁÐ²½ÖèÖ´ÐÐ:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
½« Dirver "nv" »ò Driver "vesa" ±ä¸üÎª Driver "nvidia"
ÔÚÄ£×é²¿·ÝÒÆ³ý Load  "dri" ºÍ Load  "GLcore" ²¢ÇÒ¼ÓÈë Load "glx"
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


ÒÔÏÂÊÇ Nvidia 3D ¼ÓËÙ¿¨µÄÇý¶¯³ÌÊ½Ñ¡Ïî

ÃèÊö·½·¨Îª Option"NvAGP" "ÕûÊýÖµ". 

¹Øì¶"ÕûÊýÖµ"µÄ×÷ÓÃ:
\begin{itemize}
\item 0  AGP¹¦ÄÜÊ§Ð§ 
\item 1  Ê¹ÓÃ¿¨×ÔÉíµÄAGP¼ÓËÙ
\item 2  Ê¹ÓÃ AGPGART ¼ÓËÙ
\item 3  Ê¹ÓÃÈÎºÎ¿ÉÓÃµÄ AGP ¼ÓËÙ
\end{itemize}
 

ÃèÊö·½·¨Îª Option "NoLogo" "²¼¶û"
ËüÓÃÀ´¾ö¶¨ Logo µÄ¿ªÆôºÍ¹Ø±Õ.



Option "NoRenderAccel" "²¼¶û" . ËüÓÃÀ´¾ö¶¨ÐÎäÖÈ¾µÄ¼ÓËÙ¿ªÆôºÍ¹Ø±Õ.



Option "NoRenderExtension" "²¼¶û" ÓÃì¶ 8 depth µÄäÖÈ¾.


\section{RedHat8.0}

ÏÂÔØ:NVIDIA\_kernel-1.0-3123.src.rpm 

ÏÂÔØ:NVIDIA\_GLX-1.0-3123.i386.rpm

È·¶¨×÷ÒµÏµÍ³ÉÏ°²×°ÁË¿ª·¢ÈíÌå°ü, ²¢ÇÒÄãÓÐ½øÐÐ¹ýÒ»´ÎºËÐÄµÄ±àÒë, Èç¹ûÄãÔÚ±àÒëÖ®áá
Ö´ÐÐÁË "make mrproper" ÄãµÃÔÙÖ´ÐÐÒ»´ÎºËÐÄµÄ±àÒë.

Ö´ÐÐ"rpmbuild --rebuild NVIDIA\_kernel-1.0-3123.src.rpm" 
½á¹ûÎª:"/usr/src/redhat/RPMS/i386/NVIDIA\_kernel-1.0-3123.i386.rpm"

°²×°:ºËÐÄÇý¶¯³ÌÊ½ "rpm -ivh /usr/src/redhat/RPMS/i386/NVIDIA\_kernel-1.0-3123.i386.rpm"

°²×°GLX:"rpm -ivh NVIDIA\_GLX-1.0-3123.i386.rpm"

Éè¶¨XFree86Config, ºÍ¸Õ²ÅÌáµ½µÄÒ»Ñù


\subsection{ºËÐÄ kernel-2.4.18-17.8.0}

×¢Òâ:ÕâÐ©²½ÖèÊÇ»ùì¶kernel-2.4.18-17.8.0À´Éè¶¨µÄ.

ÏÂÔØ NVIDIA\_kernel-1.0-3123.src.rpm

ÏÂÔØ NVIDIA\_GLX-1.0-3123.i386.rpm

½« /etc/inittab Éè¶¨µµÖÐµÄ id:5:initdefault: ±ä¸üÎª id:3:initdefault:
×¢Òâ: Õâ½«ÔÚÏÂÒ»´ÎÆô¶¯Ê±¿ªÆô¶àÓÃ»§Ä£Ê½.

±¸·ÝÇý¶¯³ÌÊ½:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
"cd /usr/src/redhat/RPMS/i386"
"mv NVIDIA_kernel-1.0-3123.i386.rpm NVIDIA_kernel-1.0-3123.i386.rpm.old"
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}

½«ºËÐÄÉý¼¶Îªkernel-2.4.18-17.8.0 ²¢Í¬Ê±Éý¼¶Ô´´úÂëÎª kernel-source-2.4.18-17.8.0 

Ê¹ÓÃÐÂºËÐÄÖØÐÂÆô¶¯»úÆ÷. ÓÃ root ÕÊºÅµÇÂ¼.

ÒÆ³ýÀÏµÄÇý¶¯³ÌÊ½:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
rpm -e NVIDIA_GLX-1.0-3123
rpm -e NVIDIA_kernel-1.0-3123
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}

Ö´ÐÐ "rpmbuild --rebuild NVIDIA\_kernel-1.0-3123.src.rpm" Ëü½«ÒÀ¾ÝÐÂµÄºËÐÄ±àÒëÇý¶¯³ÌÊ½.
½á¹ûÎª: "/usr/src/redhat/RPMS/i386/NVIDIA\_kernel-1.0-3123.i386.rpm"

°²×°Çý¶¯³ÌÊ½: 
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
"rpm -ivh /usr/src/redhat/RPMS/i386/NVIDIA_kernel-1.0-3123.i386.rpm"
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}




°²×°GLXÇý¶¯³ÌÊ½
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
"rpm -ivh NVIDIA_GLX-1.0-3123.i386.rpm"
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


°´ÕÕÉÏÃæµÄ·½·¨Éè¶¨XF86Config-4

Ö´ÐÐ "startx" .

½« /etc/inittab Éè¶¨µµÖÐµÄ id:3:initdefault: ±ä¸üÎª id:5:initdefault:



×îáá,ÇëÏíÊÜNvidia´ø¸øÄãµÄ×¿Ô½ÐÔÄÜ°É!


\section{Éè¶¨TWINVIEW}

TWINVIEW¿ÉÒÔÊ¹ÓÃÄãÍ¬Ê±Á¬½ÓÁ½¸öÓ¨Ä».
ÒÔÏÂÐÍºÅµÄÐ¾Æ¬Ö§Ô®TWINVIEW, µ±È»,ÄãµÄ3D¼ÓËÙ¿¨ÉÏ»¹µÃÓÐÁ½¸ö½Ó¿Ú.
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
GeForce2 MX, 
GeForce2 Go
·¶ÔóÁú2 (Quadro2) MXR
·¶ÔóÁú2 (Quadro2) Go
GeForce4 GPUs.
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}



\subsection{Éè¶¨XF86Config }

ÔÚÄãµÄXF86ConfigÉè¶¨µµÖÐ±ØÐèÓÐÈçÏÂµÄÃèÊö:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
Option "TwinView"
Option "SecondMonitorHorizSync"     "<hsync range(s)>"
Option "SecondMonitorVertRefresh"   "<vrefresh range(s)>"
Option "MetaModes"                  "<list of metamodes>"
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


Äã¿ÉÄÜÓÃµ½ÒÔÏÂµÄ Options, ËüÃÇ²»ÊÇ±ØÐèµÄ:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
Option "TwinViewOrientation"        "<relationship of head 1 to head 0>"
Option "ConnectedMonitor"           "<list of connected display devices>"
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


ËüÃÇµÄº¬Òå:
\begin{itemize}
\item  TwinViwe ¿ªÆô¹¦ÄÜ, Ã»ÓÐÕâ¸öÃèÊö,ËùÓÐÓÐ¹ØTwinViweµÄOptins»á±»ºöÂÔ.
\item SecondMonitorHorizSync, SecondMonitorVertRefresh ËüÃÇÇ¿ÖÆµÚ¶þ¸öÓ¨Ä»Ê¹ÓÃÕâÐ©Éè¶¨.
ÔÚ Monitor ²¿·ÝÓÐÏàÓ¦µÄÃèÊö¿ÉÒÔ²Î¿¼,×¢Òâ:Çë²»Òª²»¼ÓÈÎºÎÐÞ¸ÄµØ¸´ÖÆÊýÖµ,ÕâÑù×ö¿ÉÄÜ¶ÔÓ²Ìå²úÉúËð»µ.
\item MetaModes Ä£Ê½Éè¶¨ Èç Option "MetaModes" "1280x1024,1280x1024; 1024x768,1024x768"
\item TwinViewOrientation Éè¶¨Ïà¶Ôì¶µÚÒ»¸öÓ¨Ä»µÄÎ»ÖÃ.Èç: 
          
"RightOf"  (the default)
"LeftOf"
"Above"
"Below"
"Clone"
ConnectedMonitor Á¬½ÓÀàÐÍ, Èç Option "ConnectedMonitor" "CRT, DFP"



\end{itemize}









\section{¹ÊÕÏÅÅ³ý}


\subsection{ÎÒÒªÈçºÎµÃµ½¹ÊÕÏÐÅÏ¢µÄ¾ßÌåº¬Òå?}

Ò»°ãÀ´Ëµ,ÕâÐ©¶¼ÔÚ /var/lov/XFree86.*.log ÈÕÖ¾µ±ÖÐ.
"(WW)"´ú±í¾¯Ñ¶ "(EE)"´ú±í´íÎó


\subsection{²»ÄÜÖ´ÐÐ startx, ÈÕÖ¾µ±ÖÐÓÐÕâÑùµÄÑ¶Ï¢:"(EE) NVIDIA(0): Failed to initialize the NVdriver kernel module!"}

ÕâÊÇºËÐÄÄ£×éµÄÎÊÌâ, ÇëÏÈÓÃ lsmod ²é¿´Ä£×éµÄÔØÈëÇé¿ö, Èç¹ûÃ»ÓÐAGPÇý¶¯Ä£×éÇëÓÃ
modprobe ÔØÈë, Èç¹ûÔÚÔØÈëµÄÊ±ºò³öÏÖÎÊÌâ, ¿ÉÄÜÄãËùÔØÈëµÄÄ£×é²¢²»ÊÇÎªÄãµÄºËÐÄ±àÒëµÄ.
ÔÚ±àÒëµÄÇý¶¯³ÌÊ½µÄÊ±ºò¿ÉÒÔÖ¸¶¨ÄãµÄºËÐÄ: 'make install SYSINCLUDE=/path/to/kernel/headers'
Ä£×éµÄÃû³ÆÎª "NVdriver"




\subsection{ÎÒÄÜÆô¶¯X, µ«ÊÇ OpenGLµÄÓ¦ÓÃÎÞÐ§}

Õâ¿ÉÄÜºÍº¯Ê½¿âÓÐ¹Ø, ÇëÖ´ÐÐ "ldconfig"
,ÁíÍâÇë¼ìÊÓ XF86ConfigÉè¶¨µµ, È·ÐÅÀïÃæÓÐ¼ÓÔØglxµÄÃèÊö.




\subsection{OpenGL ÈíÌå³öÏÖÈçÏÂ¾¯Ñ¶ÊÇÊ²÷áÎÊÌâ?}

\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
 Error: Could not open /dev/nvidiactl because the permissions
        are too restrictive.  Please see the FREQUENTLY ASKED QUESTIONS
        section of /usr/share/doc/NVIDIA_GLX-1.0/README for steps
        to correct.
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


¿´ÆðÀ´ÏñÊÇPAM°²È«Ä£×éµÄÎÊÌâ(Ëü±ä¸üÁËÉè±¸µÄ·ÃÎÊÈ¨ÏÞ),
Èç¹ûÒª½â¾öËü,Çë¹Ø±ÕPAM. 
Èç¹ûÄãµÄ /etc/security/ Ä¿Â¼ÀïÓÐ console.perms Éè¶¨µµ
Çë½«ÒÔ $<$ dri $>$ ¿ªÍ·µÄ×Ö¾äÕûÐÐÒÆ³ý.
Èç¹ûÄãµÄÏµÍ³ÀïÓÐ /etc/logindevperms ÇëÒÆ³ýÓë /dev/nvidiactl ÓÐ¹ØµÄ×Ö¾ä.
È»ááÖ´ÐÐ chmod 0666 /dev/nvidia* ; chown root /dev/nvidia*




\subsection{OpenGL ³ÌÊ½¹Òµô²¢ÇÒÓÐÈçÏÂ¾¯Ñ¶:}

\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
WARNING: Your system is running with a buggy dynamic loader.
        This may cause crashes in certain applications.  If you
        experience crashes you can try setting the environment
        variable __GL_SINGLE_THREADED.  For more information please
        consult the FREQUENTLY ASKED QUESTIONS section in the file
        /usr/share/doc/NVIDIA_GLX-1.0/README.
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


ÕâÊÇÀÏ°æ±¾µÄ¶¯Ì¬¼ÓÔØÆ÷Ôì³ÉµÄ. ÇëÉè¶¨»·¾³±äÁ¿ \_\_GL\_SINGLE\_THREADED ÎªÈÎÒâÖµ.
Èç¹ûÄãÊ¹ÓÃbash shell ,ÇëÄãÕâÑùÖ´ÐÐ:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
 export __GL_SINGLE_THREADED
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


Èç¹ûÄãÊ¹ÓÃ csh ºÍÏà¹ØµÄshell ÇëÕâÑùÖ´ÐÐ:

\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
setenv __GL_SINGLE_THREADED
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}



\subsection{ÔÚÎÒÖ´ÐÐ À×ÉñIII ÇÐ»»ÏÔÊ¾Ä£Ê½Ê±, Ëü¹ÒµôÁË.}

ÕÕÉÏÃæµÄ·½·¨Éè¶¨ \_\_GL\_SINGLE\_THREADED




\subsection{µ±ÎÒÖ´ÐÐ startx Ê±, X ¹ÒµôÁË, ²¢ÔÚ XFree86 ÈÕÖ¾ÖÐÁôÓÐÈçÏÂ¼ÇÂ¼:}

\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
(II) LoadModule: "nvidia"
        (II) Loading /usr/X11R6/lib/modules/drivers/nvidia_drv.o
        No symbols found in this module
        (EE) Failed to load /usr/X11R6/lib/modules/drivers/nvidia_drv.o
        (II) UnloadModule: "nvidia"
        (EE) Failed to load module "nvidia" (loader failed, 256)
        ...
        (EE) No drivers available.
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


 nvidia\_drv.o ÐèÒªÒ»¸ö·ûºÅÁ¬½á, ÓÐÐ©rpm°æ±¾ÔÚ°²×°Ê±Ã»ÓÐ½¨Á¢ÕâÖÖÁ¬½á,
ÍÆ¼öÄãÓÃ NVIDIA\_GLX µÄ tar °²×°°ü½øÐÐ°²×°. 


\subsection{ÎÒµÄÏµÍ³¿ÉÒÔÔËÐÐ, µ«²»ÎÈ¶¨, ÕâÊÇÔõ÷á»ØÊÂ?}

ÕâÓëAGPÄ£Ê½ÓÐ¹Ø, ¿ÉÒÔÍ¨¹ý Option "NvAgp" "0ÖÁ3µÄÖµ" À´Éè¶¨.
"0"±íÊ¾¹Ø±Õ¼ÓËÙ; "1" ±íÊ¾Ê¹ÓÃNVAGP; "2" ±íÊ¾Ê¹ÓÃAGPGART; "3" ±íÊ¾Ê¹ÓÃ AGPART,
Èç¹ûÊ§Ð§, ¾Í×Ô¶¯Ê¹ÓÃNVAGPÄ£Ê½.
×¢Òâ: ÒªÊ¹ÓÃ AGPGART Ä£Ê½, Äã±ØÐè½«Ëü±àÒë½øºËÐÄ,»òÕßÊÇ±àÒë³ÉÄ£×é.
Èç¹ûÏµÍ³ºËÐÄµ±ÖÐÓÐ AGPGART, NVAGP Ä£Ê½½«²»ÆðÈÎºÎ×÷ÓÃ. ËùÒÔÍÆ¼öÄã½« AGPGART
±àÒë³ÉÄ£×é. ÁíÍâÒª×¢ÒâµÄÊÇ, ±ä¸üÇý¶¯³ÌÊ½ááÒªÖØÐÂÆô¶¯ÄãµÄ»úÆ÷²ÅÄÜÉúÐ§.

ÒÔÏÂµÄÐ¾Æ¬¼¯Ö§Ô® NVAGP Ä£Ê½, ÆäËüµÄÐ¾Æ¬¼¯ÇëÊ¹ÓÃ AGPGART Ä£Ê½.
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
Intel 440LX
  o Intel 440BX
  o Intel 440GX
  o Intel 815 ("Solano")   
  o Intel 820 ("Camino")   
  o Intel 830
  o Intel 840 ("Carmel")   
  o Intel 845 ("Brookdale")
  o Intel 845G
  o Intel 850 ("Tehama")
  o Intel 860 ("Colusa")
  o AMD 751 ("Irongate")
  o AMD 761 ("IGD4")   
  o AMD 762 ("IGD4 MP")
  o VIA 8371   
  o VIA 82C694X
  o VIA KT133
  o VIA KT266
  o RCC 6585HE
  o Micron SAMDDR ("Samurai") 
  o Micron SCIDDR ("Scimitar")
  o nForce AGP
  o ALi 1621
  o ALi 1631
  o ALi 1647
  o ALi 1651
  o ALi 1671
  o SiS 630
  o SiS 633
  o SiS 635
  o SiS 645
  o SiS 730
  o SiS 733
  o SiS 735
  o SiS 745
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


Ò»Ð© Linux ºËÐÄÔÚAMD¼Ü¹¹µÄCPUÉÏÔËÐÐÊ±¿ÉÄÜ»á³öÏÖÓëAGPÓÐ¹ØµÄBug.
ËüÃÇÊÇ:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
 AMD Athlon XP
 AMD Athlong 4
 AMD Athlon MP and Models 6 
 AMD Duron
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}

Äã¿ÉÒÔÔÚ¿ª»úµÄÊ±ºò±Ü¿ªËüÃÇµÄBug: ÔÚ GRUB ÖÐÊäÈë mem=nopentium
»òÔÚ lilo.conf Éè¶¨µµÖÐ¼ÓÈë : append = "mem=nopentium"



Éè¶¨ BIOS ÖÐAGPµÄ¡õÎ§ÔÚ 0xEA ºÍ 0xEE Ö®¼ä. 

ÇëÉý¼¶ÄãµÄ BIOS.

Éè¶¨ AGPµÄËÙÂÊµµÎ»:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
insmod NVdriver NVreg_ReqAGPRate=2   # Ö»Ê¹ÓÃµÚ2µµ
insmod NVdriver NVreg_ReqAGPRate=1   # Ö»Ê¹ÓÃµÚ1µµ
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


Ò²¿ÉÒÔÔÚ /etc/modules.conf Éè¶¨µµÖÐ½øÐÐÃèÊö:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
alias char-major-195 NVdriver
options NVdriver NVreg_ReqAGPRate=2  
options NVdriver NVreg_ReqAGPRate=1 
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}



\subsection{ÎªÊ²÷áÎÒµÄ OpenGL ÈíÌåÂýµÃÒªËÀ?}

¿ÉÄÜËü»¹ÔÚÊ¹ÓÃÀÏµÄº¯Ê½¿â.






\subsection{ÔÚ±àÒëºËÐÄÇý¶¯³ÌÊ½Ê±³öÏÖ¾¯Ñ¶:}

\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
You appear to be compiling the NVdriver kernel module with
        a compiler different from the one that was used to compile
        the running kernel. This may be perfectly fine, but there
        are cases where this can lead to unexpected behaviour and
        system crashes.

        If you know what you are doing and want to override this
        check, you can do so by setting IGNORE_CC_MISMATCH.

        In any other case, set the CC environment variable to the
        name of the compiler that was used to compile the kernel.
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


ÏµÍ³ÉÏµÄºËÐÄ²»ÊÇÓÃµ±Ç°µÄGCC±àÒëµÄ, ÇëÖØÐÂ±àÒëºËÐÄ, ²¢ÔÚÖØÐÂÆô¶¯Ê±ÔØÈëÐÂºËÐÄ.


\subsection{X ¹ÒµôÁË, ²¢³öÏÖ¾¯Ñ¶"Failed to allocate LUT context DMA"}

½â¾ö·½·¨Í¬ÉÏÒ»¸öÎÊÌâÒ»Ñù.



\end{document}
