This is a very beautiful example - usbip.
If I understood correctly after reading this description:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/tools/usb/usbip/README?h=v5.19
we need to build a kernel module, a user-space utility, and write udev rules for loading the module and starting the server.
We need to pack all this into one or two packages and prescribe dependencies on a specific kernel. In this case, the utility
will have dependencies on system libraries. That is, it must be collected in the environment in which it will be used.
In order for this to become an easy way, we need to do the following:
1) Build packages from kernel sources without using the built-in mechanism (mkdebian, builddeb).
Instead, we have to generate files in the debian directory ourselves from our own templates.
During this process, handle some differences from the kernel version and writing all the necessary variables to files.
2) Collect packages for focal in this OS, packages for jammy in the jammy environment.