特殊:Badtitle/NS100:BuildYourOwnNvidiaGlx

来自Ubuntu中文
Wikibot留言 | 贡献2007年12月6日 (四) 15:12的版本
跳到导航跳到搜索

{{#ifexist: :BuildYourOwnNvidiaGlx/zh | | {{#ifexist: BuildYourOwnNvidiaGlx/zh | | {{#ifeq: {{#titleparts:BuildYourOwnNvidiaGlx|1|-1|}} | zh | | }} }} }} {{#ifeq: {{#titleparts:BuildYourOwnNvidiaGlx|1|-1|}} | zh | | }}

Introduction

Note: The 9755 driver was included with Ubuntu 7.04 and is called nvidia-glx-new. Later versions of Ubuntu may come with more recent drivers. Please see BinaryDriverHowto/Nvidia for further details. This page details how to make your own nvidia-glx with the latest NVIDIA drivers integrated to the linux-restricted-modules package. Why do you want this you could ask? Well, people who have an NVIDIA 8800-series card need the latest driver (97.42) to get working 3D-acceleration. The card is not supported by the driver included in linux-restricted-modules (l-r-m) at the moment. The more popular reason would be that the 9x.xx drivers support the TFP (texture from pixmap) extension, which allows you to run Compiz/Beryl without XGL.

Setting up repositories

Add this source entry into your /etc/apt/sources.list:

deb-src http://archive.ubuntu.com/ubuntu edgy-security main restricted universe multiverse

The l-r-m was updated because of a security vulnerability found in the NVIDIA 8774 driver, this is why the source is located on the edgy-security repository.

Getting the source

Then change to a directory where you want do to the compiling and get the source by issuing this command:

apt-get source nvidia-glx

Now let's satisfy the build dependencies (If you're building with pbuilder you can skip this step):

sudo apt-get build-dep nvidia-glx

Download the driver packages

You need both of these packages for the linux-restricted-modules: NVIDIA-Linux-x86-1.0-9742-pkg1.run NVIDIA-Linux-x86_64-1.0-9742-pkg2.run

Replacing files in the archive

Open linux-restricted-modules-2.6.17_2.6.17.6.orig.tar.gz in e.g. file-roller. Go to /linux-restricted-modules-2.6.17-2.6.17.6.orig/nvidia/ (in fileroller) and delete the old (8776) driver, which you want to replace, still leaving the nvidia legacy drivers intact. After this, add the files you downloaded [ NVIDIA-Linux-x86-1.0-9742-pkg1.run NVIDIA-Linux-x86_64-1.0-9742-pkg2.run ] to the archive.

Editing the .diff file

Extract linux-restricted-modules-2.6.17_2.6.17.6-1.diff.gz and open the .diff file in your favorite text editor. 1. Find and replace all instances of 8776 with 9742 (The 8776 in the changelog section you can leave unchanged.) 2. Find and replace:

$(nv_dirname)/usr/X11R6/lib/modules/drivers/nvidia_drv.o

with

$(nv_dirname)/usr/X11R6/lib/modules/drivers/nvidia_drv.so

3. Find:

+linux-restricted-modules-2.6.17 (2.6.17.6-1) edgy-security; urgency=low

Add this section above that line (to bump the version number and update the changelog):

+linux-restricted-modules-2.6.17 (2.6.17.6-2) edgy-security; urgency=low
+
+  * Updated the NVIDIA driver to version 9742.
+
+ -- Christoffer Karvonen <[email protected]>  Mon, 20 Nov 2006 02:46:43 +0200
+

4. As we have added six (6) lines to the file, the above line must be altered from:

@@ -0,0 +1,1319 @@

to

@@ -0,0 +1,1325 @@

You can of course replace my name and email with your own. Save the file. Then rename the file to linux-restricted-modules-2.6.17_2.6.17.6-2.diff and gzip it.

Making some final changes (the .dsc file)

Edit linux-restricted-modules-2.6.17_2.6.17.6-1.dsc, again, open it with your favorite text editor. 1. Find and replace:

Version: 2.6.17.6-1.1

with

Version: 2.6.17.6-1.2

2. Replace:

linux-restricted-modules-2.6.17_2.6.17.6-1.1.diff.gz

with

linux-restricted-modules-2.6.17_2.6.17.6-1.2.diff.gz

Remove the old GnuPG signature header:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

and footer:

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)

iD8DBQFFP6N5H/9LqRcGPm0RAh+nAJ0Qb7TzsP0s2REbLfFE7E5kA72cSACgmJas
tU/3xuWQZKqSaPzNYhNeccU=
=JWsr
-----END PGP SIGNATURE-----

Now we need to replace the MD5SUM's and sizes in the .dsc with new one's. Commands to do this are:

 md5sum <filename>
ls -l <filename> 

Be sure you get the MD5SUM's (and sizes) of the correct files; linux-restricted-modules-2.6.17_2.6.17.6.orig.tar.gz and linux-restricted-modules-2.6.17_2.6.17.6-2.diff.gz Rename the .dsc file

mv linux-restricted-modules-2.6.17_2.6.17.6-1.dsc linux-restricted-modules-2.6.17_2.6.17.6-2.dsc

Sign it the package with debsign:

debsign -kYOURKEY linux-restricted-modules-2.6.17_2.6.17.6-1.dsc

If you don't have a GnuPG key, you can generate one with:

gpg --gen-key

Building it

To build with pbuilder:

sudo pbuilder build linux-restricted-modules-2.6.17_2.6.17.6-2.dsc

To build without it:

Extract the source with

dpkg-source -x <filename>.dsc

Change to the directory it was extracted to and run

dpkg-buildpackage -rfakeroot

It takes a while to compile, but hopefully finishes. You can install the packages with dpkg as usual.

Related pages

BinaryDriverHowto/Nvidia NvidiaTroubleshooting PbuilderHowto

Discussions

Personally, I find this method is very hacky. Wouldn't be simpler to extract the package and do the changes directly inside its directory, instead of modifying a diff file? What happens if a new version of linux-restricted-modules is released? - AlexandreVassalotti