Revision as of 05:38, February 19, 2011 by Init 6 (Talk)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This howto describes how to use nvidia and nouveau drivers on the same computer and kernel.

Create a boot option for easy nvidia or nouveau display driver switching

You must know how to install nvidia drivers and nouveau(references at the end of the page). First you need to configure your kernel and install nvidia drivers and nouveau. We assume that this stage is successfully passed.


Next the actual most important change:

# cat /etc/boot.conf
boot {
	generate grub
	default "Funtoo Linux [nvidia]" 
	# or
	# default "Funtoo Linux [nouveau]"
	timeout 3 

color {
	normal cyan/blue
	highlight blue/cyan

display {
	#gfxmode 1280x800
	#font unifont.pf2

"Funtoo Linux [nvidia]" {
	kernel vmlinuz[-v]
	params += ro console=tty1 quiet <other standard boot options>
	params += nouveau.blacklist=true vga=791 # nouveau.blacklist=true is important
	# or
	# params += nouveau.blacklist=true video=uvesafb:1440x900-8,mtrr:2

"Funtoo Linux [nouveau]" {
	kernel vmlinuz[-v]
	params += ro console=tty1 quiet <other standard boot options>
	params += nvidia.blacklist=true # nvidia.blacklist=true is important

After boot-update with the new settings, you should have something like

#grep menuentry /boot/grub/grub.cfg | wc -l
#grep menuentry /boot/grub/grub.cfg
menuentry "Funtoo Linux [nouveau] - vmlinuz-" {
menuentry "Funtoo Linux [nvidia] - vmlinuz-" {

xcfgmaker deamon

mkdir /etc/X11/video/; 
cd /etc/X11/video/;
nano 10-monitor.conf.nouveau # make default config for nouveau. or copy existing config… 
nano 10-monitor.conf.nvidia # also for nvidia

Then create a new daemon

# cat /etc/init.d/xcfgmaker 

# by
# To be placed in /etc/init.d/
# Run Command: rc-update add xcfgmaker boot

   need localmount
   before xdm-setup
   before xdm
   before alsasound


   cmdline_display_mode_exist=$(cat /proc/cmdline | grep -e "nouveau.blacklist=" -e "nvidia.blacklist=")
   display_mode_nvidia_exist=$(ls /etc/X11/video/ | grep "10-monitor.conf.nvidia")
   display_mode_nouveau_exist=$(ls /etc/X11/video/ | grep "10-monitor.conf.nouveau")
   cmdline_display_mode=$(cat /proc/cmdline | awk -Fnvidia.blacklist= '{print $2}' | awk '{print $1}')
   if [ -n "$cmdline_display_mode_exist" ]; then
      if [ -n "$display_mode_nvidia_exist" ] && [ -n "$display_mode_nouveau_exist" ]; then
            #Choose the xorg file to be copied over
            if [ "$cmdline_display_mode" == "true" ]; then
               ebegin "Configuring X display with nouveau"
               cp /etc/X11/video/10-monitor.conf.nouveau /etc/X11/xorg.conf.d/10-monitor.conf
               eselect opengl set xorg-x11 >/dev/null 2>&1;
               ebegin "Configuring X display with nvidia"
               cp /etc/X11/video/10-monitor.conf.nvidia /etc/X11/xorg.conf.d/10-monitor.conf
               eselect opengl set nvidia >/dev/null 2>&1;
         sleep 5
         eend 0
         ebegin "Xorg file missing. Exitting"
         eend 0


And do not forget

chmod +x /etc/init.d/xcfgmaker
rc-update add xcfgmaker boot

That's all kids ;)

Additional links