DKMS autoinstall on kernel update in openSUSE MicroOS

I am using openSUSE MicroOS and DKMS-based kernel modules.

On Debian/Ubuntu (apt) and Rocky/Alma (dnf), DKMS modules are automatically built and installed for the new kernel during the package transaction itself (before apt/dnf exits). After rebooting into the new kernel, DKMS modules are already available.

On openSUSE (and especially MicroOS), the behavior seems different:

  • Kernel packages are installed into an offline snapshot via transactional-update
  • kernel-install hooks (e.g. 40-dkms.install) do not appear to run during the transaction
  • DKMS autoinstall is not triggered reliably during kernel updates
  • As a result, DKMS modules must be built manually after reboot

My questions:

  1. Is there a supported way in openSUSE to trigger DKMS autoinstall automatically when a new kernel is installed?
  2. Is this limitation inherent to transactional-update / MicroOS design, or is it possible to integrate DKMS more tightly into the kernel update workflow?
  3. Are there recommended best practices for using DKMS modules on MicroOS?
  • For example, is running DKMS inside transactional-update shell the intended approach?
  • Or should DKMS generally be avoided on MicroOS in favor of KMP packages?

My use case is kernel-coupled modules (e.g. i915 SR-IOV DKMS), and rebuilding them manually after every kernel update is error-prone for unattended systems.

Thanks in advance for any guidance from the maintainers or experienced users.

Hi, AFAIK by design, perhaps look at using the openSUSE Build Service and build as a KMP. The shell command is only for debugging, normally use the run command instead.

The xe driver has vfs support?

Yes. the xe driver support vfs.

I can’t give you an additional answer because I don’t understand your answer.

I didn’t use any command.

Transactional-update dup executes zypper dup in the snapshot generated by transactional-update.

But zypper doesn’t run dkms when kernel update.

Isn’t this the problem?

@cola16 As in DKMS won’t work… if you want to rebuild the module manually use transaction-update run <some commands> don’t use the transactional-update shell command.

That’s why if you use the openSUSE Build Service to create the kernel module you can add/install from your $HOME repository. Else use Xe supported hardware to create your devices.

I’m using transaction-update run in all commands.

I still don’t know which part of my article you are judging that you used transactional-update shll
It seems that the transactional-update shell is not important thing.

If I understand correctly, you are saying that microOS’s zypper does not provide the ability to automatically build dkms.

Is that right?

I’ll look for openSUSE Build Service.

I made it using llm.

I even confirmed that it was built automatically when the kernel was updated.

I learned something new and many problems were solved. thanks to you.

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.