Skip to content

Selecting the Driver Packages

Ladislav Slezák edited this page Feb 15, 2019 · 7 revisions

Selecting the Driver Packages Automatically

Summary

The driver packages (esp. the 3rd party driver packages provided by external repositories) should be automatically selected to install. That is done during installation automatically by the solver.

In installed system we need to enable this explicitly as it needs some special solver setting to allow selecting the driver packages.

Solver Modes

The package solver provides several solving modes:

ingoreAlreadyRecommended onlyRequires Description
true false Full installation including recommended packages
true true Minimal installation, without recommended packages but with system supporting packages
false false Fill up all recommended packages (for already installed packages)
false true Fill up only missing system supporting packages

For selecting the driver packages in the installed system we need to set the very last settings.

Driver Packages

The driver packages have special Supplements tag in format modalias(<hardware>). For example the virtualbox-guest-tools has Supplements tag with value modalias(pci:v000080EEd0000BEEFsv*sd*bc*sc*i*). (That matches the virtual PCI VGA card emulated by the VirtualBox.)

YaST

The new driver packages should be only pre-selected for new repositories to avoid offering them again when user does not want to install them. Users could taboo the packages to avoid this but that is annoying and not user friendly. So YaST needs to somehow track the repositories for which the driver packages have already been automatically selected.

It is also possible to start the repository manager directly from the package manager, in that case the new repositories need to be checked as well.

Saving the Repository Status

YaST saves the known repositories to the /var/lib/YaST2/system_packages_repos.yaml config file, it contains a list of repository URLs.

When starting the YaST package manager in installed system it compares the current repositories with the listed repositories and if there is a new repository found YaST tries selecting the driver packages from that repository. When the package manager is finished the current repositories are saved to the config file for the next run.

To force re-selecting the driver packages either remove the appropriate repository from the file or delete the file completely.

Notes

  • Implemented in SLE15-SP1, openSUSE Leap 15.1
  • Requires libzypp >= 17.10.2 (included in the products above)

Testing

  • You can test it on a bare metal hardware with nVidia graphics card and with the nVidia 3rd party repository.
  • You can test it with any driver package
    • Get list of installed hardware packages: rpm -qa --supplements | grep modalias
    • Get the respective package for that supplements: rpm -q --whatsupplements "modalias(...)"
    • Uninstall that package (and remove the /var/lib/YaST2/system_packages_repos.yaml config file)
    • Start the YaST package manager, the package should be preselected to install
    • ⚠️ Do not uninstall any mandatory driver packages (e.g. disk controller) otherwise your system will not be able to boot! If you do you have to install it back before rebooting or shutting down the system!
  • Specifically for testing in a VirtualBox VM you can try removing the virtualbox-guest-tools package, after removing the /var/lib/YaST2/system_packages_repos.yaml config file the package should be automatically selected to install.

References