Compatibility
Oracle Linux maintains full user space compatibility with Red Hat Enterprise Linux (RHEL), which is independent of the kernel version that's running underneath the OS. Note that existing applications in user space continue to run unmodified with UEK 8; no recertifications are required for RHEL certified applications.
To minimize any impact on interoperability during releases, the Oracle Linux team works with third-party vendors that have hardware and software with dependencies on kernel modules. The kernel ABI for UEK 8 remains unchanged in all subsequent updates to the initial release. Customers migrating from UEK R7 must be aware that kernel ABIs have changed in UEK 8. If an application is using kernel modules, users must verify the support status with the application vendor.
Notable changes in kernel headers
Upstream changes to kernel headers might mean that third-party modules don't compile across
different kernel versions without modification to source code. Notably, the
memcg_cache_params
structure has been moved from
include/linux/slab.h
to mm/slab.h
, which means that code
must be refactored to account for the change if you're compiling across kernel versions.
To solve this problem so that the code can compile for UEK R7 and UEK 8, change the header requirements in the source code. For example, change lines like those in the following example to what's shown in the second example:
#ifdef CONFIG_SLUB
#include <linux/slub_def.h>
#endif
#if ( LINUX_VERSION_CODE < KERNEL_VERSION(5,4,0) )
#ifdef CONFIG_SLUB
#include <linux/slub_def.h>
#endif
#endif