HOWTO: Get AMD/ATI or Nvidia Video Cards working in Sabayon

From Sabayon Wiki
Revision as of 18:06, 21 May 2014 by Darksurf (Talk | contribs) (Block nouveau driver)

Jump to: navigation, search
i18n: en pl


AMD - Open Source to FGLRX

-(UPDATED 5.5.13 Thanks to anomaly65) https://forum.sabayon.org/viewtopic.php?f=56&t=28808

-(UPDATED "Roll Back" Since 'nox' option doesn't seem to work with systemd)

Stop.png
SUPPORTED HARDWARE

This only covers HD5XXX series and higher. The r600-HD4xxx are on hold due to other portions of system incompatibility. This doesn't cover hybrid (i.e. intel-ati on many new laptops) as I don't have one to test on.

Stop.png
CROSSFIRE

Do you have an AMD system? Do you have IOMMU enabled? Crossfire DOES NOT WORK when IOMMU is enabled. You will need to make sure it it disabled in the BIOS. There is a catch, if you system was setup with IOMMU enabled, your linux setup may depend on IOMMU for your inputs meaning your Keyboard and Mouse could quit responding in Linux if you disable IOMMU.

Re-enabling IOMMU would bring them back, but CROSSFIRE will refuse to work. You may end up requiring re-installing or repairing your install with IOMMU disabled to get Crossfire. Why is Windows not affected by this option you ask? IOMMU is strictly a Linux option/enhancement. Windows has a dummy driver which ignores IOMMU entirely.

Prepare

Lets prepare the system for a fresh install of the ati-drivers package and block the conflicting driver Radeon at boot. be sure to look at the first part of the line. $ is for user while # is for root!

user@localhost ~ $ su
localhost root # equo update --force
localhost root # equo remove ati-drivers
localhost root # equo remove xf86-video-ati
localhost root # equo remove x11-base/xorg-drivers
localhost root # equo remove --configfiles xf86-video-ati
localhost root # echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf

If your radeon module is still loaded after boot and you have added it to the modprobe blacklist, look into /etc/conf.d/modules to see if it is listed in the modules line.


Now we need to disable KMS (Kernel Mode Setting)

localhost root # nano /etc/default/grub

Editing /etc/default/grub

You will notice a Difference. I have highlighted in Red what needs to be added.

    # Copyright 1999-2012 Gentoo Foundation
    # Distributed under the terms of the GNU General Public License v2
    # $Header: /var/cvsroot/gentoo-x86/sys-boot/grub/files/grub.default-2,v 1.2 2012/06/28 22:36:53 floppym Exp $
    #
    # To populate all changes in this file you need to regenerate your
    # grub configuration file afterwards:
    #     'grub2-mkconfig -o /boot/grub2/grub.cfg'
    #
    # See the grub info page for documentation on possible variables and
    # their associated values.
    GRUB_DEFAULT=saved
    GRUB_DISTRIBUTOR="Sabayon"
    
    GRUB_HIDDEN_TIMEOUT=0
    GRUB_HIDDEN_TIMEOUT_QUIET=true
    GRUB_TIMEOUT=5
    GRUB_DISABLE_LINUX_UUID=true
    
    GRUB_CMDLINE_LINUX_DEFAULT=""
    GRUB_CMDLINE_LINUX="nomodeset"
    
    # Uncomment to disable graphical terminal (grub-pc only)
    #GRUB_TERMINAL=console
    

Install

Now install new kernel and drivers.

localhost root # equo install sys-kernel/linux-sabayon
localhost root # equo install sys-kernel/sabayon-sources
localhost root # equo install x11-drivers/ati-drivers ati-userspace amdcccle


Now use eselect to set the soft links(shortcuts) to the proper libraries and files. eselect allows us to keep different libraries so we can switch without damaging the system by replacing important files.

First off we need to know which is our new kernel and bzimage

localhost root # eselect bzimage list
localhost root # eselect kernel list


You should get something like this...

localhost root # eselect bzimage list
Available kernel targets:
  [1]   kernel-genkernel-x86_64-3.8.0-sabayon *
  [2]   kernel-genkernel-x86_64-3.9.0-sabayon
localhost root # eselect kernel list
Available kernel symlink targets:
  [1]   linux-3.8.0-sabayon
  [2]   linux-3.9.0-sabayon *
localhost root # 


Now select the newer bzimage and kernel and switch to the AMD/ATI libraries.

localhost root # eselect bzimage set 2
localhost root # eselect kernel set 2
localhost root # eselect opencl set amd
localhost root # eselect opengl set ati


Need an updated or new xorg.conf? If you weren't using fglrx before then... yes. Backup old and update.

localhost root # cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak
localhost root # /opt/bin/aticonfig --initial

OK now reboot!

Configure

Once you login and decide you want to set resolutions and extra settings open amdcccle.

user@localhost ~ $ xhost +
user@localhost ~ $ kdesu /opt/bin/amdcccle
Question.png
xhost command

Are you getting the error below when using kdesu,gksu, or sudo for an application with a GUI?

No protocol specified xhost: unable to open display ":0.0"


There has been some security work done to prevent this. Using the xhost command above you can temporarily disable access control for X allowing kdesu,gksu, and sudo for X applicaions to work.

Clean (optional)

Once you have everything working you can remove the old kernel if you like. MAKE SURE YOU SELECT THE CORRECT KERNEL! Look using "equo search linux-sabayon" then copy and paste!

user@localhost ~ $ su
localhost root # equo remove sys-kernel/linux-sabayon-3.8.10


Roll Back

If you're looking at this. We are either curious or ran into a snag.

Good News: everything is reversible!

Bad News: you're stuck in a terminal until its fixed! But you knew that didn't you ;)

With your computer powered off, connect the computer to the internet via a cable and then press the power button. When you reach the Grub selection screen press an arrow key to halt the timer and select the "Advanced Options....". Then you will select the option with "(Recovery Mode)"

This will take you through the normal boot process, then will put you at a CLI screen and request the root password. Enter the root password and you will be brought into a terminal as root!

Now to start putting things back!

localhost root # equo update
localhost root # equo remove ati-drivers ati-userspace amdcccle
localhost root # equo install xf86-video-ati
localhost root # equo install x11-base/xorg-drivers
localhost root # eselect opengl set xorg-x11
localhost root # sed -i '/blacklist radeon/d' /etc/modprobe.d/blacklist.conf
localhost root # sed -i 's/\<nomodeset\>//g' /etc/default/grub
localhost root # cp /etc/X11/xorg.conf.bak /etc/X11/xorg.conf

Now reboot! Now you are back on the Open Source Drivers! You will keep your upgraded kernel so that was not reverted. (reason for less steps)

Question.png
SED

I'm sure you have noticed the sed command. This may make some people leary as not everyone understands this command. "sed" stands for "stream editor". It can edit the edit file for you by deleting lines, words, strings, etc. In this case we are using it to remove the Line we added in blacklist.conf and the command we added in grub.

If you don't feel fully comfortable about this command. Back up your file or use nano (vi etc.) to edit the file!

NVIDIA

If for some reason you don't have proprietary Nvidia drivers installed and you want them, there are simple steps to follow.

Update package database

First thing is to make sure that package database is up to date.

# equo update --force

Available driver version

To get a list of all drivers for all kernels that are available:

$ equo search -qv nvidia-drivers

List of all drivers versions available for currently running kernel:

$ equo search -qv nvidia-drivers#$(uname -r)

Installation

Knowing what driver version you want to install (usually the newest, i.e. highest number version, it may differ if you have old card that needs older drivers):

Newest drivers for currently running kernel

# equo install --ask nvidia-driver#$(uname -r) nvidia-userspace

Will install newest driver available for currently running kernel.

Older drivers for currently running kernel

List Nvidia drivers for your current kernel (insturctions above), and install it along with corresponding nvidia-userspace, e.g.:

# equo install --ask nvidia-drivers-304.108#$(uname -r) nvidia-drivers-304.108

Block nouveau driver

For Nvidia drivers to work properly nouveau can't be loaded. Thus, it must be blocked.

# echo blacklist nouveau >> /etc/modprobe.d/blacklist.conf 

Set Nvidia drivers as active

# eselect opengl set nvidia