Wednesday, May 7, 2025

Troubleshooting NVIDIA issues on openSUSE

I just did an update...and now my system boots to a black screen, or the second screen won't work, etc. Sound familiar?

This is my list of items to review, and hopefuly narrow down the culprit or at least get resolution faster.

Try to manually start the graphical interface...
  • init 5
  • start-plasmawayland
Check if the services are running...and whether they print accurate data...
  • systemctl status prime-select.service
  • systemctl status switcheroo-control.service
  • (one or the other should be running, not both)
  • sudo prime-select get-current (this normally doesn't show accurate info in my experience)
  • sudo prime-select get-boot
  • switcherooctl list
Check /var/log/messages for (e.g. if using less, use /-key to search, and n/N to search next/previous)
  • sddm
  • nvidia
  • prime
And then, most likely, reinstall the graphics drivers. Because kernel modules need to be reconfigured witht he new drivers, sometimes this has not happened properly at upgrade.
  • Search all nvidia drivers and components:
    • zypper se -si nvidia-*
      • zypper rm nvidia-*
    • zypper se -si nvidia*
      • Here you can't just remove all. The kernel-firmware-nvidia package removal will want to remove all kernel firmware...not a good idea/
    • zypper rm suse-prime
      • ...for prime-select
    • zypper rm switcheroo-control
  • Remove third-party repos. The drivers should only come from NVIDIA or Updates repo.
    • In once case the system had loaded some libraries from another repo, and this seemed to be the cause of the issues. The zypper search previously will help you see if other Repos are in use.
  • Reboot
  • Install the drivers
    • zypper in nvidia-video-G06
      • This will automatically install prime-select and switcheroo-control
    • Reboot and hopefully all is working

Friday, January 17, 2025

openSUSE Leap Micro on Digital Ocean

openSUSE's Leap Micro is a transaction-based operating system, providing built-in protection against updates that might cause the Operating System to fail. This protection is achieved by creating file system snapshots (BTRFS) before updates are applied. Further,as the "Micro" part suggests, it is lightweight and  focused on container and virtualisation use cases.

Using DigitalOcean's Custom Images feature, we can import the qcow image. 

Start by visiting https://get.opensuse.org/leapmicro, go to Downloads and copy the download link for Preconfigured Image (qcow).



In your DigitalOcean dashboard, navigate to Backups & Snapshots, and click on the Custom Images tab.



In the pop-up, paste the URL copied from the openSUSE Micro download page. Click Next and provide a more friendly name for the image, as well as setting the Distribution to be Unknown and the datatcenter where the the image must reside.





Wait for the Pending to change, and your image is ready to become an appliance.

When creating the droplet, select your image from the Custom Images tab. Also, the droplet size will need to have at least 50GB disk size. Under Authentication, only SSH is supported.



Now you can create the droplet. 


Since the image is being setup with cloud-init, the JeOS run-once menu will not be displayed. Connect using SSH: either as sles@public-ip, or root@public-ip. The 'sles' user has full sudo rights.

A big benefit of Leap Micro is that it performs system updates automatically. If you want to install packages, use sudo transactional-update -n pkg in git (the -n great for scripting as it ensures zypper is run in non-interactive mode). Note that you will need to do a reboot as soon as possible afterwards so that the snapshot created since installing the applications is used on start up and marked as reliable.

You can also enable Combustion to have an easy to use web interface for managing the server. You can find the instructions to do so by opening the droplet's console. You will need to:

  • Add a user for Combustion login, by running jeos-config user.
  • Enable 2FA, by running jeos-config otp.
  • Enabling the Combustion service with systemctl enable --now cockpit.service


There is a lot more to explore, and I recommend viewing the videos available from openSUSE. The last heads up is just that podman is provided in place of docker, by default.