English/Français
UbuntuTips
Natty Narwhal (11.04)
Feel free to edit this page if there's something missing.
To compile Nouveau DDX from Git, at least these packages are necessary:
libudev-dev xserver-xorg-dev x11proto-fonts-dev x11proto-video-dev x11proto-xf86dri-dev
To compile the Gallium 3D driver from Git, these packages are necessary:
xutils-dev x11proto-gl-dev x11proto-dri2-dev libdrm-dev libxext-dev libxdamage-dev libxfixes-dev libexpat1-dev libxt-dev libxmu-dev libxi-dev libegl1-mesa-dev flex bison libxvmc-dev
You will also need to pull some packages in from oneiric. To do this, first add oneiric to your sources (such as by making a file in /etc/apt/sources.list.d or using system software sources selection). Then, in order to make sure that you don't upgrade wholesale to this unreleased version, pin its priority in /etc/apt/preferences:
# You will need to remove this (or change oneiric to psychedelic or # whatever Ubuntu 12.04 gets named) when you want to dist-upgrade to # oneiric; the do-release-upgrade script won't change it for you (or # know what went wrong) Explanation: Don't install oneiric packages by default Package: * Pin: release a=oneiric Pin-Priority: 99
You might also need to increase a limit in APT to handle multiple releases:
echo 'APT::Cache-Limit "125165824";' > /etc/apt/apt.conf.d/massive
Then, you can pull in selected packages from oneiric only, using the '-t' flag to apt-get:
sudo apt-get -t oneiric install libdrm2 x11proto-gl-dev x11proto-dri2-dev
Be sure to install the natty versions first, otherwise dependencies could unnecessarily come from oneiric instead of natty.
To compile 32-bit on a 64-bit system:
libc6-dev-i386
This package may be needed when you get errors about R300 and R600 drivers:
llvm llvm-dev llvm2.8-dev
Compiling libdrm needs this package:
dh-autoreconf
Most things here also apply to Maverick Meerkat (10.10).
Intrepid Ibex (8.10)
To compile latest 2D driver from git repository in Ubuntu 8.10, these dependencies should be installed:
git-core libpthread-stubs0-dev autoconf libtool xorg-dev mesa-common-dev
And for Gallium 3D driver in addition to those listed above, these packages should be installed:
xutils-dev build-essential
Also, dri2proto headers from git repository are needed for 3D driver:
git clone git://anongit.freedesktop.org/xorg/proto/dri2proto cd dri2proto; ./autogen.sh sudo make install
If 3D driver doesn't load this section should be added to the end of /etc/X11/xorg.conf:
Section "DRI" mode 0666 EndSection
Gutsy Gibbon (development branch) (7.10)
As of 07/Jul/2007 on 2.6.22-7-generic it is not necessary to comment out vm_insert_pfn.
Feisty Fawn (7.04)
When making nouveau.ko and drm.ko make will complain when compiling linux-core/drm_compat.c.
It appears that this is because the kernel which shipped with Feisty is not really 2.6.20 but 2.6.20 + some bits from 2.6.21 including vm_insert_pfn, the drm needs vm_insert_pfn so when not present supplies its own copy, Ubuntu already supplies vm_insert_pfn but advertises itself as 2.6.20 conflicting with the drm build assumptions.
The end result of this is the Ubuntu kernel headers already have a definition for vm_insert_pfn and this drm supplied function in linux-core/drm_compat.c can be commented out to read something like;
/*static int vm_insert_pfn(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn) { int ret; if (!drm_pte_is_clear(vma, addr)) return -EBUSY; ret = io_remap_pfn_range(vma, addr, pfn, PAGE_SIZE, vma->vm_page_prot); return ret; }*/
Barring other problems make should complete.
As of 28/Apr/2007 works for me on 2.6.20-15-generic.
Unresolved / Undefined Symbols
If you are experiencing problems building nouveau, make sure that anything matching nvidia-glx is completely removed. Open Synaptic and make sure that anything related to nVidia isn't laying around in Residual Config.
Resources
HOWTO: Nouveau - Open source 3d drivers for nvidia graphic cards