Opensuse Leap 15.4 – Online Upgrade from Leap 15.3 on an Encrypted Laptop

After my retirement I was overwhelmed by a lot of typical German bureaucracy. But last weekend I used some time to start the long overdue upgrade of my old laptop from Opensuse Leap 15.3 to Leap 15.4. (The support for Leap 15.3 ended the at the end of 2022.)

I am always a bit afraid of upgrading my old laptop. It has a somewhat complicated configuration:

Its LVM volumes are fully encrypted with LUKS 2. It is an Optimus-System – and in the past it was not always easy to switch from the integrated Intel graphics card to the dedicated Nvidia card. Instead of Bumblebee I have used Opensuse’s Prime-Select with Leap 15.3. I use KDE as my graphical desktop environment. On Leap 15.3 I did not yet apply Wayland – but I intend to switch to Wayland with Leap 15.4. For some of my activities I also use Blender with full OpenGL support in form of a Flatpack installation. Furthermore, the laptop is used for both Machine learning, i.e. Python development, as well Web-development based on LAMP. So, it hosts a variety of services you normally find on servers. In addition we have KVM and VMware WS Pro installations. So, there are a lot of things which can go wrong. The Nvidia card is also an old one – a GT 645M which cannot be run with the latest generation of Nvidia drivers.

The good message is: The upgrade from leap 15.3 to 15.4 went very smoothly. At least regarding the things I was interested in. Below I describe the steps I have taken to upgrade. With some modifications you should be able to adapt it to your situation.

Backup of the encrypted LVM volume mounted on “/”

On my desktop PCs with Opensuse-installations, which I use for daily work, I follow a two-fold “backup”-policy ahead of upgrades: I copy my root-volume/partition to another LVM-volume or partition, and make it bootable in parallel to the existing installation. Reason: I want to be able to quickly switch to my present installation in case of trouble. As I have all of my personal and project data on separate LVM volumes with dedicated backups, the root-volume is the only one which I really must take care of. Therefore, I also copy it to a backup file on an external disk. For all data volumes I have a separate backup routine.

On my laptop I am a bit more relaxed: I just copy the volume mounted on “/” to an external disk. I have no second bootable installation on some other encrypted volume on the laptop. This means that I must boot a Live system or a Rescue system to make a backup of the unmounted “/”-volume.

For my purposes the Leap 15.3 “Rescue System”, which you can find on an DVD-ISO-image for the installation of Leap 15.3, was sufficient. You get the ISO image for such a DVD from opensuse.org and can burn it onto a DVD. The steps afterward were as follows:

  1. Boot your Leap 15.3 system. Check, on which partition or LVM volume your (encrypted) root-filesystem resides. Use e.g. YaST’s partitioner or gparted for this purpose. Shut down.
  2. Insert the DVD, select a boot menu, select the DVD, start from it, select “More …” in the GRUB-like menu, then select the DVD with the “Rescue System” and boot it.
  3. Login as root (no password required). Check that a tmpfs is mounted on / – and not some real partition.
    Note: The root-filesystem of our Leap-installation is NOT mounted on “/” of the rescue system. When I speak of the “root-filesystem” below I always refer to the filesystem containing the operative system of our current Leap 15.3 installation and not the root-fs of the rescue system.
  4. Check with command blkid what the device names of all accessible partitions and LVM volumes are. You should see encrypted and other volumes/partitions of your laptop disks/SSDs there.
  5. Plugin an external backup USB-disk. blkid should now also show the partitions on this disk, too.
  6. Mount the target filesystem of the external disk, where you want to place your backup, onto “/mnt” in your booted rescue system. Check the available space. In my case (with sdc being the external disk) :
    tty1:rescue:~ # mount /dev/sdc2 /mnt
    tty1:rescue:~ # df -h 
    ..
    /dev/sdc2     825G   78G   706G     10%   /mnt 
    ...
    
  7. Locate your Leap 15.3 root-filesystem. In my case the root-filesystem of the laptop is an LUKS2-encrypted LVM available as “/dev/mapper/vgb-lvb2”. Note: You must know in advance, i.e. from your Leap 15.3 setup, where your root-filesystem resides.
  8. We now use the command “dd” to copy the root-filesystem onto a restorable image file. In my case:
    dd status=progress if=/dev/mapper/vgb-lvb2 of=/mnt/root_lap.img  
    

After the backup of the (encrypted) root-fs of our Leap 15.3 installation we shut down the rescue system, remove the DVD and boot Leap 15.3 again.

Check your RPM repositories – refresh and update

On the rebooted Leap 15.3 we check what we have of active repositories. In my case these were quite many:

(Ignore the double “mozilla” entry.)

Recommendation: You should make a similar screenshot and save it somewhere outside your laptop to later be able to restore all of the different repositories for Leap 15.4.

However, the most important repositories required to perform the upgrade are three update repositories:

  • One with renewed RPMs for the OSS,
  • one for Backports (backportet RPMs, e.g. security RPMS backportet from newer kernel or glibc related versions than the presently available versions on Opensuse Leap/SLES)
  • and one for renewed RPMs for the SLES version corresponding to the current Leap.

Update-repositories contain the latest RPMs of an Opensuse distribution. In our upgrade process we still deal with relevant update repositories for Leap 15.3. But we are soon going to exchange them with their Leap 15.4 counterparts.

Look out for the URLs of the current update repositories :

 * https://download.opensuse.org/update/leap/15.3/oss/
 * https://download.opensuse.org/<br>update/leap/15.3/backports/
 * https://download.opensuse.org/<br>update/leap/15.3/sle/ repo-sle-update

Leap 15.3 and 15.4 RPMs are binary compatible to those for the related SLES versions. In my case I had switched most of my Leap 15.3 RPMs to those of the update repo of SLES already a long time ago. If you have not done this yet you should do so now with the help of YaST.

I also directly deleted the repository for games as I regard it unimportant during an Upgrade.

Now, we refresh the lists of available RPMs and update to the latest versions. You can use the graphical YaST2 for this purpose or the command line:

mytuxlap:~ # zypper refresh

Then we perform an update of our Leap 15.3 RPMs to the latest available versions:

mytuxlap:~ # zypper update

In my case some of my Leap 15.3 repositories (for games, graphics, xfce and for snappy) were no longer available and could not be refreshed. I just had waited too long with my upgrade. But this resulted in no major problems during the upgrade.

After the update reboot and verify that your Leap 15.3 system still works.

Change repository URLs to contain the ${releasever} instead of an explicit version number

We change the URLs of our repositories now to contain ${releasever} instead of an explicit “15.3” in the URLs. It is easy to do this on the command line:

mytuxlap:~ # sed -i 's/15.3/${releasever}/g' /etc/zypp/repos.d/*.repo
mytuxlap:~ # sed -i 's/$releasever/${releasever}/g' /etc/zypp/repos.d/*.repo

The second command is just for being on the save side of the shell interpreter. I had previously already changed some of the repo URLs to include $releasever, but I want everything to consistently use ${releasever}.

Refresh for Leap 15.4 repository content – and eliminate some repositories

Next we start switching to the repositories for Leap 15.4. The first step is a refresh on the command line, but now for the Leap 15.4 repos. We can do this with the help of the variable ${releasever} in the following form:

mytuxlap:~ # zypper --releasever=15.4 refresh

Note that this does not yet change our repositories themselves, yet, but just the local content information. It gets replaced by lists about the contents of the Leap 15.4 repositories.

In my case this refresh process lead to errors. The reason was that some of the repositories which I used on Leap 15.3 had got a different path structure of the respective web resource below “download.opensuse.org/” for Leap 15.4. You have to ask the Opensuse people why they changed this.

mytuxlap:~ # zypper --releasever=15.4 refresh
Warning: Enforced setting: $releasever=15.4
Retrieving repository 'nVidia Graphics Drivers' metadata ...........................................[done]
Building repository 'nVidia Graphics Drivers' cache ................................................[done]
Retrieving repository 'Packman Repository' metadata ................................................[done]
Building repository 'Packman Repository' cache .....................................................[done]
Retrieving repository 'Update 15.4' metadata .......................................................[done]
Building repository 'Update 15.4' cache..... .......................................................[done]
Retrieving repository 'graphics' metadata .........................................................[error]
Repository 'graphics' is invalid.
[openSUSE_Leap_${releasever}_1|https://download.opensuse.org/repositories/graphics/openSUSE_Leap_15.4/] Valid metadata not found at specified URL
History:
 - [openSUSE_Leap_${releasever}_1|https://download.opensuse.org/repositories/graphics/openSUSE_Leap_15.4/] Repository type can't be determined.

Please check if the URIs defined for this repository are pointing to a valid repository.
Skipping repository 'graphics' because of the above error.
Retrieving repository 'mozilla' metadata ...........................................................[done]
Building repository 'mozilla' cache ................................................................[done]
Retrieving repository 'XFCE' metadata .............................................................[error]
Repository 'XFCE' is invalid.
[openSUSE_Leap_${releasever}_3|https://download.opensuse.org/repositories/X11:/xfce/openSUSE_Leap_15.4/] Valid metadata not found at specified URL
History:
 - [openSUSE_Leap_${releasever}_3|https://download.opensuse.org/repositories/X11:/xfce/openSUSE_Leap_15.4/] Repository type can't be determined.

Please check if the URIs defined for this repository are pointing to a valid repository.
Skipping repository 'XFCE' because of the above error.
Retrieving repository 'Libdvdcss Repository' metadata ..............................................[done]
Building repository 'Libdvdcss Repository' cache ...................................................[done]
Retrieving repository 'Update repository of openSUSE Backports' metadata ...........................[done]
Building repository 'Update repository of openSUSE Backports' cache ................................[done]
Retrieving repository 'Non-OSS Repository' metadata ................................................[done]
Building repository 'Non-OSS Repository' cache .....................................................[done]
Retrieving repository 'openSUSE-Leap-15.4-Oss' metadata ............................................[done]
Building repository 'openSUSE-Leap-15.4-Oss' cache .................................................[done]
Retrieving repository 'Update repository with updates from SUSE Linux Enterprise 15' metadata ......[done]
Building repository 'Update repository with updates from SUSE Linux Enterprise 15' cache ...........[done]
Retrieving repository 'Aktualisierungs-Repository (Nicht-Open-Source-Software)' metadata ...........[done]
Building repository 'Aktualisierungs-Repository (Nicht-Open-Source-Software)' cache ................[done]
Retrieving repository 'snappy' metadata ............................................................[done]
Building repository 'snappy' cache .................................................................[done]
Some of the repositories have not been refreshed because of an error.

Then I changed again to the repository administration of YaST and simply deleted the problematic repos. We will care for their new URL later.

Note: The fact that we may have RPMs from missing repos during the upgrade is later on compensated by allowing for a “vendor change” – which means a repository change. See below.

After having eliminated problematic repos we get a successful refresh for the contents of remaining 15.4 repositories on the command line:

mytuxlap:~ # zypper --releasever=15.4 refresh
Warning: Enforced setting: $releasever=15.4
Repository 'nVidia Graphics Drivers' is up to date.                                     
Repository 'Packman Repository' is up to date.                                          
Repository 'mozilla' is up to date.                                                     
Repository 'Libdvdcss Repository' is up to date.                                        
Repository 'Update repository of openSUSE Backports' is up to date.                     
Repository 'Non-OSS Repository' is up to date.                                          
Repository 'openSUSE-Leap-15.4-Oss' is up to date.                                      
Repository 'Update repository with updates from SUSE Linux Enterprise 15' is up to date.
Repository 'Aktualisierungs-Repository (Nicht-Open-Source-Software)' is up to date.     
Repository 'snappy' is up to date.                                                      
All repositories have been refreshed.

Download of the RPMs without applying them, yet

The next step is to download the RPMs from the Leap 15.4 repos and save them in a cache for the later upgrade process. On a TTY or a root terminal window

mytuxlap:~ #  zypper --releasever=15.4 dup --download-only --allow-vendor-change

The option “–download-only” avoids the installation of the new 15.4 RPMs. Also note the option “–allow-vendor-change”: If a RPM cannot be replaced a substitute from other major repositories will be used – if one is found.

Agree to the RPM setup displayed and the license conditions. Some 5 to 10 minutes later, after having downloaded everything, we must deactivate the graphical desktop.

Perform the Upgrade on an ASCII terminal (TTY)

On a system with both an integrated Intel card and a dedicated Nvidia card you may first want to decide which card driver you want to be loaded during the upgrade. You may use the Prime-Select Applet of Opensuse to switch to Intel on your desktop. Then logout and login again and check whether the Nvidia driver is no longer active.

Personally, I just kept the Nvidia card and the respective driver running. The resulting small problems were easy to overcome; see below.

mytuxlap:~ # lsmod | grep nvidia
nvidia_drm             69632  5
nvidia_modeset       1204224  6 nvidia_drm
nvidia              35512320  281 nvidia_modeset
drm_kms_helper        303104  2 nvidia_drm,i915
drm                   634880  10 drm_kms_helper,nvidia,nvidia_drm,i915,ttm
mytuxlap:~ #  

Important: Logout now of the graphical desktop to perform the Upgrade.

Move to an ASCII terminal (e.g. via Ctrl-Alt F1). There login as root. Type in “init 3” to stop your running X- or Wayland server. And then start the real upgrade and the respective rpm installation via “zypper –no-refresh –releasever=15.4 dup –allow-vendor-change” :

mytuxlap:~ # init 3 
mytuxlap:~ # zypper --no-refresh --releasever=15.4 dup --allow-vendor-change

You must again confirm the RPM configuration and the license conditions. Depending on your previous configuration several thousands of packages will then be installed the next 10 minutes or so from the preloaded and cached RPMs.

After all required RPMs have been installed just reboot by typing “init 6” on the command line.

My Leap 15.4 situation after reboot

In may case the systems behavior after reboot was a bit strange.

The good news is:

I experienced no problems with LUKS 2, grub2, initramfs and the second phase of the startup during which all of my other LUKS2-encrypted LVM volumes were decrypted, checked and mounted.

Off topic: Leap uses initramfs, but stores it at /boot/initrd.

The whole startup process worked like before: I get asked for the LUKS2 decryption key directly after starting the boot process, then the graphical grub2 menu comes up and I can start the primary phase of the boot process based on initramfs. In my installation, due to security precautions, I was asked to provide the decryption key once again before the second boot phase on the real root-filesystem started. (Off topic: There are configuration tricks to circumvent the 2nd request for the LuKS2 key, but my personal opinion is that the asking a second time enhances security a bit. I cannot go into the related details of a LUKS 2 configuration here.)

The bad news is:
The behavior of the Optimus environment was not consistent. Although the Nvidia RPMs had been shifted to those from the Nvidia community repository for Leap 15.4 after the reboot the Intel i915 was loaded – and I did not manage to activate the Nvidia driver. Also bbswitch interfered with my trials and shut down the Nvidia card:

The warm reboot directly after the upgrade seemed to work without major error messages (with the exception of an expected VMware related error; see below). The startup process eventually led to graphical login screen of sddm.
After login the applet for Prime-Select told me that Nvidia was active.

However, after shutting the laptop down completely and starting it via a cold boot I saw that the laptop’s LED signalling the activation of Nvidia was off (more precise showing a blue instead a red color). The Intel driver i915 was loaded with the start of the sddm login screen. Afterward the X11-KDE/Plasma combination actually worked perfectly with it. As did the combination Wayland and KDE Plasma; see below.

But at least for work with Blender I do need an active Nvidia card on the desktop. So, how to get it running?

Optimus – and a small problem with the Nvidia card

When I turned to a TTY and issued “init 3” I, actually, could activate the NVidia card via

mytuxlap:~ # tee /proc/acpi/bbswitch <<< ON

And I also could load the Nvidia driver by

mytuxlap:~ # modprobe nvidia 

In addition

mytuxlap:~ # prime-select nvidia 

seemed to be accepted by the system.

However, when I afterward wanted to start the graphical desktop again via “init 5” I experienced that the Nvidia card was directly deactivated and that the Nvidia driver, therefore, could not work or be reloaded.

What a stupid situation! Obviously, the configuration of bbswitch had not been aligned correctly with prime-select and Nvidia during Upgrade.

Solution
In the end the solution was simple: I turned to a TTY, issued “init 3”, activated the Nvidia card, loaded the present driver and used the ASCII version of YaST (not graphical yast2) to reinstall (= update unconditionally) the Nvidia drivers from the Nvidia repository

I had to pick the G05-drivers as my graphics card is rather old. Note that the driver version 470 is also relatively old and has been reported to have some problems with the display manager Wayland.

After reboot everything then already worked as expected:
The Nvidia card was activated from the start and used for the graphical desktop afterwards. And I could use the Prime-Select Applet to switch to the Intel Driver with a subsequent logout from the KDE desktop and then a re-login. With Intel the Nvidia card got deactivated – which is very reasonable as it reduces the power consumption and heat generation of the laptop.

You may also check if things are already OK after a re-installation of the Nvidia drivers. The probably important thing is that during the reinstallation mkinitrd is started in the background and dracut is forced to re-configure the initramfs – this time with a loaded Nvidia driver.

If things still do not work in your case: Check that you have blacklisted the Nouveau driver in file “/etc/modprobe.d/50-blacklist.conf” and/or “/etc/modprobe.d/nvidia-default.conf” with entries

blacklist nouveau
options nouveau modeset=0

Then stop the graphical target again: Go to a terminal (Ctrl-Alt-F1), use “init 3” and try

mytuxlap:~ # init 3 
mytuxlap:~ # tee /proc/acpi/bbswitch <<< ON
mytuxlap:~ # modprobe nvidia

This should work. Then

mytuxlap:~ # mkinitrd

Then reboot. On the graphical desktop (probably still using the Intel driver) open a root terminal window. Try

  
mytuxlap:~ # prime-select nvidia

Log out from the graphical desktop, watch the laptop LED indicating the activation of the Nvidia card (should now show that Nvidia is on), log in and check that the Nvidia driver was loaded:

mytuxlap:~ # lsmod | grep video 

This should give you something like:

mytuxlap:~ # lsmod | grep nvidia
nvidia_drm             69632  7
nvidia_modeset       1204224  16 nvidia_drm
nvidia_uvm           1138688  0
nvidia              35512320  980 nvidia_uvm,nvidia_modeset
drm_kms_helper        303104  2 nvidia_drm,i915
drm                   634880  12 drm_kms_helper,nvidia,nvidia_drm,i915,ttm

Then test the reversion to the Intel driver via Opensuse’s prime-select applet. Should work now.

No cube animation for switching virtual desktops on KDE any more!

I had a brief look at other things on my new Leap 15.4 installation. Regarding KDE on Xorg the only thing I could complain about on Leap 15.4 was that the rotating cube animation for switching between virtual desktops was gone. This is due to decisions of the KDE people. So, Opensuse is NOT to blame for it. Personally, I think the loss of the animation is a pity, but it does not hinder any productivity, either. So, no big thing …

Wayland with KDE 5.24

A switch off the display server from Xorg to Wayland is a major step. I had been reluctant to use Wayland with Leap 15.2 and 15.3. Kernel, KDE and the Nvidia driver – all of their components must support Wayland. Unfortunately, Nvidia has for years been a major hinder in the support process – in contrast to Intel or AMD. So, I was a bit skeptical with Wayland, KDE/Plasma and Nvidia’s 470-driver on my old graphics card.

Positive results: KDE 5 started well. The startup of the desktop took longer time than with Xorg but completed successfully. Afterwards: No flickering of KDE, no problems with switching between virtual desktops or 3D desktop animations. Glxspheres worked. No problems with new windows of browsers like Firefox or Chromium – as were previously reported by others.

Best of all: My flatpack installation of Blender 3.3 did work very well.

Negative results: Nvidia-settings 470 did not work. Also, 3D-animation effects like wobbly windows appeared to have a slightly better performance on Xorg. After a session break (and the display of a protection screen with the option to relogin) a return to the KDE session lead to a strong white-flickering of the background. But this could be stopped by a mouse-click on the flickering background.

All in all: Even on my relatively old laptop I can productively use Wayland with Opensuse Leap 15.4 and KDE/Plasma 5.24 and Nvidia driver 470.

Leap 15.4 repositories with different locations than for 15.3

In general we can find available repositories at “https://download.opensuse.org”. The graphics repository has found a new location at

https://download.opensuse.org/repositories/graphics/15.4/,

the XFCE at

https://download.opensuse.org/repositories/X11:/xfce/15.4/.

Use Yast to add these repositories back to your list of active Leap 15.4 repos.

Still no actual Blender version on Leap 15.4

Note: Blender in a version above 2.82 is still not available for Leap 15.4. Which is a major shame. The glibc version is just too old for Blender 3.x. The only way out of this dilemma is a Flatpack or Snap based installation of Blender 3.4.
Such installations work, however, very well on Leap 15.4 – both with Xorg and Wayland.

Multimedia: Change system packages to RPMs of the packman repository

A broad range of multimedia tools and codecs require the packman repositories. What I typically do is to add a mirror with the packman repository, e.g.

https://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_${releasever}/    

to the list of repositories, use YaST2 for the display of the contents of this repository and then click on the link “Switch system packages to the versions in this repository (Packman repository)”.

I tested some typical multimedia applications I use: Pulseaudio, PA equalizer, Clementine, VLC and TV channels on browsers. No problems.

What about Python?

My last development work on a desktop machine was done with Python 3.9, Jupyter notebooks and Eclipse. Leap 15.4 offers Python 3.6 as the standard. However, you can in parallel install either Python 3.9 OR Python 3.10. the OR is unfortunately exclusive. (The current Python version is 3.11).

I think I can live for some time with Python 3.10. So, I tested an installation of a virtual Python environment on Leap 15.4. The key to do so is to move to a directory where you want to implement your virtual environment – and install the relevant interpreter plus related basic directories. The following commands show an example:

myself@mytuxlap:~> mkdir /projekte/GIT/ml_5
myself@mytuxlap:~> cd /projekte/GIT/
myself@mytuxlap:/projekte/GIT> virtualenv -p /usr/bin/python3.10 ml_5 
myself@mytuxlap:/projekte/GIT> cd ml_5
myself@mytuxlap:/projekte/GIT/ml_5> source bin/activate
(ml_5) myself@mytuxlap:/projekte/GIT/ml_5> pip install --upgrade pip
Collecting pip
  Using cached pip-23.0.1-py3-none-any.whl (2.1 MB)
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 20.2
    Uninstalling pip-20.2:
      Successfully uninstalled pip-20.2
Successfully installed pip-23.0.1
(ml_5)  myself@mytuxlap:/projekte/GIT/ml_5> pip install jupyter      
Collecting jupyter
  Using cached jupyter-1.0.0-py2.py3-none-any.whl (2.7 kB)
...
...
(ml_5) myself@mytuxlap:/projekte/GIT/ml_5> jupyter-notebook 
...

This all works – but there are some (expected) errors regarding the jupyter_nbextensions_configurator. This is all well known – and also what has to be done to configure the jupyter_nbextensions correctly. This is no matter of leap 15.4.
Anyway, a Jupyter notebook will start in your default browser and you can start working with Python 3.10. I systematically added the needed libs and modules afterward with the help of pip. So, no majro problem with Python 3.10 on Leap 15.4!

What about PHP?

Well, Leap 15.4 offers an installation of either PHP7 or PHP8.0. I picked PHP8. But how does PHP 8 work together with a standard Apache2 installation on Leap 15.4?

Answer: It depends!

From the Apache point of view we would like to distribute the web server’s load on multiple Apache processes with a minimum consumption of RAM. Therefore, we would like to run Apache with an event based MPM module or just with the standard MPM-module. The problem is that this does not work with PHP. This problem already existed for lower PHP-versions than PHP 8.

You run into an error message like:

Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP.

There are two solutions to this problem:

  • Switch to a prefork configuration of Apache 2.4 – and ignore the resulting RAM consumption
  • Use FastCGI and php8-fpm.

You also have to decide which method you want to use for changing the Apache2 configuration on Leap 15.4. You can remove RPMs or use a2enmod, a2dismod and maybe a2config, respectively. Relevant commands in our case would be “a2dismod mpm_worker”, a2dismod mpm_event” and a2enmod mpm_prefork”.

The easiest way, however, is to remove the RPMs “apache2-event” and/or “apache2-worker”, depending on what kind of configuration you have installed. I have no time to discuss the specific differences of these types of Multi-process setups of Apache2 here. To be able to activate prefork the RPM apache2-prefork must be installed. A reasonable RPM selection for a prefork variant would then look like this:

With this RPM selection you can just start Apache2 with the following modules successively:

mytuxlap:~ # rcapache2 restart
mytuxlap:~ # a2enmod rewrite 
mytuxlap:~ # a2enmod -l
actions alias auth_basic authn_core authn_file authz_host authz_groupfile authz_core authz_user autoindex cgi dir env expires include log_config mime negotiation setenvif ssl socache_shmcb userdir reqtimeout php8 version mpm_prefork rewrite
mytuxlap:~ # 

I.e.: For the simple prefork solution we can either try to disable the modules mpm_worker and/or mpm_event and activate “mpm_prefork” OR remove/install related RPMs.

But there is also another way to get PHP8 running – which is based on a FastCGI configuration of Apache2 together with the installation of a service for php8, namely php8-fpm. Personally, I have not yet tried a fast-cgi / php8-fpm combination on Leap 15.4. But I intend to describe the setup soon in this blog. In the meantime, please, check the information at the following links. It is given for other operative systems, but an adaption is straightforward.

Note: php-fpm is a service which must be started on your system via systemd’s command “systemctl”.

Digital ocean on PHP-fpm and Apache2 for Ubuntu 18
Digital Ocean on PHP and BSD
Digital ocean on PHP-fpm and Apache2 for Ubuntu 20

VMware and KVM

KVM works on leap 15.4 wwithout problems. I could directly start an existing qemu-virtualized Debian installation.

VMware WS also works on Leap 15.4. But you must have a version > WS 16.2.3 available. I updated to WS 16.2.5 by installing the bundle “VMware-Workstation-Full-16.2.5-20904516.x86_64.bundle”. Afterward I could start both VMware-virtualized Windows 10 and Win 7 installations on a Leap 15.4 KDE desktop without any problems.

Conclusion

The Upgrade from Opensuse Leap 15.3 to Leap 15.4 (with a KDE desktop) works without major problems even on older laptops with old Nvidia mobile graphics cards. Its a bit irritating that some Leap repositories got a new location with Leap 15.4 – but this can be fixed after the Upgrade.

A big positive surprise was that KDE 5.24 worked with Wayland even on my old Nvidia GT 645M card. A current Blender version MUST, unfortunately, be installed via Flatpack. Python 3.10 and PHP 8.0 are supported. KVM and VMware WS 16.2.5 pose no problems on Leap 15.4.

Happy working with Leap 15.4!

Links

Wayland vs. Xorg
https://linuxiac.com/ xorg-x11-wayland-linux-display-servers-and-protocols-explained/

Apache2 and PHP8
https://bbs.archlinux.org/ viewtopic.php?id=178124

 

Ceterum censeo: The worst fascist, war criminal and killer living today is the Putler. He must be isolated at all levels, be denazified and sooner than later be imprisoned. A president who orders the systematic destruction of civilian infrastructure must be fought and defeated because he is a permanent danger to basic principles of humanity. He must be brought to justice in front of an international court. Long live a free and democratic Ukraine!

 

Installation Opensuse Leap 15 auf Laptop – Grafik Probleme, Optimus

Einer meiner Laptops ist in die Jahre gekommen (letzte BIOS-Generation; Optimus-System). Auf diesem System stand eine Neu-Installation von Opensuse Leap 15.0 an (kein Upgrade). Interessant ist dann immer wieder das Verhalten der Grafikarten – hier einer Nvidia und einer im Prozessor integrierten Intel-Karte. Schon früher gab es im Zuge von Upgrades immer wieder Probleme, die Bumblebee-Unterstützung zum Laufen zu bringen. Wegen der Neuinstallation musste ich die ersten Hürden diesmal schon zu Beginn der Installation überwinden. Ohne zusätzliche Maßnahmen lief danach auch der i915-Treiber für die in den Prozessor integrierte Intel-Grafik-Karte nicht so, wie ich das erwartet hätte. Bei der Bumblebee-Installation gab es ferner eine kleine, aber wichtige Neuerung im Zusammenhang mit bbswitch. Ohne deren Beachtung konnte ich optirun/primusrun für 3D-Anwendungen nicht zum Laufen bringen.

Ich stelle nachfolgend die wichtigsten Schritte für einen erfolgreichen Grafik-Setup auf einem solchen System zusammen.

“No KMS” bei den Vorgaben für die Textkonsole(n) am Startschirm für den SuSE-Installer

SuSE bietet auf dem Startschirm der Installation etliche Optionen für die Grafik-Einstellungen an (F3-Taste). Während ich beim ersten und letzten Punkt des aufklappenden Menüs maximale Auflösungen wählen konnte, musste ich bei der Textkonsole zwingend “Keine KMS” wählen.

Installer Size => 1920×1200
Text Console Size => Keine KMS (ggf. zwingend auf Optimus-System)
Video BIOS Size => 1920 x 1080

Tat ich das nicht, starb das System bei der HW-Erkennung mit udev (Stage 6/6 nach dem Laden des Kernels); der Installer landete im Nirwana (schwarzer Schirm mit Cursor) und weigerte sich, seine Arbeit fortzusetzen. Über die genaue Ursache des Problems mag ich hier nicht spekulieren (Optimus => Zugriff auf Nvidia-Karte ohne hinreichenden Treiber?). Siehe bei Interesse zu KMS und dem Suse-Installer die Links am Ende des Beitrags.

Durch Abschalten von KMS im Installer wird dem Kernel der Parameter “nomodeset” übergeben. Danach lief bei mir der grafische Installer in der gewünschten hohen Auflösung. Der Parameter “nomodeset” wird im Zuge der Installation in der Grub2-Konfiguration verankert (s. die Datei “/etc/default/grub” und die resultierenden Einträge in der “/boot/grub2/grub.cfg”).

Desktop-SW KDE Plasma 5 über Pattern installieren und Nouveau-Treiber blacklisten

Um die Kontrolle über die Installation zu behalten, empfiehlt es sich, schrittweise vorzugehen und nicht sofort einen grafischen Desktop zu installieren. Erledigen kann man das im Installer bzw. nach der Installation in YaST durch Abwahl bzw. Auswahl bestimmter Paketgruppen und “Schemata“, von denen SuSE etliche anbietet. Im Installer wählt man geeignete Pakte für eine kleinere Installation aus – z.B. für eine einfache Server-Basis-Installation. Bootet unser System danach erfolgreich in den Multiuser-Modus (mit 6 aktiven Textkonsolen; Wechsel mit Ctrl-Alt-F1 bis Ctrl-Alt-F6), so können wir z.B. einen KDE-Desktop unter YaSTs “Software Management” mittels des Schemas “KDE Plasma5 Desktop Environment” installieren.

Ich gehe dabei gemäß folgender Schritte vor:

1) Installieren des KDE 5 Plasma Schemas
Installieren des KDE Plasma Schemas über YaST >> “Software installieren und löschen” >> Anzeigen >> Schemata >> “KDE Plasma 5 Desktop Environment”.
Wir prüfen, dass das Paket “Mesa-dri-nouveau” nicht installiert wurde. Wenn doch, deinstallieren wir es.

2) Nouveau-Treiber “blacklisten
Öffnen der Datei “/etc/modprobe.d/50-blacklist.conf“. Hinzufügen folgender Zeilen am Ende (ggf. mit erläuternden Kommentaren):

blacklist nouveau
options
nouveau modeset=0

3) mkinitrd
Ausführen von “sudo mkinitrd” an einem Terminal. Dies ist notwendig, um evtl. nouveau-Treiber-Komponenten auch aus dem “initramfs” zu entfernen.

4) Reboot und Wechsel in das “graphical.target” von systemd
Nach einem Reboot sollte es möglich sein, in den Grafikmodus zu wechseln; dort wird einem der grafische Login-Schirm (bei KDE: SDDM) angeboten. Landet man am Ende des Hochfahrens nicht direkt auf dem grafischen Terminal (Ctrl-Alt-F7), weil das systemd “default.target” noch das “multiuser.target” ist, muss man auf einem Konsolen-Terminal als User root “init 5” absetzen. Später, wenn KDE Plasma korrekt läuft, kann man dann z.B. über Yasts “Services Manager” das “default.target” von systemd ändern. (Wer das lieber auf der Kommandozeile macht, sollte sich mit den Kommandos “systemctl get-default” und “systemctl set-default” befassen.)

Das Arbeiten mit dem grafischen Desktop ging dann in meinem Fall leider überhaupt nicht flüssig; man merkt das bereits am trägen Aufbau des Login-Schirms – vor allem aber nach einem Login und der Darstellung des KDE-Desktops. Es fehlt die 2D-Grafik-Beschleunigung, da der i915-Treiber für die in den Prozessor integrierte Graka noch nicht richtig funktioniert. Der erfordert offenbar KMS, das wir ja aber bei der Installation abschalten mussten (s.o.). Das können wir nun korrigieren.

Kernelparameter “nomodeset” entfernen, mkinitrd, Reboot und Laden des i915-Moduls prüfen

Wir unterbinden jetzt die Übergabe des Parameters “nomodeset” an den Kernel über die Grub2-Konfiguration. Dazu editieren wir die Datei “/etc/default/grub” und entfernen dort den Wert “nomodeset” im Eintrag für “GRUB_CMDLINE_LINUX_DEFAULT”. Der Eintrag sieht danach etwa wie folgt aus:

GRUB_CMDLINE_LINUX_DEFAULT=’splash=silent quiet showopts resume=/dev/mapper/cr-swap’

Um das wirksam zu machen, setzen wir erneut “mkinitrd” ab und initiieren dann einen Reboot-Vorgang (init 6). Bevor wir uns im Anschluss am SDDM-Login-Schirm einloggen, überprüfen wir an einem Konsolen-Terminal, ob das i915-Modul ordnungsgemäß geladen ist; das sollte dann etwa so aussehen:

 
mytux:~ # lsmod | grep "i915\|video"
i915                 1953792  7
i2c_algo_bit           16384  1 i915
drm_kms_helper        200704  1 i915
drm                   438272  5 i915,drm_kms_helper
video                  45056  2 msi_wmi,i915

Am grafischen Terminal (Ctrl-Alt-F7) ist dann ein erster Zwischenerfolg zu vermelden: Das Arbeiten mit dem Desktop geht nun flüssig. Für 2D-beschleunigtes KDE reicht die integrierte Intel Graka völlig aus 🙂 .

Bumblebee installieren

Wir wollen nun die Optimus-Konfiguration für 3D-Anwendungen nutzen. Wie schon früher für Leap 42.3 beschrieben (s.
Upgrade Laptop to Opensuse 42.3, Probleme mit Bumblebee und VMware WS 12.5, Workarounds )
gilt, dass man nur das Repository unter “http://download.opensuse.org/repositories/X11:/” für seine Distribution nutzen sollte:

https://download.opensuse.org/repositories/X11:/Bumblebee/openSUSE_Leap_15.0/

Sonst gar nichts! Das Nvidia-Community-Repository ist normalerweise nicht erforderlich.

Im Gegensatz zu Leap 42.3 gehen wir mit folgenden Schritten vor, nachdem wir das Bumblebee-Repository unter YaSTs “Software Management” eingebunden haben:

Schritt 1 – Paketinstallation: Wir installieren die folgenden Pakete:

VirtualGL, bumblebee, dkms, bbswitch, bbswitch-kmp-default

Achtet bitte darauf, dass ihr die zueinander passenden Versionen aus dem Bumblebee-
Repository (und nicht aus dem Leap-15-Update Repository) installiert. Nützlich ist auch das Paket “Mesa-demo-x”, das die Testprogramme “glxgears” und “glxspheres” als Testprogramme beinhaltet. Wir prüfen zudem, dass die Pakete “x11-tools” und “xf86-video-nv” installiert sind. Wenn nicht: Installieren!

Schritt 2 – Aktivierung dkms: Wir aktivieren nun den “dkms”-Service mittels der Kommandos “systemctl enable dkms; systemctl start dkms”. Im Gegensatz zur Leap 42.3-Installation schadet dieser Service diesmal nicht 🙂 ; er garantiert später vielmehr die Neukompilation der Module bei Kerneländerungen oder Modul-Reinstallationen.

Schritt 3 – Gruppe “bumblebee” anlegen: Dann legen wir (z.B. mit YaSTs “User and Group Management”) eine User-Gruppe “bumblebee” an. Bei mir geschah dies bei der Bumblebee-Installation leider nicht automatisch. Dieser Gruppe ordnen wir dann diejenigen User zu, die später “optirun” und “primusrun” für den Start von 3D-Applikationen verwenden dürfen (ggf. auch root).

Schritt 4 – Wichtige Modifikation der Datei “etc/modprobe.d/50-bbswitch.conf”
Ein entscheidender Schritt ist nun, dass wir die Datei “etc/modprobe.d/50-bbswitch.conf” editieren; sie sollte einen Eintrag von genau der Form

options bbswitch load_state=-1 unload_state=1

beinhalten. Wichtig ist das “-1” bei load_state !!

Schritt 5 – Aktivieren des bumblebee-Services

systemctl enable bumblebeed.service
systemctl start bumblebeed.service

Das “d” am Ende von “bumblebeed” ist wichtig; es handelt sich um einen Dämon.

Wir prüfen dann, ob das bbswitch-Module ordnungsgemäß erzeugt wurde. Ein “find / -name “*bbswitch*” sollte etwa Folgendes zeigen:

 
mytux:~ # find / -name "*bbswitch*"
/usr/share/doc/packages/bbswitch
/usr/lib/modules-load.d/bbswitch.conf
/sys/module/bbswitch
/etc/modprobe.d/50-bbswitch.conf
/etc/modprobe.d/50-bbswitch.conf.rpmsave
/proc/acpi/bbswitch
/lib/modules/4.12.14-lp150.11-default/updates/bbswitch.ko
/lib/modules/4.12.14-lp150.12.28-default/weak-updates/updates/bbswitch.ko

“bbswitch.ko” sollte für alle installierten Kernelvarianten vorhanden sein; zwingend aber für den aktuell verwendeten Kernel. Treten hier Fehler auf, so hat dies ggf. damit zu tun, dass schon früher einmal nvidia-Module (über andere Repositories) erzeugt wurden. Die entsprechenden RPM-Pakete sind zu löschen; danach muss man manuell nach nvidia-Kernel-Modulen suchen und diese ebenfalls manuell löschen. Anschließend sollte man die bbswitch-Pakte reinstallieren.

Wir probieren dann aus, ob sich das erzeugte bbswitch-Modul mittels

modeprobe bbswitch

laden lässt. Dies sollte fehlerfrei möglich sein.

Nvidia-Treiber installieren

Nun installieren wir die Pakete “nvidia-bumblebee, nvidia-bumblebee-32bit”. Dies sollte eine Weile dauern, da die Treiber runtergeladen und kompiliert werden müssen. Am Ende dieser Installation sollte ein “find / -name “*nvidia*” etwa Folgendes zeigen; der Output ist länglich, aber für einen Vergleich mit eurem eigenen System geeignet:

 
mytux:~ #
/usr/lib64/libnvidia-cfg.so.1
/usr/lib64/libnvidia-opencl.so.1
/usr/lib64/libnvidia-opencl.so.410.93
/usr/lib64/libnvidia-ml.so.1
/usr/lib64/libnvidia-glvkspirv.so
/usr/lib64/nvidia
/usr/lib64/nvidia/libnvidia-gtk3.so.410.93
/usr/lib64/nvidia/xorg/modules/extensions/libglxserver_nvidia.so
/usr/lib64/nvidia/xorg/modules/extensions/libglxserver_nvidia.so.410.93
/usr/lib64/libnvidia-compiler.so.410.93
/usr/lib64/vdpau/libvdpau_nvidia.so.1
/usr/lib64/vdpau/libvdpau_nvidia.so.410.93
/usr/lib64/libnvidia-
ptxjitcompiler.so.410.93
/usr/lib64/libnvidia-opencl.so
/usr/lib64/libnvidia-ml.so.410.93
/usr/lib64/libnvidia-tls.so.410.93
/usr/lib64/libnvidia-glvkspirv.so.410.93
/usr/lib64/xorg/modules/drivers/nvidia_drv.so
/usr/lib64/libnvidia-ptxjitcompiler.so.1
/usr/lib64/libnvidia-ml.so
/usr/lib64/libnvidia-fatbinaryloader.so.410.93
/usr/lib64/libnvidia-cfg.so.410.93
/usr/lib64/libnvidia-glcore.so.410.93
/usr/bin/nvidia-settings
/usr/bin/nvidia-smi
/usr/bin/nvidia-bug-report.sh
/usr/bin/nvidia-xconfig
/usr/share/pixmaps/nvidia-settings.png
/usr/share/nvidia
/usr/share/nvidia/nvidia-application-profiles-410.93-key-documentation
/usr/share/doc/nvidia-utils
/usr/share/doc/nvidia
/usr/share/doc/nvidia/nvidia                                                                                                                                        
/usr/share/doc/packages/nvidia-bumblebee                                                                                                                            
/usr/share/doc/packages/nvidia-bumblebee/README.nvidia-bumblebee                                                                                                    
/usr/share/doc/packages/nvidia-bumblebee-32bit                                                                                                                      
/usr/share/doc/packages/nvidia-bumblebee-32bit/README.nvidia-bumblebee-32bit
/usr/share/applications/nvidia-settings.desktop
/usr/share/vulkan/icd.d/nvidia_icd.x86_64.json
/usr/share/vulkan/icd.d/nvidia_icd.i586.json
/usr/share/man/man1/nvidia-xconfig.1.gz
/usr/share/man/man1/nvidia-settings.1.gz
/usr/share/man/man1/nvidia-smi.1.gz
/usr/share/licenses/nvidia-utils
/usr/share/licenses/kernel-firmware/LICENCE.nvidia
/usr/share/licenses/nvidia
/usr/share/licenses/nvidia/nvidia
/usr/src/linux-4.12.14-lp150.12.28/arch/arm64/boot/dts/nvidia
/usr/src/linux-4.12.14-lp150.12.28/drivers/video/fbdev/nvidia
/usr/src/linux-4.12.14-lp150.12.28/drivers/video/fbdev/nvidia/nvidia.c
/usr/src/linux-4.12.14-lp150.12.28/drivers/char/agp/nvidia-agp.c
/usr/src/linux-4.12.14-lp150.12.28/drivers/net/ethernet/nvidia
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/i2c/nvidia,tegra186-bpmp-i2c.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/iommu/nvidia,tegra20-gart.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/iommu/nvidia,tegra30-smmu.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/fuse/nvidia,tegra20-fuse.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-sgtl5000.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5677.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/sound/nvidia,tegra20-das.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/sound/nvidia,tegra20-ac97.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/sound/nvidia,tegra20-i2s.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/
bindings/sound/nvidia,tegra-audio-wm8753.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max98090.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/misc/nvidia,tegra20-apbmisc.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/cpufreq/nvidia,tegra124-cpufreq.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/usb/nvidia,tegra124-xusb.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/pinctrl/nvidia,tegra210-pinmux.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/pinctrl/nvidia,tegra20-pinmux.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-dpaux-padctl.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/pinctrl/nvidia,tegra30-pinmux.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/pinctrl/nvidia,tegra114-pinmux.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/thermal/nvidia,tegra124-soctherm.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/timer/nvidia,tegra20-timer.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/ata/nvidia,tegra124-ahci.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/gpio/nvidia,tegra186-gpio.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/gpio/nvidia,tegra20-gpio.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/serial/nvidia,tegra20-hsuart.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/dma/nvidia,tegra210-adma.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/dma/nvidia,tegra20-apbdma.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/phy/nvidia,tegra20-usb-phy.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/phy/nvidia,tegra124-xusb-padctl.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/gpu/nvidia,gk20a.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/bus/nvidia,tegra210-aconnect.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/bus/nvidia,tegra20-gmi.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/spi/nvidia,tegra20-slink.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/spi/nvidia,tegra20-sflash.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/display/tegra/nvidia,tegra114-mipi.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/interrupt-controller/nvidia,tegra20-ictlr.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/input/nvidia,tegra20-kbc.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/mailbox/
nvidia,tegra186-hsp.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra30-mc.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra124-emc.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/firmware/nvidia,tegra186-bpmp.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/clock/nvidia,tegra124-car.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/clock/nvidia,tegra114-car.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/clock/nvidia,tegra210-car.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/clock/nvidia,tegra20-car.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/clock/nvidia,tegra30-car.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-mc.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-mc.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-emc.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-flowctrl.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/arm/tegra/nvidia,nvec.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt
/usr/src/linux-4.12.14-lp150.12.28/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt
/usr/src/nvidia-410.93
/usr/src/nvidia-410.93/nvidia
/usr/src/nvidia-410.93/nvidia/nvidia.Kbuild
/usr/src/nvidia-410.93/nvidia/nvidia-sources.Kbuild
/usr/src/nvidia-410.93/nvidia-modeset
/usr/src/nvidia-410.93/nvidia-modeset/nvidia-modeset-linux.c
/usr/src/nvidia-410.93/nvidia-modeset/nvidia-modeset-os-interface.h
/usr/src/nvidia-410.93/nvidia-modeset/nvidia-modeset.Kbuild
/usr/src/nvidia-410.93/nvidia-drm
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-encoder.h
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-priv.h
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm.Kbuild
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-fb.h
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm.h
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-drv.h
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-gem-nvkms-memory.h
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-gem-user-memory.c
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-connector.c
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-helper.c
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-prime-fence.c
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-gem-nvkms-memory.c
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-gem.h
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-gem.c
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-os-interface.h
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-utils.c
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-modeset.h
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-encoder.c
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-modeset.c
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm.c
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-helper.h
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-ioctl.h
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-connector.h
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-utils.h
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-fb.c
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-crtc.c
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-conftest.h
/usr/src/nvidia-410.93/nvidia-drm/nvidia-dma-fence-helper.h
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-linux.c
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-crtc.h
/usr/src/nvidia-
410.93/nvidia-drm/nvidia-drm-gem-user-memory.h
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-drv.c
/usr/src/nvidia-410.93/nvidia-drm/nvidia-drm-prime-fence.h
/usr/src/nvidia-410.93/nvidia-uvm
/usr/src/nvidia-410.93/nvidia-uvm/nvidia-uvm-sources.Kbuild
/usr/src/nvidia-410.93/nvidia-uvm/nvidia-uvm.Kbuild
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia_icd.x86_64.json
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-settings
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-smi
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-xconfig.1.gz
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia_drv.so
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia.icd
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-modprobe
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-installer.1.gz
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-settings.1.gz
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia_icd.json.template
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-fbc.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia/nvidia.Kbuild
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia/nvidia-sources.Kbuild
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-modeset
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-modeset/nvidia-modeset-linux.c
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-modeset/nvidia-modeset-os-interface.h
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-modeset/nvidia-modeset.Kbuild
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-encoder.h
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-priv.h
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm.Kbuild
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-fb.h
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm.h
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-drv.h
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.h
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-gem-user-memory.c
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-connector.c
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-helper.c
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-prime-fence.c
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.c
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-gem.h
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-gem.c
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-os-interface.h
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-utils.c
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-modeset.h
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-encoder.c
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-modeset.c
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm.c
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-helper.h
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-ioctl.h
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-connector.h
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-utils.h
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-fb.c
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-crtc.c
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-conftest.h
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-dma-fence-helper.h
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-linux.c
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-crtc.h
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-gem-user-memory.h
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-drv.c
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-prime-fence.h
/usr/
src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-uvm
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-uvm/nvidia-uvm-sources.Kbuild
/usr/src/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-uvm/nvidia-uvm.Kbuild
/usr/src/NVIDIA-Linux-x86_64-410.93/libglxserver_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/10_nvidia_wayland.json
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-opencl.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-glsi.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-settings
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-smi
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-xconfig.1.gz
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia_drv.so
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia.icd
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-modprobe
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-installer.1.gz
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-settings.1.gz
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia_icd.json.template
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-fbc.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia/nvidia.Kbuild
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia/nvidia-sources.Kbuild
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-modeset
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-modeset/nvidia-modeset-linux.c
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-modeset/nvidia-modeset-os-interface.h
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-modeset/nvidia-modeset.Kbuild
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-encoder.h
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-priv.h
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm.Kbuild
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-fb.h
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm.h
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-drv.h
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.h
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-gem-user-memory.c
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-connector.c
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-helper.c
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-prime-fence.c
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.c
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-gem.h
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-gem.c
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-os-interface.h
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-utils.c
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-modeset.h
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-encoder.c
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-modeset.c
n/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm.c
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-helper.h
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-ioctl.h
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-connector.h
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-utils.h
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-fb.c
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-crtc.c
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-conftest.h
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-dma-fence-helper.h
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-linux.c
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-crtc.h
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-gem-user-memory.h
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-drv.c
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-drm/nvidia-drm-prime-fence.h
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-uvm
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-uvm/nvidia-uvm-sources.Kbuild
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/kernel/nvidia-uvm/nvidia-uvm.Kbuild
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libglxserver_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/10_nvidia_wayland.json
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-opencl.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-glsi.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-modprobe.1.gz
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-bug-report.sh
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-cuda-mps-server
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-debugdump
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-application-profiles-410.93-rc
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-persistenced
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/32/libnvidia-fbc.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/32/libnvidia-opencl.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/32/libnvidia-glsi.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/32/libnvidia-compiler.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/32/libvdpau_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/32/libnvidia-ptxjitcompiler.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/32/libnvidia-eglcore.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/32/libGLESv2_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/32/libGLESv1_CM_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/32/libnvidia-ml.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/32/libnvidia-tls.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/32/libnvidia-glvkspirv.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/32/libGLX_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/32/libEGL_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/32/libnvidia-ifr.so.410.93
n/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/32/libnvidia-fatbinaryloader.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/32/libnvidia-encode.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/32/tls/libnvidia-tls.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/32/libnvidia-glcore.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-installer
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-rtcore.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-compiler.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-gtk3.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-gtk2.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libvdpau_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-wfb.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-ptxjitcompiler.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-eglcore.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-cbl.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libGLESv2_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-persistenced.1.gz
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-persistenced-init.tar.bz2
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-settings.desktop
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libGLESv1_CM_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-cuda-mps-control.1.gz
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-application-profiles-410.93-key-documentation
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-ml.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-tls.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-glvkspirv.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libGLX_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/html/nvidia-ml.html
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/html/nvidia-debugdump.html
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/html/nvidiasettings.html
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/html/nvidia-smi.html
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/html/nvidia-persistenced.html
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-smi.1.gz
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libEGL_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-settings.png
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-cuda-mps-control
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-xconfig
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-ifr.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-fatbinaryloader.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/10_nvidia.json
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-cfg.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-encode.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/tls/libnvidia-tls.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-glcore.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/libnvidia-egl-wayland.so.1.1.0
/usr/src/NVIDIA-Linux-x86_64-410.93/NVIDIA-Linux-x86_64-410.93/nvidia-drm-outputclass.conf
/usr/src/NVIDIA-
Linux-x86_64-410.93/nvidia-modprobe.1.gz
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-bug-report.sh
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-cuda-mps-server
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-debugdump
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-application-profiles-410.93-rc
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-persistenced
/usr/src/NVIDIA-Linux-x86_64-410.93/32/libnvidia-fbc.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/32/libnvidia-opencl.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/32/libnvidia-glsi.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/32/libnvidia-compiler.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/32/libvdpau_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/32/libnvidia-ptxjitcompiler.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/32/libnvidia-eglcore.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/32/libGLESv2_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/32/libGLESv1_CM_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/32/libnvidia-ml.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/32/libnvidia-tls.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/32/libnvidia-glvkspirv.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/32/libGLX_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/32/libEGL_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/32/libnvidia-ifr.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/32/libnvidia-fatbinaryloader.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/32/libnvidia-encode.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/32/tls/libnvidia-tls.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/32/libnvidia-glcore.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-installer
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-rtcore.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-compiler.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-gtk3.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-gtk2.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/libvdpau_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-wfb.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-ptxjitcompiler.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-eglcore.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-cbl.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/libGLESv2_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-persistenced.1.gz
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-persistenced-init.tar.bz2
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-settings.desktop
/usr/src/NVIDIA-Linux-x86_64-410.93/libGLESv1_CM_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-cuda-mps-control.1.gz
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-application-profiles-410.93-key-documentation
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-ml.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-tls.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-glvkspirv.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/libGLX_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/html/nvidia-ml.html
/usr/src/NVIDIA-Linux-x86_64-410.93/html/nvidia-debugdump.html
/usr/src/NVIDIA-Linux-x86_64-410.93/html/nvidiasettings.html
/usr/src/NVIDIA-Linux-x86_64-410.93/html/nvidia-smi.html
/usr/src/NVIDIA-Linux-x86_64-410.93/html/nvidia-persistenced.html
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-smi.1.gz
/usr/src/NVIDIA-Linux-x86_64-410.93/libEGL_nvidia.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-settings.png
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-cuda-mps-control
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-xconfig
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-ifr.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-fatbinaryloader.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/10_nvidia.json
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-cfg.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia_icd.i586.json
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-encode.so.410.93
/usr/src/NVIDIA-Linux-x86_
64-410.93/tls/libnvidia-tls.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-glcore.so.410.93
/usr/src/NVIDIA-Linux-x86_64-410.93/libnvidia-egl-wayland.so.1.1.0
/usr/src/NVIDIA-Linux-x86_64-410.93/nvidia-drm-outputclass.conf
/usr/src/kernel-modules/nvidia-340.107-default
/usr/src/kernel-modules/nvidia-uvm-340.107-default
/usr/src/kernel-modules/nvidia-uvm-340.107-default/rm/nvidia.mod.c
/usr/src/kernel-modules/nvidia-uvm-340.107-default/rm/.nvidia.ko.cmd
/usr/src/kernel-modules/nvidia-uvm-340.107-default/rm/.nvidia.mod.o.cmd
/usr/src/kernel-modules/nvidia-uvm-340.107-default/rm/.tmp_versions/nvidia.mod
/usr/src/kernel-modules/nvidia-uvm-340.107-default/rm/.nvidia.o.cmd
/usr/src/kernel-modules/nvidia-uvm-340.107-default/rm/nvidia.mod.o
/usr/src/kernel-modules/nvidia-uvm-340.107-default/rm/nvidia.ko
/usr/src/kernel-modules/nvidia-uvm-340.107-default/rm/nvidia.o
/usr/src/kernel-modules/nvidia-390.87-default
/usr/src/linux-4.12.14-lp150.12.28-obj/x86_64/default/include/config/net/vendor/nvidia.h
/usr/lib/libnvidia-opencl.so.1
/usr/lib/libnvidia-opencl.so.410.93
/usr/lib/libnvidia-ml.so.1
/usr/lib/libnvidia-glvkspirv.so
/usr/lib/nvidia
/usr/lib/libnvidia-compiler.so.410.93
/usr/lib/vdpau/libvdpau_nvidia.so.410.93
/usr/lib/libnvidia-ptxjitcompiler.so.410.93
/usr/lib/udev/rules.d/99-bumblebee-nvidia-dev.rules
/usr/lib/libnvidia-ml.so.410.93
/usr/lib/libnvidia-tls.so.410.93
/usr/lib/libnvidia-glvkspirv.so.410.93
/usr/lib/libnvidia-ptxjitcompiler.so.1
/usr/lib/libnvidia-fatbinaryloader.so.410.93
/usr/lib/libnvidia-glcore.so.410.93
/etc/zypp/repos.d/download.nvidia.com-leap.repo
/etc/modprobe.d/50-nvidia-default.conf.rpmsave
/etc/bumblebee/xorg.conf.nvidia
/etc/apparmor.d/abstractions/nvidia
/etc/OpenCL/vendors/nvidia.icd
/lib/firmware/nvidia
/lib/firmware/LICENCE.nvidia
/lib/modules/4.12.14-lp150.11-default/kernel/drivers/net/ethernet/nvidia
/lib/modules/4.12.14-lp150.12.28-default/kernel/drivers/net/ethernet/nvidia
/lib/modules/4.12.14-lp150.12.28-default/updates/nvidia-modeset.ko
/lib/modules/4.12.14-lp150.12.28-default/updates/nvidia-drm.ko
/lib/modules/4.12.14-lp150.12.28-default/updates/nvidia-uvm.ko
/lib/modules/4.12.14-lp150.12.28-default/updates/nvidia.ko
/var/cache/zypp/solv/download.nvidia.com-leap
/var/cache/zypp/packages/download.nvidia.com-leap
/var/cache/zypp/raw/download.nvidia.com-leap
/var/lib/dkms/nvidia
/var/lib/dkms/nvidia/410.93/4.12.14-lp150.12.28-default/x86_64/module/nvidia-modeset.ko
/var/lib/dkms/nvidia/410.93/4.12.14-lp150.12.28-default/x86_64/module/nvidia-drm.ko
/var/lib/dkms/nvidia/410.93/4.12.14-lp150.12.28-default/x86_64/module/nvidia-uvm.ko
/var/lib/dkms/nvidia/410.93/4.12.14-lp150.12.28-default/x86_64/module/nvidia.ko

Am wichtigsten sind die Einträge für die Module (Endung “.ko”) unter “lib/modules/EURE_AKTUELLE_KERNEL_VERSION”. Einige dieser Module sind für CUDA und die Nutzung der Grafikkarte als schnelles Rechenwerkzeug relevant.

Ihr seht an meinem Output u.a. auch, dass der Treiber die Version 410.93 hat. Der funktioniert für Geforce-Karten (ab Geforce 400). Diese Version wird sich mit künftigen Updates aus dem Bumblebee-Repository ändern. Ihr müsst deshalb vorab prüfen, ob eure Nvidia-Karte dafür geeignet ist (z.B. über die Nvidia-Web-Seite und die dortigen Treiber-Beschreibungen). Eine Beschreibung für den Fall, dass ihr einen älteren Treiber benötigt, erspare ich mir. Ich habe im Moment leider keine Zeit für entsprechende Tests.

In jedem Fall probieren wir nun aus, ob sich das nvidia-Modul laden lässt: Das Kommando “modprobe nvidia” sollte sich anstandslos durchführen lassen.

Erneutes mkinitrd

Nach einem Reboot wird die nvidia-Karte womöglich angeschaltet und das nvidia-Modul bereits geladen (Check Kommando “lsmod | grep “*nvidia*\|video”). Es gibt nun unterschiedliche Möglichkeiten, ein Booten ohne nvidia-Modul zu ermöglichen. Die
einfachste Möglichkeit besteht in folgenden Schritten:

Wir entladen folgende Module gem. ihrer Abhängigkeiten mittels “rmmod”:

nvidia_drm, nvidia_uvm, nvidia_modeset, nvidia

Wir führen dann testweise folgendes Kommandos durch, um die nvidia-Karte abzuschalten:

tee /proc/acpi/bbswitch >>>OFF

Auf meinem Laptop ändert sich dabei die Farbe des Power-Buttons von Rot auf Blau; vielleicht gibt es bei euch eine ähnliche Reaktion/anzeige.

Im Anschluss führen wir erneut “mkinitrd” durch.

Tests 3D-Beschleunigung

Nach einem Reboot sollte das nvidia-Kernel-Modul nicht geladen sein. Wir loggen uns in unseren KDE-Desktop ein. An einem Terminal-Fenster probieren wir “modprobe nvidia; lsmod | grep “nvidia\|video”. Wer will, kann das Modul dann auch wieder entladen.

An einem Terminalfenster setzen wir nun das Kommando “optirun glxspheres” ab. Wir sollten in einem sich öffnenden Fenster eine schnelle Abfolge der konzentrische Kreise aus 3D-Elementen bekommen. Die Rate sollte > 200 Mpixel/sec und > 200 Frames/sec ausweisen. Bei mir sind es annähernd 250 frames/sec (GT 645M).

Links

wiki.archlinux.org/index.php/kernel _mode _setting
https://fedoraproject.org/wiki/Features/KernelModesetting
https://de.wikipedia.org/wiki/Mode-Setting
https://doc.opensuse.org/documentation/ leap/startup/html/book.opensuse.startup/cha.boot_parameters.html
https://forums.opensuse.org/showthread.php/508996-Install-with-UEFI-Bios-and-no-KMS-support