LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (https://www.linuxquestions.org/questions/slackware-14/)
-   -   nano How-To for using X with nVidia GPUs on slackware-current after March 1 updates (https://www.linuxquestions.org/questions/slackware-14/nano-how-to-for-using-x-with-nvidia-gpus-on-slackware-current-after-march-1-updates-795390/)

Didier Spaier 03-14-2010 06:03 PM

nano How-To for using X with nVidia GPUs on slackware-current after March 31 updates
 
EDIT : post updated on April 2, 2010. I suppose that you upgraded -current following March 31 update.

Since Mon Mar 1 22:43:53 UTC 2010, slackware-current include following components:
- kernel 2.6.33 (upgraded to 2.6.33.1 since March 31)
- Xorg7.5, including xorg-server-1.7.5
- libdrm-2.4.18

Since then, several of us did encounter problems to use their nVidia gpu under X, for instance see this thread

I hope this post can help them coping with this situation.

But bear in mind that these problems will probably disappear in a not so distant future following updates of -current.
Then this nano How-To will become useless; when I will be aware of that I will either delete it or at least let you know.

To use a nVidia gpu under X we need a kernel driver as well as a driver for X (big finding!), chosen among:
- "vesa" (open source, not nVidia specific)
- "nv" (open source, nVidia specific, provided by nVidia)
- "nvidia" (closed source, provided as binary by nVidia, also known as "blob")
- "nouveau" (open source, in active development, expected to replace nv)

Conclusions

This part has been updated on April 2nd, 2010 following March 31 update of -current which include a better "nv" driver for X
[EDIT April 3rd] Blacklisting nouveau is not necessary if you set up a VGA (no VESA framebuffer) in lilo.conf and run lilo again: either comment "VGA=" option in lilo.conf or choose "VGA=normal" or "VGA=ext" instead of" VGA=nnn"
[EDIR April 6th]Temporary workaround if you get a blank screen at boot: use the nomdeset kernel parameter at boot time, see this post for explanations.


1) To use the vesa driver (works but has limited features), issue following commands as root.
Code:

echo "blacklist nouveau" >> /etc/modprobe.conf/blacklist.conf # don't write ">" instead of ">>" otherwise the file will be overridden
echo -e 'Section "Device"\nIdentifier "n"\nDriver "vesa"\nEndSection' > /etc/X11/xorg.conf

2) To use the nv driver (better handling of high resolutions, XRandR work), issue following commands:
Code:

echo "blacklist nouveau" >> /etc/modprobe.conf/blacklist.conf # don't write ">" instead of ">>" otherwise the file will be overridden
echo -e 'Section "Device"\nIdentifier "n"\nDriver "nv"\nEndSection' > /etc/X11/xorg.conf

3) Of course you can try the blob (I didn't).
I can't give any advise there, but be aware that not all versions work and some only if patched, as of today.

4) My advise is to give "nouveau" a try.
Gamers won't get 3D hardware acceleration yet but some nice features are already provided:
- KMS (kernel modesetting)
- good dual head support
- support for xrandr (X Resize and Rotate) version 1.2
For that you will need some more steps explained at the end of this post.

Explanations

Here is the summary of what I did and got (I always boot at runlevel 3):
- Booting a fresh -current install I got a black screen, probably because the "nouveau" kernel driver, though automatically chosen, miss its firmware
- Then I added "blacklist nouveau" at the end of /etc/modprobe.conf/blacklist.conf
- Then no problem while booting but after "startx" (under Fluxbox) I saw only the mouse cursor on a black screen. I could move it... that's it.
- Then I did set up an /etc/X11/xorg.conf file with driver "nv". X started but display was unusable with very weird colors.
- Then I replaced the driver "nv" by "vesa" and all was fine.
- I also tried "nouveau" with success (details follow)

I didn't try the "blob" (closed source nVida driver) but several people did encounter problems with it.

How-To use Nouveau

Please note first that though "nouveau" be modularized (as it should) in both -huge and -generic 2.6.33.1 kernels this don't suffice to use it "out of the box" in -current for several reasons:
- the driver for X is not included in xorg7.5 release
- a firmware for "nouveau", which is necessary with 2.6.33. kernel, doesn't ship with it
- the code for "nouveau" included in 2.6.33.1 is not compatible with libdrm-2.4.18, included in -current.

As we will see now, it is nevertheless possible to use "nouveau" in "current" with some more installation steps

In short for the impatient among us:

Have slackware-current or slackware64-current installed, including kernel 2.6.33 (preferably -generic) and xorg-server-1.7.5 (I suppose you use HAL and have no xorg.conf file in /etc/X11, orherwise adapt step 13 below accordingly).

First, blacklist nouveau in /etc/modprobe.d/blacklist.conf or set-up a VGA (no VESA framebuffer) mode in /etc/lilo.conf and run lilo, that is to say include the "VGA=normal" or "VGA=ext" option in /etc/lilo.conf

Then do what follows at runlevel 3:
Code:

1. mkdir -p ~/tmp && cd ~/tmp
2. wget http://people.freedesktop.org/~pq/nouveau-drm/master.tar.gz && tar xzf master.tar.gz
3. cd master/include && wget http://cgit.freedesktop.org/nouveau/linux-2.6/plain/nouveau/Makefile?h=master-compat
4. mv Makefile?h=master-compat Makefile && make
5. su && make install
6. cd /lib/modules/2.6.33.1/kernel/drivers/gpu && rm ttm/ttm.ko drm.ko nouveau/nouveau.ko && depmod -a && Ctrl + d
7. cd ~/tmp && git clone git://anongit.freedesktop.org/git/nouveau/xf86-video-nouveau/
8. cd xf86-video-nouveau && ./autogen.sh && make
9. su
10. For slackware-current : cp src/.libs/nouveau_drv.so /usr/lib/xorg/modules/drivers
10. For slackware64-current : cp src/.libs/nouveau_drv.so /usr/lib64/xorg/modules/drivers
11. grab the latest firmware package from http://people.freedesktop.org/~pq/nouveau-drm/
12. tar zxf nouveau-firmware-XXXXXXXX.tar.gz -C /lib/firmware # as of today replace XXXXXXXX by 20091212
13. echo -e 'Section "Device"\nIdentifier "n"\nDriver "nouveau"\nEndSection' > /etc/X11/xorg.conf
14. Ctrl + d # back to regular user
15. startx

For those wanting to know what they are doing (if any):

1. Feel free to use another directory if you prefer
2. We get what is necessary to build drm, ttm and nouveau modules compatible with libdrm 2.4.18. See http://nouveau.freedesktop.org/wiki/InstallDRM. Be aware that you'll get a snapshot, so your mileage may vary
3. We go where the makefile should go (don't ask me why) and download it there
4. We name the makefile Makefile and make the modules
5. We install the modules as root. After that you'll find it there :
/lib/modules/2.6.33.1/extra/ttm/ttm.ko
/lib/modules/2.6.33.1/extra/drm.ko
/lib/modules/2.6.33.1/extra/nouveau/nouveau.ko
6. We erase the corresponding modules shipped with package kernel-modules-2.6.33.1 as otherwise they would conflict with the new ones, and make the system aware of the new ones
7. We grab the source of the nouveau driver for X
8. We make this driver, whose name is nouveau_drv.so
9. We become root again (did you guess ?)
10. We put nouveau_drv.so where it should go, which depends on the ARCH of your distribution
11. Be aware that you'll get a snapshot, so your mileage may vary
12. This will create a directory in /lib/firmware with the many firmware files needed for various GPU
13. Minimum /etc/X11/xorg.conf for nouveau to work under X. Tune it to your liking.
14. Does that need an explanation ?
15. If you are superstitious, cross your fingers first. Anyhow, the chances that this will trigger an earthquake and/or a tsunami can be considered low, according to experts.

Would you ever like to go back to a "stock" slackware-current, do this:
- rm -rf /lib/firmware/nouveau
- removepkg kernel-modules # don't reboot after that!
- rm -rf /lib/modules/2.6.33.1 # don't reboot after that!
- installpkg kernel-modules-2.6.33.1
- rm -f /usr/lib/xorg/modules/drivers/nouveau_drv.so or rm -f /usr/lib64/xorg/modules/drivers/nouveau_drv.so

As usual, "this don't work here", remarks, comments, proposed enhancements etc. are gratefully welcome.

But before you complain, look here. In particular anything remaining from a previous blob (nVidia's closed source driver) installation can cause problems.

Credits go to the nouveau Wiki, mainly:
http://nouveau.freedesktop.org/wiki/
http://nouveau.freedesktop.org/wiki/InstallNouveau
http://nouveau.freedesktop.org/wiki/InstallDRM
http://nouveau.freedesktop.org/wiki/FAQ
http://nouveau.freedesktop.org/wiki/TroubleShooting

GrapefruiTgirl 03-14-2010 06:13 PM

Didier, perhaps you can un-check "Automatically parse URLs" or somehow put the URLs in plain-text, so they aren't weirded like that? Looks like mainly the WGET links are affected.

And/or put the tutorial in code tags so it can be readily copied & pasted into a text editor?

Thanks :) I'll be trying this again eventually, not too distant future.

camerabambai 03-26-2010 02:44 PM

/home/giuseppe/master/drivers/gpu/drm/drm_sysfs.c:78: error: expected ')' before '(' token
/home/giuseppe/master/drivers/gpu/drm/drm_sysfs.c: In function 'drm_sysfs_create':
/home/giuseppe/master/drivers/gpu/drm/drm_sysfs.c:110: error: 'class_attr_version' undeclared (first use in this function)
/home/giuseppe/master/drivers/gpu/drm/drm_sysfs.c:110: error: (Each undeclared identifier is reported only once
/home/giuseppe/master/drivers/gpu/drm/drm_sysfs.c:110: error: for each function it appears in.)
/home/giuseppe/master/drivers/gpu/drm/drm_sysfs.c: In function 'drm_sysfs_destroy':
/home/giuseppe/master/drivers/gpu/drm/drm_sysfs.c:133: error: 'class_attr_version' undeclared (first use in this function)
make[2]: *** [/home/giuseppe/master/drivers/gpu/drm/drm_sysfs.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [_module_/home/giuseppe/master/drivers/gpu/drm] Error 2

Thanks for howto,i get this error with current master
repos,someone can help?
Thanks

Wow!
Found this..

http://mirror.leaseweb.com/archlinux/other/nouveau-drm/

Perfect works fine.
I have build pkgs,if someone intersted

http://rapidshare.com/files/36856321...4-1mg.txz.html
http://rapidshare.com/files/36856321...4-1mg.txz.html
http://rapidshare.com/files/36856321...4-1mg.txz.html

I have also enable 3d(very slow compared
to nvidia binary).

Didier Spaier 03-26-2010 03:43 PM

Same here. My guess is that's because of the last update of the nouveau git tree last Monday, see latest news on top of this page. So either install 2.6.34-rc2 (which could break some other thing, by the way...) or use an alternate installation method as explained there.

Good luck ;)

PS meanwhile I can't compile xf86-video-nouveau any more either, at least against 2.6.34-rc1. Dunno why ???

I'm going to try against 2.6.33 and 2.6.34-rc2 when I find time to do that and see what I come up with.

Too bad I dropped the last X module that I built successfully...

camerabambai 03-26-2010 04:49 PM

Someone know how to revert git repo?
Or better..a working master.tar.gz
for kernel-2.6.33?
Thanks

GrapefruiTgirl 03-26-2010 04:53 PM

To switch to and clone a particular version of the repo using tags, enter your local repo and use:
Code:

git reset --hard <version-of-whatever-it-is>

git checkout -f <branch>

git pull <optional remote-repo-address>

If not using tags, I'm not sure -- git does a lot of stuff I'm not familiar with yet.

Sasha :)

HerbertJ 03-26-2010 10:02 PM

Hello, I just upgraded to current 64, and now I just get a blank screen after some text on nouveau.
The only think I can think of is that my monitor doesnt support whatever resolution nouveau is setting itself to.
I can only assume that whatever genius programmed this thing never considered the possibility of a monitor that only supports 1024x768 and set the resolution way too high. Nice one whoever you are. Well as it stands I can no longer do anything with my computer. Since I can't see what im typing I cant update the computer too easily whenever an update does come out. Plus all these xorg nouveau hacks dont apply to me since I don't get that far.

Of course, perhaps this is the slackware teams idea of a sick joke, the driver being pronounced no-view, and its exactly what I got.

So the question is, is there anyway to disable no-view at boot, or am i without hope?

mRgOBLIN 03-26-2010 11:03 PM

Blacklist the nouveau module

camerabambai 03-27-2010 08:41 AM

Quote:

Originally Posted by Hefty Herb (Post 3913970)
Hello, I just upgraded to current 64, and now I just get a blank screen after some text on nouveau.
The only think I can think of is that my monitor doesnt support whatever resolution nouveau is setting itself to.
I can only assume that whatever genius programmed this thing never considered the possibility of a monitor that only supports 1024x768 and set the resolution way too high. Nice one whoever you are. Well as it stands I can no longer do anything with my computer. Since I can't see what im typing I cant update the computer too easily whenever an update does come out. Plus all these xorg nouveau hacks dont apply to me since I don't get that far.

Of course, perhaps this is the slackware teams idea of a sick joke, the driver being pronounced no-view, and its exactly what I got.

So the question is, is there anyway to disable no-view at boot, or am i without hope?

Blacklist nouveau and drm,is necessary even with new drivers.

linus72 03-27-2010 08:52 AM

Yeah, I'm going thru this over multiple installs
http://www.linuxquestions.org/questi...-1.7.5-798225/

camerabambai 03-27-2010 11:19 AM

Someone know if is possible to get
nouveau+3d in a pv-ops or xen patched
kernel(dom0)?
Thanks

http://pastebin.com/9SKa269E

This is the crash with nouveau+xen kernel
of course nouveau recompiled for new sources

HerbertJ 03-27-2010 10:58 PM

Is there anyway to blacklist it from lilo at bootup? I've looked around and I see no way to do that thats standardized, and no specific way to do it in slackware.

slowpoke 03-27-2010 11:58 PM

Didier Spaier:
Thanks!!!

Didier Spaier 03-28-2010 03:57 AM

@Hefty Herb: as stated in the first post, edit the file /etc/modprobe.d/blacklist.conf and append following line at the end :
Code:

blacklist nouveau
You could re-compile the kernel without nouveau as well but frankly you'd waste your time IMHO.

@Slowpoke: you are welcome ;)

HerbertJ 03-28-2010 11:35 PM

Thanks for the reply didier Spaier. As I stated before, I boot into a black screen so I cant even see a login prompt, so I was asking if I could somehow blacklist it at boot time, as in, from lilo. Yes I could go through the trouble of downloading a boot CD, mount my partition, and make the changes. Might as well download another distro and install it. Thanks for the sarcasm that indicated I'm too stupid to read the previous replys. Now everyone know what kind of a-hole you are.

Thats ok, I had a good 10 year run with slackware. Time to move on I guess.


All times are GMT -5. The time now is 05:22 AM.