openSUSE Tumbleweed Needs True Multiple Version Kernel Support

June 1, 2017, 9 p.m.

The openSUSE project produces two of the best distributions in the Linux world -- the rolling Tumbleweed and the regular release Leap. It has been my favorite distribution for many years because, in my opinion, it is a technically superior distribution with a mature and extensive infrastructure where rationality is evident in many areas of its design and operation. It is flexible, powerful, and provides the most comprehensive system administration utility of any distribution in the form of YaST. Unfortunately, it lacks one very important capability: the ability to explicitly install multiple versions of the kernel on the system -- a capability Manjaro has had since the beginning of its existence. Due to this, I replaced my installation of openSUSE Tumbleweed -- which I had intended to be one of the two permanent distributions on the Acer Nitro -- with Manjaro.

My Use Case

For many Linux users, not being able to explicitly install multiple versions of the kernel may not be an issue, but for me it is. This stems from how I run the few programs that are only available for Windows, on the rare occasions that I need to run them. Instead of booting into Windows where I can't multi-task using the essential tools tools provided by GNU/Linux, I choose to run my free copy of Windows 10 Professional, obtained in the early days of the Windows Insider program, as a guest OS in VMWare Workstation Player -- the virtualization platform on which I initially prepared the virtual disk for the Windows VM. When I made my decision to switch to Manjaro, openSUSE was on version 4.9.x of the kernel; at the time, VMWare only supported versions of the kernel up to 4.8.x. No older versions of the various kernel flavors are available in the openSUSE repositories[1] at any time, and who knows whether the tools necessary to build kernel modules, including GCC, dkms, or anything else that may be necessary are available in the appropriate versions for an older kernel.

Pacman Showing Installed Kernel Versions and Kernel Version Specific Related Packages on Manjaro
The output shows that Linux kernels 3.10.106, 4.4.73, 4.8.17, and 4.9.34 are installed; as well as VirtualBox host modules for versions 3.10.x, 4.4.x, 4.8.x and 4.9.x; Bumblebee Switch, kernel headers, Nvidia drivers, and Realtek 8168 modules for kernel versions 4.4.x, 4.8.x, and 4.9.x.
Manjaro, on the other hand has truly supported multiple kernels since its very beginning. As some of the slides later in this article show, many versions of the basic kernel are available in the core Manjaro repository as well as a different flavor.

Current State of Multi-Kernel Support in openSUSE

In fact, technically, openSUSE does support multiple kernels -- it is possible to install multiple kernel versions and choose one to boot into from the boot manager menu. All that is required to activate this capability is a simple edit to the /etc/zypp/zypp.conf configuration file to ensure that multiple kernel versions may be installed. According to openSUSE documentation insuring that the line

multiversion = provides:multiversion(kernel)
appears uncommented in the zypper configuration file /etc/zypp/zypp.conf is all that is necessery to allow multiple kernels to be installed on the system.
openSUSE Documentation Concerning Multiversion Kernel Support

In practice, however, openSUSE does not truly support the installation of multiple versions of the kernel in the sense that one can simply search for a kernel with, for example

zypper search kernel-default,
see which versions one may want to install from the search results, and run
zypper install kernel-default-4.4.12-1.
The extent to which multiple kernel versions may be installed currently in openSUSE is limited to keeping existing versions of kernels during update. The versions of kernels to be kept can be specified in /etc/zypp/zypp.conf with, among other possible entries to the multiversion setting,
multiversion.kernels = latest,latest-1,latest-2,latest-3,latest-5,latest-10,running
. This practical limitation is due to:
  • the default repository only having the current version of each of the various kernel flavors
  • the default repository only having packages of helper tools needed to build kernel version specific modules at versions that are compatible only with the current kernel version available in the repository
openSUSE Tumbleweed Repository Contents Showing Available Kernels
This is the default Tumbleweed Open Source Software repository at download.opensuse.org/tumbleweed/repo/oss/suse/x86_64/. Notice that although there are fifteen different kernel flavors available, they are all at kernel version 4.11.8, openSUSE build version 1.2. Compare this to what is available in Manjaro's repositries in the following set of slides.

Anyone with some experience with the openSUSE infrastructure knows that there are many optional extra repositories that one can use with openSUSE, so even though the default openSUSE repository for Free and Open Source Software -- the source of kernel packages -- only includes one version of the kernel, other sources of different kernel versions are available.

openSUSE Kernel Repositories
The listing of the base kernel repository showing all of the distribution release version specific sub-repositories, whose contents, I assume are just transferred to the default repo of a release; and the listing of the Leap 42.3 x86_64 kernel sub-repository.
One such source is the kernel sub-repository for Leap 42.3. Unfortunately, there doesn't seem to be anything specifically named for Tumbleweed, though the Leap repository could be used to get kernel 4.4.x for Tumbleweed. In addition to the desired older kernel, sources for associated kernel specific packages at appropriate versions for such things as GCC, dkms, and Bumblebee compatible versions of Nvidia drivers would also have to be added to the system. Putting all of these together would make an overly complex system that would most likely break soon after these additions.

Manjaro Multi-Kernel Support

As previously mentioned, Manjaro on the other hand supports multiple versions of the basic kernel[2] and some custom kernels in its core repository, as well as various custom kernels in its community or extra repository.

  • The output of a pacman search for linux in the core respository.
    Many versions of the default kernel are available -- 3.10.x, 3.12.x, 3.16.x, 3.18.x, 4.1.x, 4.10.x, 4.11.x, 4.12.x, 4.4.x, 4.8.x, and 4.9.x.
  • The output of a pacman search for kernel specific Nvidia packages and kernel specific Bumblebee Switch packages.
    Kernel specific versions of these packages are available. Nvidia specific packages for use with Bumblebee are also available. (More on using Bumblebee.)
Kernel Versions and Kernel Specific Modules Available in Manjaro Repositories

The process of installing any of these kernels is no different when using the command line tool pacman or its graphical front-ends such as Pamac. In addition to the these basic tools, the Kernel module of Manjaro Settings Manager can also manage kernels on the system. Users can use this tool to view available kernels, use the built-in kernel change log viewer to read the extensive description of each available kernel, and install the chosen additional kernel.

  • The KDE Plasma 5 System Settings Tool with Manjaro Settings Manager Integrations and the stand-alone Manjaro Settings Manager.
    Manjaro has integrated the components of MSM into the Plasma System Settings program. The Kernel component of MSM can be activated from the MSM GUI or from Plasma's System Settings.
  • Viewing available kernels from the Plasma System Settings and the Manjaro Settings Manager.
    Kernel installations can be initiated from either program by a click of a button. Installations are configured to add an entry to the GRUB menu.
  • Kernel changelog viewed from the System Settings kernel component.
    Extensive descriptions of almost all of the kernel versions from the kernel changelog are available through the built in viewer which is also accessible at the click of a button.
  • Kernel changelog viewed from the System Settings kernel component.
    Links in the changelog document are opened in a web browser.
Manjaro Settings Manager Integrations in the KDE PLasma System Settings and the Manjaro Settings Manager Program
The MSM kernel management component can be accessed from either of these programs.

There were no problems with Nvidia driver kernel modules working with kernel versions other than the one originally installed with the system. The appropriate versions of the module were always available. If my memory serves me correctly openSUSE didn't have any problems in this regard either.

The Manjaro Hardware Configuration Tool Installs Appropriate Versions of Nvidia Modules for Bumblebee for Every Kernel
This screenshot shows that the running kernel is 4.8.x, the latest one that would work with VMWare at the time of my switch to Manjaro. The per-application graphics processor switching system Bumblebee also works, activating the Nvidia driver module for use with Bumblebee.

Conclusion

As I have expressed many times in various pages on this site, openSUSE is an excellent distribution with many strengths. But it is missing this very useful capability that I think would benefit its users and supporters. It may especially improve the experience of Tumbleweed users to have the option of a little conservatism with the kernel version when necessary, as in my case, while maintaining the bleeding edge with other software. This was exactly the reason I decided to replace Tumbleweed with Manjaro as one of my two main distributions for the time being.

Notes:

  1. [1]

    Considering the extensive openSUSE infrastructure, there may be some optional repository that has older kernel versions that could be used to install these older kernel versions, but I haven't come across it. Even if there is, other repositories may be necessary for appropriate versions of tools like GCC or dkms. This path for getting an older kernel version is further complicated if driver modules for proprietary graphics are necessary. So this path would not be true multi-version kernel support as in Manjaro.

  2. [2]

    This is one of the added benefits of Manjaro that differentiates it from Arch and other Arch derivatives such as Antergos. Arch and other derivatives allow installing custom kernels but do not support multiple versions of the same kernel apart from an LTS version.