/[gentoo]/xml/htdocs/doc/en/nvidia-guide.xml
Gentoo

Contents of /xml/htdocs/doc/en/nvidia-guide.xml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.31 - (show annotations) (download) (as text)
Sat Sep 2 10:04:16 2006 UTC (7 years, 10 months ago) by nightmorph
Branch: MAIN
Changes since 1.30: +87 -54 lines
File MIME type: application/xml
New VDR guide by Norman Golisz added, bug 143456

1 <?xml version='1.0' encoding="UTF-8"?>
2 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/nvidia-guide.xml,v 1.30 2006/07/26 09:50:06 rane Exp $ -->
3 <!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
4
5 <guide link="/doc/en/nvidia-guide.xml">
6 <title>Gentoo Linux nVidia Guide</title>
7
8 <author title="Author">
9 <mail link="swift@gentoo.org">Sven Vermeulen</mail>
10 </author>
11 <author title="Editor">
12 <mail link="curtis119@gentoo.org">M Curtis Napier</mail>
13 </author>
14 <author title="Editor">
15 <mail link="nightmorph@gentoo.org">Joshua Saddler</mail>
16 </author>
17 <author title="Editor">
18 <mail link="wolf31o2@gentoo.org">Chris Gianelloni</mail>
19 </author>
20
21 <abstract>
22 Many Gentooists have an nVidia chipset on their system. nVidia provides specific
23 Linux drivers to boost the performance of your card. This guide informs you how
24 to install and configure these drivers.
25 </abstract>
26
27 <!-- The content of this document is licensed under the CC-BY-SA license -->
28 <!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
29 <license/>
30
31 <version>1.27</version>
32 <date>2006-09-01</date>
33
34 <chapter>
35 <title>Introduction</title>
36 <section>
37 <body>
38
39 <p>
40 nVidia release their own Linux drivers which provide good performance and full
41 3D acceleration. There are two sets of drivers in portage. The first set is an
42 older set and split into two parts: <c>nvidia-kernel</c> and <c>nvidia-glx</c>.
43 The second set is newer, and is split into <c>nvidia-drivers</c> and
44 <c>nvidia-legacy-drivers</c>. If you are installing for the first time, you
45 should use the newer set.
46 </p>
47
48 <p>
49 <c>nvidia-kernel</c> is a kernel driver which handles the low-level
50 communication with your video hardware. This is simply a kernel module, named
51 <c>nvidia</c>, which installs against your kernel sources and needs to be
52 loaded whenever you want to use the nvidia drivers.
53 </p>
54
55 <p>
56 As well as the kernel driver, you need to install the X11 GLX layer
57 (<c>nvidia-glx</c>). This is used by X to render graphics, which internally
58 uses the <c>nvidia-kernel</c> kernel driver to interface with the hardware.
59 </p>
60
61 <p>
62 The newer drivers have the functionality of both <c>nvidia-kernel</c> and
63 <c>nvidia-glx</c> in a single unified ebuild, much like how nVidia themselves
64 ship the drivers.
65 </p>
66
67 <note>
68 Both <c>nvidia-kernel</c> and <c>nvidia-glx</c> are deprecated, and will be
69 removed from the Portage tree in the future in favor of <c>nvidia-drivers</c>
70 and <c>nvidia-legacy-drivers</c>. If you use <c>nvidia-kernel</c> and
71 <c>nvidia-glx</c>, then you should migrate to the newer packages.
72 </note>
73
74 </body>
75 </section>
76 </chapter>
77
78 <chapter>
79 <title>Configuring your Card</title>
80 <section>
81 <title>Kernel Configuration</title>
82 <body>
83
84 <p>
85 As mentioned above, the nVidia kernel driver installs and runs against your
86 current kernel. It builds as a module, so it makes sense that your kernel must
87 support the loading of kernel modules. If you used <c>genkernel</c> to
88 configure the kernel for you then you're all set. If not, double check your
89 kernel configuration so that this support is enabled:
90 </p>
91
92 <pre caption="Enabling the Loading of Kernel Modules">
93 Loadable module support ---&gt;
94 [*] Enable loadable module support
95 </pre>
96
97 <p>
98 You also need to enable <e>Memory Type Range Register</e> in your kernel:
99 </p>
100
101 <pre caption="Enabling MTRR">
102 Processor and Features ---&gt;
103 [*] MTRR (Memory Type Range Register) support
104 </pre>
105
106 <p>
107 Also, you can optionally enable <c>agpgart</c> support to your kernel, either
108 compiled in or as a module. If you do not use the in-kernel agpgart, then the
109 drivers will use their own <c>agpgart</c> implementation, called <c>NvAGP</c>.
110 On certain systems, this performs better than the in-kernel agpgart, and on
111 others, it performs worse. You will need to evaluate this on your own system to
112 get the best performance. If you are unsure what to do, use the in-kernel
113 agpgart:
114 </p>
115
116 <pre caption="Enabling agpgart">
117 Device Drivers ---&gt;
118 Character devices ---&gt;
119 &lt;*&gt; /dev/agpgart (AGP Support)
120 </pre>
121
122 </body>
123 </section>
124 <section>
125 <title>Arch-specific notes</title>
126 <body>
127
128 <impo>
129 For x86 and AMD64 processors, the in-kernel driver conflicts with the binary
130 driver provided by nVidia. If you will be compiling your kernel for these CPUs,
131 you must completely remove support for the in-kernel driver as shown:
132 </impo>
133
134 <pre caption="Remove the in-kernel driver">
135 Device Drivers ---&gt;
136 Graphics Support ---&gt;
137 &lt; &gt; nVidia Framebuffer Support
138 &lt; &gt; nVidia Riva support
139 </pre>
140
141 <p>
142 A good framebuffer alternative is <c>VESA</c>:
143 </p>
144
145 <pre caption="Enable VESA support">
146 Device Drivers ---&gt;
147 Graphics Support ---&gt;
148 &lt;*&gt; VESA VGA graphics support
149 </pre>
150
151 <p>
152 Then, under "VESA driver type" select either <c>vesafb</c> or
153 <c>vesafb-tng</c>. If you are using an AMD64 processor, you should select
154 <c>vesafb</c> rather than <c>vesafb-tng</c>:
155 </p>
156
157 <pre caption="Select framebuffer type">
158 (X) vesafb
159 ( ) vesafb-tng
160 </pre>
161
162 <p>
163 For more information, you can read up
164 <path>/usr/src/linux/Documentation/fb/vesafb.txt</path> if you are using
165 <c>vesafb</c> or look for your framebuffer documentation under
166 <path>/usr/src/linux/Documentation/fb/</path>.
167 </p>
168
169 </body>
170 </section>
171 <section>
172 <title>Continuing with Kernel Configuration</title>
173 <body>
174
175 <p>
176 The <c>nvidia-kernel</c>, <c>nvidia-drivers</c>, and
177 <c>nvidia-legacy-drivers</c> ebuilds automatically discover your kernel version
178 based on the <path>/usr/src/linux</path> symlink. Please ensure that you have
179 this symlink pointing to the correct sources and that your kernel is correctly
180 configured. Please refer to the Configuring the Kernel section of the <uri
181 link="/doc/en/handbook/">Installation Handbook</uri> for details on configuring
182 your kernel.
183 </p>
184
185 <p>
186 If you are using gentoo-sources-2.6.11-r6, your <path>/usr/src</path> directory
187 might look something like this:
188 </p>
189
190 <pre caption="Check your /usr/src/linux symlink">
191 # <i>cd /usr/src</i>
192 # <i>ls -l</i>
193 <comment>(Check that linux points to the right directory)</comment>
194 lrwxrwxrwx 1 root root 22 Apr 23 18:33 linux -&gt; linux-2.6.11-gentoo-r6
195 drwxr-xr-x 4 root root 120 Apr 8 18:56 linux-2.4.26-gentoo-r4
196 drwxr-xr-x 18 root root 664 Dec 31 16:09 linux-2.6.10
197 drwxr-xr-x 18 root root 632 Mar 3 12:27 linux-2.6.11
198 drwxr-xr-x 19 root root 4096 Mar 16 22:00 linux-2.6.11-gentoo-r6
199 </pre>
200
201 <p>
202 In the above output, you'll notice that the <c>linux</c> symlink is pointing
203 to the <c>linux-2.6.11-gentoo-r6</c> kernel.
204 </p>
205
206 <p>
207 If the symlink is not pointing to the correct sources, you must update the link
208 like this:
209 </p>
210
211 <pre caption="Create/Update /usr/src/linux symlink">
212 # <i>cd /usr/src</i>
213 # <i>ln -snf linux-2.6.11-gentoo-r6 linux</i>
214 </pre>
215
216 </body>
217 </section>
218 <section>
219 <title>Optional: Check for Legacy Card Support</title>
220 <body>
221
222 <note>
223 Unfortunately, certain legacy video cards are not supported by the newer
224 versions of <c>nvidia-drivers</c>, <c>nvidia-glx</c> and <c>nvidia-kernel</c>.
225 nVidia provides a <uri link="http://www.nvidia.com/object/IO_18897.html">list
226 of supported cards</uri>. Please check the list before installing the drivers.
227 </note>
228
229 <p>
230 The following is a list of <b>unsupported</b> legacy video cards:
231 </p>
232
233 <pre caption="Unsupported cards">
234 TNT2
235 TNT2 Pro
236 TNT2 Ultra
237 TNT2 Model 64 (M64)
238 TNT2 Model 64 (M64) Pro
239 Vanta
240 Vanta LT
241 GeForce 256
242 GeForce DDR
243 GeForce2 GTS
244 GeForce2 Pro
245 GeForce2 Ti
246 GeForce2 Ultra
247 GeForce2 MX Integrated graphics
248 Quadro
249 Quadro2 Pro
250 Quadro2 EX
251 </pre>
252
253 <p>
254 If your card is listed in the legacy list, then you will be required to install
255 the <c>nvidia-legacy-drivers</c> package to get 3D support.
256 </p>
257
258 </body>
259 </section>
260 <section>
261 <title>Installing the Appropriate Drivers</title>
262 <body>
263
264 <p>
265 Now it's time to install the drivers. The newer drivers are unified, so you
266 will only need to install a single package. The older drivers are split, so it
267 will require two packages to be installed. Since <c>nvidia-glx</c> depends on
268 <c>nvidia-kernel</c>, installing <c>nvidia-glx</c> is sufficient.
269 </p>
270
271 <pre caption="Installing the nVidia drivers">
272 <comment>(If you have a card not listed in the legacy list above)</comment>
273 # <i>emerge nvidia-drivers</i>
274 <comment>(If your card is listed in the legacy list)</comment>
275 # <i>emerge nvidia-legacy-drivers</i>
276 </pre>
277
278 <pre caption="Installing the nVidia drivers (deprecated method)">
279 # <i>emerge nvidia-glx</i>
280 </pre>
281
282 <impo>
283 Every time you <uri link="/doc/en/kernel-upgrade.xml">compile a new
284 kernel</uri> or recompile the current one, you have to run <c>emerge
285 nvidia-kernel</c> to reinstall the nVidia modules. <c>nvidia-glx</c> is
286 unaffected by a kernel change and doesn't even need to be rebuilt when you
287 recompile/upgrade X. If you are using the newer drivers, then you will need to
288 run <c>emerge nvidia-drivers</c> or <c>emerge nvidia-legacy-drivers</c> to
289 reinstall the nVidia modules.
290 </impo>
291
292 <p>
293 Once the installation has finished, run <c>modprobe nvidia</c> to load the
294 kernel module into memory. If this is an upgrade, you should remove the
295 previous module first.
296 </p>
297
298 <pre caption="Loading the kernel module">
299 # <i>lsmod | grep nvidia &amp;&amp; rmmod nvidia</i>
300 # <i>modprobe nvidia</i>
301 </pre>
302
303 <p>
304 To prevent you having to manually load the module on every bootup, you probably
305 want to have this done automatically each time you boot your system, so edit
306 <path>/etc/modules.autoload.d/kernel-2.6</path> (or <path>kernel-2.4</path>,
307 depending on which kernel version you use) and add <c>nvidia</c> to it. Don't
308 forget to run <c>modules-update</c> afterwards.
309 </p>
310
311 <impo>
312 If you compiled <c>agpgart</c> as a module, you will need to add it to
313 <path>/etc/modules.autoload.d/kernel-2.6</path> (or <path>kernel-2.4</path>
314 depending on your kernel version).
315 </impo>
316
317 <pre caption="Running modules-update">
318 # <i>modules-update</i>
319 </pre>
320
321 </body>
322 </section>
323 <section>
324 <title>Configuring the X Server</title>
325 <body>
326
327 <p>
328 Once the appropriate drivers are installed you need to configure your X Server
329 to use the <c>nvidia</c> driver instead of the default <c>nv</c> driver.
330 </p>
331
332 <p>
333 Open <path>/etc/X11/xorg.conf</path> (or <path>/etc/X11/XF86Config</path> if you
334 still use the older configuration file location) with your favorite editor
335 (such as <c>nano</c> or <c>vim</c>) and go to the <c>Device</c> section. In that
336 section, change the <c>Driver</c> line:
337 </p>
338
339 <pre caption="Changing nv to nvidia in the X Server configuration">
340 Section "Device"
341 Identifier "nVidia Inc. GeForce2"
342 <i>Driver "nvidia"</i>
343 VideoRam 65536
344 EndSection
345 </pre>
346
347 <p>
348 Then go to the <c>Module</c> section and make sure the <c>glx</c> module gets
349 loaded while the <c>dri</c> module doesn't:
350 </p>
351
352 <pre caption="Updating the Module section">
353 Section "Module"
354 <comment>(...)</comment>
355 <i># Load "dri"
356 Load "glx"</i>
357 <comment>(...)</comment>
358 EndSection
359 </pre>
360
361 <p>
362 Next, in section <c>Screen</c>, make sure that either the <c>DefaultDepth</c>
363 directive is set to 16 or 24, or that you only have <c>Display</c> subsections
364 with <c>Depth</c> settings of 16 or 24. Without it, the nvidia-glx extensions
365 will not start.
366 </p>
367
368 <pre caption="Updating the Screen section">
369 Section "Screen"
370 <comment>(...)</comment>
371 <i>DefaultDepth 16</i>
372 Subsection "Display"
373 <comment>(...)</comment>
374 EndSection
375 </pre>
376
377 <p>
378 Run <c>eselect</c> so that the X Server uses the nVidia GLX libraries:
379 </p>
380
381 <pre caption="Running eselect">
382 # <i>eselect opengl set nvidia</i>
383 </pre>
384
385 </body>
386 </section>
387 <section>
388 <title>Adding your Users to the video Group</title>
389 <body>
390
391 <p>
392 You have to add your user to the <c>video</c> group so he has access to the
393 nvidia device files:
394 </p>
395
396 <pre caption="Adding your user to the video group">
397 # <i>gpasswd -a youruser video</i>
398 </pre>
399
400 <p>
401 This might not be totally necessary if you aren't using <c>udev</c> but it
402 doesn't hurt either and makes your system future-proof :)
403 </p>
404
405 </body>
406 </section>
407 <section>
408 <title>Testing your Card</title>
409 <body>
410
411 <p>
412 To test your nVidia card, fire up X and run the <c>glxinfo | grep direct</c>
413 command. It should say that direct rendering is activated:
414 </p>
415
416 <pre caption="Checking the direct rendering status">
417 $ <i>glxinfo | grep direct</i>
418 direct rendering: Yes
419 </pre>
420
421 <p>
422 To monitor your FPS, run <c>glxgears</c>.
423 </p>
424
425 </body>
426 </section>
427 <section>
428 <title>Enabling nvidia Support</title>
429 <body>
430
431 <p>
432 Some tools, such as <c>mplayer</c> and <c>xine-lib</c>, use a local USE flag
433 called "nvidia" which enables XvMCNVIDIA support, useful when watching high
434 resolution movies. Add in "nvidia" in your USE variable in
435 <path>/etc/make.conf</path> or add it as USE flag to <c>media-video/mplayer</c>
436 and/or <c>media-libs/xine-lib</c> in <path>/etc/portage/package.use</path>.
437 </p>
438
439 <p>
440 Then, run <c>emerge -uD --newuse world</c> to rebuild the applications that
441 benefit from the USE flag change.
442 </p>
443
444 </body>
445 </section>
446 <section>
447 <title>Using NVidia Settings Tool</title>
448 <body>
449
450 <p>
451 Since nVidia released version 1.0.6106 it also provides you with a settings
452 tool. This tool allows you to change graphical settings without restarting the
453 X server and is available through Portage as
454 <c>media-video/nvidia-settings</c>.
455 </p>
456
457 </body>
458 </section>
459 </chapter>
460
461 <chapter>
462 <title>Troubleshooting</title>
463 <section>
464 <title>Getting 2D to work on machines with 4Gb or more memory</title>
465 <body>
466
467 <p>
468 If you are having troubles with the nVidia 2D acceleration it is likely that
469 you are unable to set up a write-combining range with MTRR. To verify, check
470 the contents of <path>/proc/mtrr</path>:
471 </p>
472
473 <pre caption="Checking if you have write-combining enabled">
474 # <i>cat /proc/mtrr</i>
475 </pre>
476
477 <p>
478 Every line should contain "write-back" or "write-combining". If you see a line
479 with "uncachable" in it you will need to change a BIOS setting to fix this.
480 </p>
481
482 <p>
483 Reboot and enter the BIOS, then find the MTRR settings (probably under "CPU
484 Settings"). Change the setting from "continuous" to "discrete" and boot back
485 into Linux. You will now find out that there is no "uncachable" entry anymore
486 and 2D acceleration now works without any glitches.
487 </p>
488
489 </body>
490 </section>
491 <section>
492 <title>I receive warnings about unsupported 4K stack sizes</title>
493 <body>
494
495 <p>
496 <c>nvidia-kernel</c> packages older than 1.0.6106 only support kernels using an
497 8K stack size. More recent kernels (2.6.6 and higher) have support for 4K stack
498 size's as well. Do not select 4K stack size in your kernel configuration if
499 you are using such an <c>nvidia-kernel</c> package. You can find this option in
500 the section <c>Kernel Hacking</c>.
501 </p>
502
503 </body>
504 </section>
505 <section>
506 <title>
507 When I attempt to load the kernel module I receive a "no such device"
508 </title>
509 <body>
510
511 <p>
512 This usually occurs when you don't have a matching video card. Make sure that
513 you have an nVidia-powered graphical card (you can double-check this using
514 <c>lspci</c>).
515 </p>
516
517 <p>
518 If you are confident that you have an nVidia card, check your BIOS and see if
519 the directive <e>Assign IRQ to VGA</e> is set.
520 </p>
521
522 </body>
523 </section>
524 <section>
525 <title>
526 I get "no screens found" and the logs state "Failed to initialize the NVIDIA
527 kernel module!"
528 </title>
529 <body>
530
531 <p>
532 You're most likely missing the <path>/dev/nvidia*</path> device files. Create
533 them using <c>NVmakedevices.sh</c>:
534 </p>
535
536 <pre caption="Creating the nvidia device nodes">
537 # <i>/sbin/NVmakedevices.sh</i>
538 </pre>
539
540 <p>
541 If your <path>/dev/nvidia*</path> devices are still missing every time you
542 reboot, then it is most likely because udev is not automatically creating the
543 proper device nodes. You can fix this by re-running <c>NVmakedevices.sh</c>,
544 and then editing <path>/etc/conf.d/rc</path> as shown:
545 </p>
546
547 <pre caption="Editing /etc/conf.d/rc">
548 RC_DEVICE_TARBALL="yes"
549 </pre>
550
551 <p>
552 This will preserve your <path>/dev/nvidia*</path> nodes even if you reboot.
553 </p>
554
555 <note>
556 Alternatively, you might try emerging the latest <c>nvidia-kernel</c> and
557 <c>nvidia-glx</c> from the 8xxx series. At the time of this writing, both are
558 still marked ~arch. These drivers no longer rely on hotplug or udev to create
559 the proper device nodes, so you won't need to run <c>NVmakedevices.sh</c>.
560 Instead, the X driver itself will create your <path>/dev/nvidia*</path> files
561 when you start X. However, this will require you to use a recent kernel (2.6.14
562 and greater). This is also true for all versions of <c>nvidia-drivers</c> and
563 <c>nvidia-legacy-drivers</c>.
564 </note>
565
566 </body>
567 </section>
568 </chapter>
569
570 <chapter>
571 <title>Expert Configuration</title>
572 <section>
573 <title>Documentation</title>
574 <body>
575
576 <p>
577 The nVidia driver package also comes with comprehensive documentation. This is
578 installed into <c>/usr/share/doc</c> and can be viewed with the following
579 command:
580 </p>
581
582 <pre caption="Viewing the NVIDIA documentation">
583 <comment>(for nvidia-drivers)</comment>
584 $ <i>less /usr/share/doc/nvidia-drivers-*/README.gz</i>
585 <comment>(for nvidia-legacy-drivers)</comment>
586 $ <i>less /usr/share/doc/nvidia-legacy-drivers-*/README.gz</i>
587 <comment>(for nvidia-glx)</comment>
588 $ <i>less /usr/share/doc/nvidia-glx-*/README.txt.gz</i>
589 </pre>
590
591 </body>
592 </section>
593 <section>
594 <title>Kernel module parameters</title>
595 <body>
596
597 <p>
598 The <c>nvidia</c> kernel module accepts a number of parameters (options) which
599 you can use to tweak the behaviour of the driver. Most of these are mentioned in
600 the documentation. To add or change the values of these parameters, edit the
601 file <c>/etc/modules.d/nvidia</c>. Remember to run <c>modules-update</c> after
602 modifying this file, and bear in mind that you will need to reload the
603 <c>nvidia</c> module before the new settings take effect.
604 </p>
605
606 <pre caption="Adjusting nvidia options">
607 <comment>(Edit /etc/modules.d/nvidia in your favourite editor)</comment>
608 # <i>nano -w /etc/modules.d/nvidia</i>
609 <comment>(Update module information)</comment>
610 # <i>modules-update</i>
611 <comment>(Unload the nvidia module...)</comment>
612 # <i>modprobe -r nvidia</i>
613 <comment>(...and load it once again)</comment>
614 # <i>modprobe nvidia</i>
615 </pre>
616
617 </body>
618 </section>
619 <section>
620 <title>Advanced X configuration</title>
621 <body>
622
623 <p>
624 The GLX layer also has a plethora of options which can be configured. These
625 control the configuration of TV out, dual displays, monitor frequency detection,
626 etc. Again, all of the available options are detailed in the documentation.
627 </p>
628
629 <p>
630 If you wish to use any of these options, you need to list them in the relevant
631 Device section of your X config file (usually <c>/etc/X11/xorg.conf</c>). For
632 example, suppose I wanted to disable the splash logo:
633 </p>
634
635 <pre caption="Advanced nvidia configuration in the X configuration">
636 Section "Device"
637 Identifier "nVidia Inc. GeForce2"
638 Driver "nvidia"
639 <i>Option "NoLogo" "true"</i>
640 VideoRam 65536
641 EndSection
642 </pre>
643
644 </body>
645 </section>
646 </chapter>
647
648 </guide>

  ViewVC Help
Powered by ViewVC 1.1.20