boot drops to tty1 after 'nvidia the hard way'

Hi, I’m new to the forums here,

I had been running Tumbleweed for some time without any problems, but then I decided to go with nvidia’s proprietary drivers for my graphics card. Now I have multiple issues and I can’t seem to find a solution on the forums or in the wiki, so maybe someone could bear with me.

Issue #1:
When installing “NVIDIA Accelerated Graphics Driver for Linux-x86_64 (346.35)” according to https://en.opensuse.org/SDB:NVIDIA_the_hard_way everything works fine until building the 32bit compatibility libraries. The step fails with following error:

"ERROR: Failed to execute `/sbin/ldconfig`:"

I chose to continue installation anyway as installer suggested. I let installer update X configuration.

After this I use

sudo rcxdm restart

Which will bring up the normal GUI logon prompt. Now I can use the system without any issues (aside from 32bit libraries supposedly not working, but this didn’t produce any real problems for me).

Issue #2 (the real problem for me):
However, once I reboot the system the GUI won’t come up as expected and I get dropped to tty1.
First thing I did was logon as user and

sudo rcxdm restart

Which will make the screen flicker and then go back to console. When switching to X session with ctrl alt F7 I see the console log; right now it hangs at:

  OK  ]  Started rule generator for /dev/root symlink.
  OK  ]  Reached target Graphical Interface.emand.lity....

I’m not sure that it’s always is at this position, because I thought I read something different earlier, but now I can only reproduce this.

I got xdm.errors:

xdm info (pid 2719): Startingxdm info (pid 2719): Starting X server on :0

X.Org X Server 1.17.1
Release Date: 2015-02-10
X Protocol Version 11, Revision 0
Build Operating System: openSUSE SUSE LINUX
Current Operating System: Linux cosmos 3.19.0-2-desktop #1 SMP PREEMPT Tue Feb 17 20:11:30 UTC 2015 (1133f88) x86_64
Kernel command line: BOOT_IMAGE=/vmlinuz-3.19.0-2-desktop root=UUID=292d67a1-6466-4f1f-808a-f2bd4f7bd69d resume=/dev/disk/by-uuid/1f139c45-f992-46bb-98af-f9918637c619 splash=silent quiet showo$
Build Date: 16 February 2015  06:45:00PM

Current version of pixman: 0.32.6
        Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Tue Feb 24 12:45:41 2015
(==) Using config file: "/etc/X11/xorg.conf"
(==) Using config directory: "/etc/X11/xorg.conf.d"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
(EE)
Fatal server error:
(EE) no screens found(EE)
(EE)
Please consult the The X.Org Foundation support
         at http://wiki.x.org
 for help.
(EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
(EE)
VGA Arbitration: Cannot restore default device.
(EE) Server terminated with error (1). Closing log file.
xdm error (pid 2719): server unexpectedly died

I got errors in Xorg.0.log.old:

    31.073] (II) NVIDIA Unified Driver for all Supported NVIDIA GPUs    31.073] (++) using VT number 7

    31.073] (II) Loading sub module "fb"
    31.073] (II) LoadModule: "fb"
    31.073] (II) Loading /usr/lib64/xorg/modules/libfb.so
    31.073] (II) Module fb: vendor="X.Org Foundation"
    31.073]    compiled for 1.17.1, module version = 1.0.0
    31.073]    ABI class: X.Org ANSI C Emulation, version 0.4
    31.073] (II) Loading sub module "wfb"
    31.073] (II) LoadModule: "wfb"
    31.073] (II) Loading /usr/lib64/xorg/modules/libwfb.so
    31.074] (II) Module wfb: vendor="X.Org Foundation"
    31.074]    compiled for 1.17.1, module version = 1.0.0
    31.074]    ABI class: X.Org ANSI C Emulation, version 0.4
    31.074] (II) Loading sub module "ramdac"
    31.074] (II) LoadModule: "ramdac"
    31.074] (II) Module "ramdac" already built-in
    31.074] (EE) NVIDIA: Failed to initialize the NVIDIA kernel module. Please see the
    31.074] (EE) NVIDIA:     system's kernel log for additional error messages and
    31.074] (EE) NVIDIA:     consult the NVIDIA README for details.
    31.074] (EE) No devices detected.
    31.074] (EE)
Fatal server error:
    31.074] (EE) no screens found(EE)
    31.074] (EE)

My solution as of now:

  • cd to nvidia driver’s directory
  • ./nvidia_driver.run
  • rcxdm restart
  • works like a charm again…

…but after reboot issue reappears. I can’t / don’t want to rebuild the driver everytime I reboot the system. What am I doing wrong, what should I do?

Thanks for reading and for any suggestions/explanations.

As per the Tumbleweed wiki page at https://en.opensuse.org/Portal:Tumbleweed

Due to the Linux kernel being updated very frequently,** users who rely on proprietary graphic drivers should not use the Tumbleweed distribution unless they are familiar with updating these drivers from source on their own**. See articles NVIDIA and ATI, section “The hard way”, for how to do this if you are interested.

Note that the additional Packman repositories are available for Tumbleweed!

I won’t take a stance on whether it should be ‘done better’ but as it stands, you’re SOL and need to manually compile the drivers or run the open source versions, respective to your card.

Well, the problem is that the nvidia kernel module cannot be loaded…

  • Did you blacklist “nouveau”?
    You have to do that manually if you install “the hard way” to prevent nouveau from being loaded.

And try to add “nomodeset” to the kernel boot options as well, to prevent nouveau from being loaded from the initrd already.

  • Try to run “sudo mkinitrd” afterwards. This should remove nouveau from the initrd and add the nvidia module instead.

  • remove /etc/X11/xorg.conf, then Xorg should start even if nvidia is not working

Btw, I have heard about problems with nvidia and kernel 3.19 which is now part of Tumbleweed.
Although then it shouldn’t work immediately after the installation either I suppose…

@Miuku: I don’t know what I should take away from your post. The Tumbleweed Portal you linked says basically the same as the wiki page I linked in OP. It is normal behavior to rebuild after kernel update (and I wouldn’t mind that), however, not every reboot. That’s not the same and I don’t change kernel with every reboot. It’s not a Tumbleweed issue, it’s either a problem with my system or me doing something stupid. I don’t have any other context to interpret your post.

@wolfi323: Thanks for your response. I’ll try to answer in a coherent way. I blacklisted nouveau using modprobe config file (edited with nano). In addition I set nouveau.modeset=0 in kernel parameters and nomodeset is included in my failsafe command line (this was done using YaST2 bootloader configuration).

cat /etc/modprobe.d/50-blacklist.conf | grep -i '# nvidia' -A1
# NVIDIA
blacklist nouveau
YaST2 - bootloader @ cosmos
Bootloader-Einstellungen
  ┌Bootcode-Optionen──Kernel-Parameter──Bootloader-Optionen───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
  │                                                                                                                                                                                           │
  │ Optionaler Parameter für Kernel-Befehlszeile                                                                                                                                              │
  │  resume=/dev/disk/by-uuid/1f139c45-f992-46bb-98af-f9918637c619 splash=silent quiet showopts noplymouth nouveau.modeset=0▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ │
  │                                                                                                                                                                                           │
  │                                                                                                                                                                                           │
  │ Failsafe-Parameter für Kernel-Befehlszeile                                                                                                                                                │
  │ showopts apm=off noresume edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 nomodeset x11failsafe textonly single▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ 

Sorry, the code tags screw up the arrangement, but you can see the switches I used. Should I replace nouveau.modeset=0 with nomodeset for normal boot, so that video gets handed back to user space entirely? I ran dmesg to see whether the kernel ring buffer sees the parameters and it does:

dmesg | grep -i 'nouveau'
    0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.19.0-2-desktop root=UUID=292d67a1-6466-4f1f-808a-f2bd4f7bd69d resume=/dev/disk/by-uuid/1f139c45-f992-46bb-98af-f9918637c619 splash=silent quiet showopts noplymouth nouveau.modeset=0
    0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-3.19.0-2-desktop root=UUID=292d67a1-6466-4f1f-808a-f2bd4f7bd69d resume=/dev/disk/by-uuid/1f139c45-f992-46bb-98af-f9918637c619 splash=silent quiet showopts noplymouth nouveau.modeset=0

After I submit this post I will try to set nomodeset and see if it makes any difference but I don’t see a reason to prefer it over nouveau.modeset=0 for normal boot.

I went ahead and ran the installer once again. Again working. I don’t get why I can start rcxdm directly after the installation script finishes but not after a reboot. And when X is working there’s no nouveau in use:

lspci -nnk | grep -i 'VGA' -A203:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF110 [GeForce GTX 580] [10de:1080] (rev a1)
    Subsystem: Micro-Star International Co., Ltd. [MSI] Device [1462:2550]
    Kernel driver in use: nvidia
    
lsmod | grep -i 'nvidia'
nvidia               8378353  32
drm                   363977  2 nvidia


lsmod | grep -i 'nouveau'

While looking for errors related to X I stumbled across log entries detailing my first issue (just putting this here, as I said it’s not really a problem for me - just curious if someone has an idea regarding it):

cat /var/log/nvidia-installer.log | grep -i 'failed'
   31.447041] NVRM: nvidia_frontend_ioctl: minor 255, module->ioctl failed, error -22
ERROR: Failed to execute `/sbin/ldconfig`:
-> The installer has encountered the following error during installation: 'Failed to execute `/sbin/ldconfig`'.  Would you like to continue installation anyway? (Answer: Continue installation)
   executing: '/usr/sbin/depmod -aq '...
-> done.
-> Driver file installation is complete.
-> Running post-install sanity check:
-> done.
-> Post-install sanity check passed.
-> Running runtime sanity check:
-> done.
-> Runtime sanity check passed.
-> Would you like to run the nvidia-xconfig utility to automatically update your X configuration file so that the NVIDIA X driver will be used when you restart X?  Any pre-existing X configuration file will be backed up. (Answer: Yes)
-> Your X configuration file has been successfully updated.  Installation of the NVIDIA Accelerated Graphics Driver for Linux-x86_64 (version: 346.35) is now complete.

Since I am at a loss (and in my book it shouldn’t work right after the installation, too) I will try using an earlier kernel after I tried nomodeset parameter.

Thank you and good night.

That I’m an idiot that can’t read :slight_smile:

My bad.

nouveau.modeset=0 should work as well, as the purpose is to prevent nouveau from loading (actually the blacklist alone should suffice).
OTOH, nvidia doesn’t support/use KMS anyway, so there shouldn’t really be a difference between that and nomodeset.

The “failsafe” line is irrelevant in this case, that one is only used if you select “Recovery Mode” in “Advanced Options” in the boot menu.
But as it includes the parameter “x11failsafe”, it won’t use nvidia anyway but a generic driver like fbdev or vesa.

Sorry, the code tags screw up the arrangement, but you can see the switches I used. Should I replace nouveau.modeset=0 with nomodeset for normal boot, so that video gets handed back to user space entirely?

As mentioned, it should not matter, and actually both should not be necessary.

I was just suggesting it to make sure nouveau is not loaded.
It it indeed strange that the driver would load directly after installation but not after reboot. So I thought maybe nouveau is preventing the loading of the nvidia kernel module, the nvidia installer might forcefully unload nouveau and load nvidia during the installation.

Have you run mkinitrd?

Another thing to check is that the nvidia kernel module actually exists in the correct directories.
Does this find it?

find /lib/modules -name nvidia.ko

Also try to run “sudo depmod -a” manually. Maybe the installer isn’t able to do that for some reason, you have a strange error about ldconfig too so that wouldn’t really surprise me… :wink:

I ran dmesg to see whether the kernel ring buffer sees the parameters and it does:

dmesg | grep -i 'nouveau'
    0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.19.0-2-desktop root=UUID=292d67a1-6466-4f1f-808a-f2bd4f7bd69d resume=/dev/disk/by-uuid/1f139c45-f992-46bb-98af-f9918637c619 splash=silent quiet showopts noplymouth nouveau.modeset=0
    0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-3.19.0-2-desktop root=UUID=292d67a1-6466-4f1f-808a-f2bd4f7bd69d resume=/dev/disk/by-uuid/1f139c45-f992-46bb-98af-f9918637c619 splash=silent quiet showopts noplymouth nouveau.modeset=0

So nouveau doesn’t seem to be loaded. Otherwise you’d see some messages from nouveau in the kernel log.

Btw, to see what parameters are used for the boot, you can also look into /proc/cmdline, and the Xorg log also mentions it… :wink:

I went ahead and ran the installer once again. Again working. I don’t get why I can start rcxdm directly after the installation script finishes but not after a reboot. And when X is working there’s no nouveau in use:

Of course not.
Your xorg.conf tells Xorg to use nvidia. Xorg will fail to start if nvidia cannot be loaded for some reason, it will not fall back to nouveau.

While looking for errors related to X I stumbled across log entries detailing my first issue (just putting this here, as I said it’s not really a problem for me - just curious if someone has an idea regarding it):

cat /var/log/nvidia-installer.log | grep -i 'failed'
   31.447041] NVRM: nvidia_frontend_ioctl: minor 255, module->ioctl failed, error -22
ERROR: Failed to execute `/sbin/ldconfig`:[/QUOTE]
Could you post the lines after that? Maybe they contain more information.

I have no idea why the installer fails to run ldconfig though.
You are running it as root/via sudo I hope? ;)

I probably have a different (older) nvidia card. It was working fine with Tumbleweed until the latest update.

That update installed kernel 3.19.0. So I tried to re-install the nvidia drivers so that they would work for that kernel. They didn’t install.

Next step was to reboot. On the grub boot screen, I chose the “Advanced” line, and selected booting with an older kernel. That worked and gave me graphics mode.

Then I edited “/etc/zypp/zypp.conf”. There’s a line:


multiversion.kernels = latest,latest-1,running

I changed that to:


multiversion.kernels = latest,latest-1,oldest,running

That way, on future kernel updates, it will retain the oldest kernel which I know still works with the nvidia driver.

Next I checked the nvidia site to see if they have a newer version of their driver installer. They didn’t. So I’ll stay with booting to that older kernel until they do. I can still boot to a newer kernel, but I’ll get only text mode. So I can test if the kernel is otherwise working. But I’ll need to stick with the older kernel for a GUI interface, at least until nvidia comes out with a new installer.

Most people here probably know, but for those new guys (like me):
Sometimes after a new kernel is installed, the NVIDIA driver will have to be reinstalled. Not a problem if you know, BUT it’s recommendable to be prepared BEFORE updating. That is, have the driver installer stored in a folder with an easy name and same for the driver. Then when you log in as root installing it is easy. After the last 3.19 upgrade I also had to do this manually. I just logged in as root and installed it and was back up and running in no time. I’m using the NVIDIA 340.76 driver (64bit). It works fine.

Something I forgot to mention and might be useful to someone new to using Tumbleweed… is this:
YAST is a great tool for having control over what changes happen to your machine. I think YAST and zypper, plus how they are maintained, sets openSUSE apart and above every other distro.

So, what I did when I was tired of NVIDIA drivers breaking after a “zypper up/dup” was…
Go into Software Management in Yast and set the kernel to ‘protect’. Then it will no longer update and it remains locked until you release it. I also ‘protected’ related packages like kernel-devel, but am not sure if that’s necessary as they are dependent on having the right kernel and probably wouldn’t change without that.
I would then wait until I knew NVIDIA had released usable drivers for the new kernel, but I could still keep updating everything else.

This was in the days that we had to patch the proprietary drivers and I hated having to do that.

In recent times (last 6 months or more) NVIDIA has vastly improved their support for the Linux kernel (maybe since Linus’s finger episode ;)) So, I have always found that the latest driver is up to date with the kernel. Even now, that is the case (with 3.19).

Finally, I would like to be more confident with using Nouveau, but even as recently as 3 weeks ago I tested it out with my Tesla card, but no go! All kinds of undesired annoyances and it lacks the polish and finesse that is apparent when using NVIDIA’s own drivers. Pity, because I would rather use opensource on principal.

Hello,

I recently had the same problem with the arrival of the 3.19 kernel. I could have fixed it with a bit more patience but I didn’t.
Instead I went back to the x11-video-nvidia mentioned at the bottom of this page:
https://en.opensuse.org/SDB:NVIDIA_the_hard_way#Tumbleweed_Repository_Notes

For example my card requires 340.76 so I added this repo:

http://download.opensuse.org/repositories/home:/Bumblebee-Project:/nVidia:/340.76/openSUSE_Tumbleweed/home:Bumblebee-Project:nVidia:340.76.repo

and with refreshed repos I then zypper installed x11-video-nvidia-340.76-60.1.x86_64.rpm which pulls in the rest of the required rpms.

After installation and reboot I was back in business.

If anyone wanted to try that method you can find your own required driver to match your card by scanning the list here:

http://download.opensuse.org/repositories/home:/Bumblebee-Project:/nVidia:/

Don’t be put off by the word bumblebee (hybrid drivers or somesuch). I recall that last year I used this method and survived many kernel updates.

This year I have been loading nvidia the hard way until the 3.19 kernel arrived and after wasting an afternoon decided to go back to the x11-video-nvidia

Whats the point of tumbleweed if we can’t take a chance?

BTW I have only ever added nomodeset to the linux boot line after quiet or showopts.

Nvida proprietary drivers are meant to do all the blacklisting of nouveau drivers for you.

Trusting this will help someone,

Hugh