startx fails with new kernel

Patrick Dupre patrick.dupre at york.ac.uk
Mon Feb 27 20:34:39 UTC 2012


On Sat, 18 Feb 2012, Marko Vojinovic wrote:

> On Friday 17 February 2012 22:18:58 Patrick Dupre wrote:
> >> On Wednesday 15 February 2012 20:08:22 Patrick Dupre wrote:
> >> But could you tell me exactly what I should do?
> >> 
> >> I removed xorg-x11-drv-nouveau (and xorg-x11-drivers), but I did
> >> not get any improvements (see below)
> >> 
> >> Then I even cannot get back with the 1920x1080 resolution even with
> >> the previous kernel. So reinstalled the removed packages.
> >
> >If you want to use nVidia's binary blob, then in general you should:
> >
> >(a) enable rpmfusion repositories (you probably have done that already),
> >and
> >(b) do a "yum install akmod-nvidia".
> >
> >The latter will blacklist nouveau driver, rebuild your initrd image so
> >that
> >nouveau doesn't get loaded on reboot, build the nVidia binary blob
> >against
> >your running kernel (preferably the latest one), and set up xorg.conf
> >appropriately for nVidia driver to work. After that you must reboot for
> >the whole thing to take effect.
> 
> Do you mean that I should recompile a kernel?

No, there is no need to recompile the whole kernel. Just the graphics driver, 
which is a kernel module.

> To come back to the issue. I can run the graphics with the kernel 3,2,3-2
> and if it does not work with the new kernel 3,2,5-3, I can only think that
> the new kernel has not been build up properly. However, when I compare the
> 2 files /usr/src/kernels/3.2.3-2.fc16.x86_64/.config  and
> /usr/src/kernels/3.2.5-3.fc16.x86_64/.config
> they are identical. Then I can deduce that is is probably a modules
> issues.

Precisely. The kernel configs have nothing to do with the graphics driver. The 
graphics driver is a kernel module, and apparently you have one for the 
3.2.3-2 kernel, while you don't have it for the 3.2.5-3 kernel.

> lsmod does seem to show that the module nvidia.ko is loaded

No, it doesn't, the word "nvidia" doesn't appear anywhere in the list. See 
below for an explanation.

> tcp_lp                 12663  0
> fuse                   77538  5
> lockd                  84578  0
> nf_conntrack_ipv4      14622  8
> nf_defrag_ipv4         12673  1 nf_conntrack_ipv4
> ip6t_REJECT            12939  2
> nf_conntrack_ipv6      14290  8
> nf_defrag_ipv6         18139  1 nf_conntrack_ipv6
> xt_state               12578  16
> nf_conntrack           82331  3
> nf_conntrack_ipv4,nf_conntrack_ipv6,xt_state
> ip6table_filter        12815  1
> ip6_tables             26976  1 ip6table_filter
> be2iscsi               72362  0
> iscsi_boot_sysfs       15641  1 be2iscsi
> bnx2i                  54521  0
> cnic                   58676  1 bnx2i
> uio                    19067  1 cnic
> cxgb4i                 32909  0
> cxgb4                 102888  1 cxgb4i
> cxgb3i                 32972  0
> libcxgbi               56477  2 cxgb4i,cxgb3i
> cxgb3                 155412  1 cxgb3i
> mdio                   13398  1 cxgb3
> ib_iser                38073  0
> rdma_cm                41898  1 ib_iser
> ib_cm                  41692  1 rdma_cm
> iw_cm                  18176  1 rdma_cm
> ib_sa                  28407  2 rdma_cm,ib_cm
> ib_mad                 46392  2 ib_cm,ib_sa
> ib_core                73791  6 ib_iser,rdma_cm,ib_cm,iw_cm,ib_sa,ib_mad
> ib_addr                13748  1 rdma_cm
> iscsi_tcp              18333  0
> libiscsi_tcp           23970  4 cxgb4i,cxgb3i,libcxgbi,iscsi_tcp
> libiscsi               50527  8
> be2iscsi,bnx2i,cxgb4i,cxgb3i,libcxgbi,ib_iser,iscsi_tcp,libiscsi_tcp
> scsi_transport_iscsi    51823  8
> be2iscsi,bnx2i,libcxgbi,ib_iser,iscsi_tcp,libiscsi
> snd_hda_codec_hdmi     36277  4
> joydev                 17412  0
> snd_hda_codec_via      46559  1
> snd_hda_intel          33276  3
> snd_hda_codec         114615  3
> snd_hda_codec_hdmi,snd_hda_codec_via,snd_hda_intel
> snd_hwdep              17611  1 snd_hda_codec
> snd_seq                64807  0
> snd_seq_device         14129  1 snd_seq
> snd_pcm                97100  4
> snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
> ppdev                  17635  0
> parport_pc             28082  0
> parport                44515  2 ppdev,parport_pc
> snd_timer              28815  2 snd_seq,snd_pcm
> edac_core              51619  0
> snd                    74425  14
> snd_hda_codec_hdmi,snd_hda_codec_via,snd_hda_intel,snd_hda_codec,snd_hwdep,s
> nd_seq,snd_seq_device,snd_pcm,snd_timer edac_mce_amd           22882  0
> sp5100_tco             13697  0
> soundcore              14484  1 snd
> serio_raw              13371  0
> r8169                  60789  0
> mii                    13527  1 r8169
> snd_page_alloc         18101  2 snd_hda_intel,snd_pcm
> i2c_piix4              13694  0
> microcode              23240  0
> k10temp                13119  0
> uinput                 17606  0
> sunrpc                235041  2 lockd
> binfmt_misc            17431  1
> ata_generic            12899  0
> pata_acpi              13027  0
> pata_atiixp            13197  0
> nouveau               763073  2
> ttm                    68749  1 nouveau
> drm_kms_helper         40141  1 nouveau
> drm                   225935  4 nouveau,ttm,drm_kms_helper
> i2c_algo_bit           13156  1 nouveau
> i2c_core               37955  5
> i2c_piix4,nouveau,drm_kms_helper,drm,i2c_algo_bit
> mxm_wmi                12823  1 nouveau
> wmi                    18697  1 mxm_wmi
> video                  18932  1 nouveau
> 
> 
> Could you please clarify the situation?

Ok, this is how it all works. The driver for your nVidia graphics hardware is 
a kernel module. The module version has to match the kernel version, so you 
need one driver module for each kernel. Technically speaking, the module needs 
to be built "against the appropriate kernel", typically while that kernel is 
running.

There are two different graphics drivers for nVidia cards. One is called 
"nouveau", and is an open-source driver provided by Fedora out-of-the-box. The 
other is called "nvidia", and is a closed-source driver provided by nVidia 
(also commonly called "binary blob"). The nvidia driver mostly works better 
than nouveau, since nouveau is still under development.

Nouveau and nvidia modules cannot coexist. If nouveau is to work properly, 
nvidia driver must be uninstalled from the machine. If nvidia is to work 
properly, nouveau needs to be blacklisted and unistalled from the initrd. 
Since the Fedora's kernel automatically loads nouveau on boot (if it is not 
blacklisted), one needs to reboot the machine in order to switch from nouveau 
to nvidia (or vice-versa).

The nvidia driver can be obtained in two different ways. One way is to download 
the appropriate .run file from nVidia website and run it. This is the *wrong* 
way, since it doesn't play nice with Fedora, overwrites some system files, and 
is a pain to remove once installed. The other way is to install (via yum) the 
package called akmod-nvidia, which is provided by the rpmfusion repository. 
This is the *correct* way, since that package was designed precisely for 
Fedora, doesn't overwrite system files and can be easily removed. The driver 
itself (the nvidia kernel module) is the same as the one provided by nVidia 
website --- the difference is in the details of the installation procedure.

For your situation, I suggest the following:

(1) Run "yum update". There is a new kernel available (3.2.6-3), and you 
should install it.

Done

(2) Run "mv /etc/X11/xorg.conf /etc/X11/xorg.conf-backup". This will rename 
the xorg.conf file (if you have it), and let X run with default configuration 
(i.e. without an xorg.conf file) after a reboot.

Evey time that I create a xorg.conf file I cannot start the graphics.
The only way was to create a xorg.conf.d directory (see attached file)
Is it because I am running nouveau and not the nvidia package?


(3) Boot into the new kernel. Since you have just installed it, and since 
there is no xorg.conf, the nouveau driver should be activated. Maybe it will 
have problems running on your graphics card (it shouldn't, but...), and maybe 
you will not have high resolution, or even X might not start at all. That is 
ok, it doesn't matter, as long as you do the next step.

(4) Run "yum install akmod-nvidia". Let it install. It will provide the nvidia 
driver matching your new kernel, it will write a new xorg.conf, it will 
blacklist nouveau and remove it from initrd of your kernel. It might take some 
time to complete.

It is already installed, should I keep it or remove it?


Thank for your help.



(5) Reboot the machine again into the latest kernel. This is necessary in 
order to change from nouveau to nvidia driver.

If all is well, the nvidia driver should be loaded and X should work 
perfectly, high resolution and all. If it doesn't work, post the contents of 
/var/log/Xorg.0.log file back to us, so that we can see why it doesn't work and 
tell you how to fix it.

I hope this was clear enough. Just follow the steps (1) - (5), and it should 
start working again.

Note that once you have installed akmod-nvidia, in the future when a new 
kernel gets installed with an update, everything will happen automatically and 
you do not need to do anything in order to get the nvidia driver for that new 
kernel. The above (1)-(5) procedure should be done only once, and after that 
it will work automatically for every new kernel.

HTH, :-)
Marko


-- 
users mailing list
users at lists.fedoraproject.org
To unsubscribe or change subscription options:
https://admin.fedoraproject.org/mailman/listinfo/users
Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines
Have a question? Ask away: http://ask.fedoraproject.org

-- 
---
==========================================================================
  Patrick DUPRÉ                      |   |
  Department of Chemistry            |   |  Phone: (44)-(0)-1904-434384
  The University of York             |   |  Fax:   (44)-(0)-1904-432516
  Heslington                         |   |
  York YO10 5DD  United Kingdom      |   |  email: patrick.dupre at york.ac.uk
==========================================================================


More information about the users mailing list