What is OEM kernel?
OEM kernel is an Ubuntu derivative kernel, specifically for use in OEM projects. The rationales for creating yet another Ubuntu kernel are:
- Standard Ubuntu kernels have a 3-week SRU cadence. OEM projects require fix schedules that often do not align well with that.
- Hardware devices that are not supported by linux kernel directly require the use of DKMS packages, but DKMS package has its own downsides. By including the functionalities of such DKMS packages into OEM kernel eliminate the need for using DKMS packages, so that we can provide a much better out-of-the-box user experience to end users, no matter for the pre-installed image or stock Ubuntu.
It has the following merits:
- allows integration of major new features without impacting other kernels.
- quicker turnaround time for bug fixing.
- improve out-of-box user experience on certified machines.
The OEM kernel is also called the OEM staging kernel, because the delta in OEM kernel should all be merged to the generic kernel in the next Ubuntu release, so it is essentially a staging code base.
Differences from other Ubuntu kernels
The delta between the OEM and stock Ubuntu kernel falls into one of these categories:
- Additional device drivers, e.g. i915 drivers to support new Intel graphics, iwlwifi to support new wireless cards or new Realtek card reader.
- New features, e.g. to support Thunderbolt security level or power saving for an existing device driver.
- Bug fixes. In many cases, fixes come from upstream, and so they will not only be applied to OEM kernel but also to the generic Ubuntu kernels through the Kernel SRU (stable release update) process.
- Temporary workarounds. For critical issues where a fix does not yet exist at upstream, either the issue is newly found or the proposed fix has not been accepted by upstream, a workaround will be used to fix the issue temporarily, and will be replaced by a proper fix later, which is usually a fix that has been sanctioned by upstream. Note that this kind of short-term workarounds is not encouraged.
In many ways, the OEM kernel is just the same or very similar to the generic Ubuntu kernels. It inherits all the updates, from regular updates that come from upstream stable kernel to all kernel CVE security vulnerability patches. The OEM kernel keeps in sync with the stock Ubuntu kernel by pulling in any new changes every 3 weeks. This way the OEM kernel will always have only a limited delta compare with stock Ubuntu kernel, and not moving farther away from it.
The delta between the OEM kernel and other generic Ubuntu kernels can be found in these reports.
OEM kernels have a shorter life cycles than their generic Ubuntu kernel counterparts. They will get rolled off to the next HWE kernel once all the fixes have been forward-ported.
Before the kernel reaches end-of-life, all of the changes made to the OEM kernel will be reviewed to make sure that the kernel in the next Ubuntu release already has the changes it needs. For instance, a driver we integrate in the OEM kernel should also exist in the next kernel. This ensures users a smooth upgrade path — systems that upgrade to the next Ubuntu release will not lose any functionalities or features, nor have any new regression.
Stable Release Updates (SRU) cadence
Kernel updates for a stable Ubuntu release follows a 3-week cadence, as documented in Kernel/StableReleaseCadence. You can find the current and next SRU cadence at http://kernel.ubuntu.com. The OEM kernel normally releases on the same date as all the other Ubuntu kernels.
If there are patches that need to be added before the next cycle starts, respins could be done by request. The purpose of the OEM kernel is for accommodating OEM bug fixes that do not align well with the regular SRU cadence.
If there is any out-of-cycle bug fixes you need for your customers, please contact HWE team (Anthony, Timo or Acelan) directly. We will let you know if respin could be done, and by when you could expect the kernel release date.
OEM kernel rebases to the master kernel on every SRU cycle, so it gets the same fixes (including but not limited to CVE fixes) from master kernel.
Where is the source code for the OEM kernel?
- Jammy, 6.1:
Sending patches to OEM kernel
The OEM kernel follows the exact same process for submitting patches as the other Ubuntu kernels, that means the guidelines outlined in Kernel/Dev/KernelPatches for patch submission are followed. Patches have to conform to the format in Kernel/Dev/StablePatchFormat. Use a pattern like [OEM-6.1] for the 6.1 based OEM kernel in Jammy.
Should I run it on my machine?
Although the OEM kernel is targeted for OEM projects and thus OEM enabled/certified machines, it is not a private kernel at all. The kernel package is publicly available in the Ubuntu archive and anyone can install and run it.
There is nothing added to the OEM kernel that we think will break other hardware. When we accept patches for the OEM kernel, we do our best to ensure they are regression free for any hardware, and are peer reviewed in the kernel mailing list. The maintenance follows other Ubuntu kernel's best practices, security updates are applied timely, and all bugs are tracked in the public Launchpad. Therefore, it is safe to run it on any machine.
How to install it?
apt install linux-oem-22.04c for oem-6.1
What if I found any issues?
Report bug against the OEM kernel package on command line by running:
or go to this link to report with your web browser.
All bugs can be viewed at bug page.
Kernel/OEMKernel (last edited 2023-05-03 22:49:53 by anthonywong)