Newer Wi-Fi chipsets, storage controllers, and workstation hardware can need kernel support that arrives before CentOS Stream’s default enterprise-tracking kernel picks it up. You can install the latest Linux kernel on CentOS Stream from ELRepo, which packages alternate upstream kernel branches for Enterprise Linux systems while leaving the original CentOS Stream kernel available as a fallback.
These steps cover CentOS Stream 10 and CentOS Stream 9. The mainline kernel-ml branch is available on both releases, while the long-term kernel-lt branch currently appears only for CentOS Stream 9.
Install the Latest Linux Kernel on CentOS Stream
ELRepo installs alternate kernel packages beside the CentOS Stream kernel. That side-by-side behavior is important because it lets you test the newer kernel, then boot back into the stock kernel if hardware, Secure Boot, or third-party modules do not behave as expected.
Choose an ELRepo Kernel Branch for CentOS Stream
Choose one branch for the initial install. Installing both branches is possible, but the last installed branch can become the default boot entry, so switching between them is clearer when you use grubby after the packages are installed.
| Kernel Branch | Primary Package | CentOS Stream Scope | Best Fit | Update Behavior |
|---|---|---|---|---|
| Mainline kernel | kernel-ml | Stream 10 and Stream 9 | Newest hardware support, recent kernel features, non-production systems, and workstations that need a newer branch | Tracks ELRepo’s current mainline kernel builds |
| Long-term kernel | kernel-lt | Stream 9 only | Systems that need a newer-than-stock kernel but prefer a slower-moving long-term branch | Tracks ELRepo’s long-term kernel builds |
Check your current kernel before changing anything. CentOS Stream 10 systems commonly report a 6.12.x kernel, while CentOS Stream 9 systems report a 5.14.x kernel. The exact package revision changes with normal Stream updates.
uname -r
rpm -q kernel-core
Update CentOS Stream Before Adding ELRepo
Refresh package metadata and apply pending updates before adding an alternate kernel repository. Review the DNF transaction before accepting it, especially on remote systems where a kernel or bootloader change may require console access.
sudo dnf upgrade --refresh
Add ELRepo on CentOS Stream
Install the ELRepo release package that matches your CentOS Stream major version. DNF imports the ELRepo signing key during the transaction; confirm the prompt when it appears.
Use this command on CentOS Stream 10:
sudo dnf install https://www.elrepo.org/elrepo-release-10.el10.elrepo.noarch.rpm
Use this command on CentOS Stream 9:
sudo dnf install https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm
Verify the ELRepo repository files were added. The normal elrepo repository is enabled, while elrepo-kernel stays disabled until you enable it for a specific kernel transaction.
dnf repolist all | grep -E '^elrepo'
Relevant output includes:
elrepo ELRepo.org Community Enterprise Linux Repository - el10 enabled elrepo-extras ELRepo.org Community Enterprise Linux Extras Repository disabled elrepo-kernel ELRepo.org Community Enterprise Linux Kernel Repository disabled elrepo-testing ELRepo.org Community Enterprise Linux Testing Repository disabled
On CentOS Stream 9, the repository names use el9 instead of el10. The enabled and disabled states are the same.
Check Available ELRepo Kernel Packages
List the kernel packages exposed by elrepo-kernel. The version numbers change as ELRepo publishes new builds, so treat this as a live availability check instead of a fixed version target.
dnf list available --disablerepo='*' --enablerepo=elrepo-kernel 'kernel-ml*' 'kernel-lt*'
CentOS Stream 10 should list kernel-ml, kernel-ml-core, kernel-ml-devel, kernel-ml-modules, and kernel-ml-modules-extra. CentOS Stream 9 should list those mainline packages plus matching kernel-lt packages.
Install kernel-ml on CentOS Stream
Install the ELRepo mainline kernel package. DNF pulls the required kernel-ml-core and kernel-ml-modules packages automatically.
sudo dnf --enablerepo=elrepo-kernel install kernel-ml
If you build external modules or need a broader driver set, install the development files and extra modules before rebooting.
sudo dnf --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel kernel-ml-modules-extra
Use kernel-ml-devel for DKMS or other kernel-module builds. The kernel-ml-headers package is for userspace kernel API headers, not the usual fix for module builds.
Install kernel-lt on CentOS Stream 9
CentOS Stream 9 can use ELRepo’s long-term kernel branch instead of kernel-ml. Do not run both branch install commands unless you intend to choose the boot default manually afterward.
sudo dnf --enablerepo=elrepo-kernel install kernel-lt
For module builds or extra drivers on the long-term branch, install the matching development and extra-module packages.
sudo dnf --enablerepo=elrepo-kernel install kernel-lt kernel-lt-devel kernel-lt-modules-extra
CentOS Stream 10 does not currently list kernel-lt in ELRepo’s elrepo-kernel metadata. Use kernel-ml on Stream 10, or stay with the CentOS Stream kernel if you need the enterprise-tracking branch.
Install only one ELRepo kernel branch first. If both
kernel-mlandkernel-ltare installed on CentOS Stream 9, GRUB can selectkernel-ltas the default untilgrubbychanges the boot entry.
Reboot Into the ELRepo Kernel
The newly installed kernel does not run until the next boot. Reboot when you have console or out-of-band recovery available, especially on remote systems.
sudo reboot
Verify the Latest Kernel on CentOS Stream
After the system comes back online, confirm that the active kernel comes from ELRepo. A successful boot prints a kernel string containing .elrepo..
uname -r
Mainline kernels should show an ELRepo mainline version string, and Stream 9 long-term kernels should show the ELRepo long-term branch. The exact numbers change over time, but the elrepo.x86_64 suffix is the stable success signal.
If you installed kernel-ml-devel or kernel-lt-devel, confirm the development tree matches the running kernel.
test -d /usr/src/kernels/$(uname -r) && echo "matching kernel development tree found"
matching kernel development tree found
Check the default boot entry if you installed more than one ELRepo branch or if the system still boots the CentOS Stream kernel.
sudo grubby --default-kernel
The path should point to a /boot/vmlinuz-... entry for the kernel branch you want to run.
Manage ELRepo Kernel Updates on CentOS Stream
ELRepo leaves elrepo-kernel disabled by default, so normal DNF updates do not automatically pull new mainline or long-term kernel builds. Use a targeted update command when you want to check the installed ELRepo branch.
sudo dnf --enablerepo=elrepo-kernel upgrade 'kernel-ml*'
Use the long-term package pattern on CentOS Stream 9 if you installed kernel-lt.
sudo dnf --enablerepo=elrepo-kernel upgrade 'kernel-lt*'
Reboot after a kernel update, then run uname -r again to confirm the new ELRepo build is active.
If you need perf or related kernel tools from the same ELRepo branch, the packages are kernel-ml-tools and kernel-lt-tools. Install them only when you need branch-matched tools because they replace the distro kernel-tools package, and the mainline and long-term tools conflict with each other.
Restore the Default CentOS Stream Kernel
Return to the CentOS Stream kernel before removing ELRepo kernel packages. Removing the kernel you are currently running can leave you without a clean fallback.
Set the Stock Kernel as the Boot Default
Select the newest non-ELRepo kernel entry, make it the default, and reboot.
The tail command guide explains the tail -n 1 selector if you want to adjust how the newest matching boot entry is chosen.
stock_kernel=$(ls -1 /boot/vmlinuz-* | grep -v elrepo | sort -V | tail -n 1)
sudo grubby --set-default="$stock_kernel"
sudo grubby --default-kernel
sudo reboot
After reconnecting, confirm the active kernel no longer contains elrepo.
uname -r
Remove ELRepo Kernel Packages
Remove the branch packages only after the stock kernel is running. Review the DNF transaction before accepting removal.
sudo dnf remove 'kernel-ml*'
On CentOS Stream 9, remove the long-term branch too if you installed it.
sudo dnf remove 'kernel-lt*'
If you installed ELRepo kernel tools and want the distro perf package back afterward, reinstall the stock tools package.
sudo dnf install kernel-tools
Remove ELRepo or Disable the Kernel Repository
Remove the ELRepo release package if you no longer need any ELRepo packages.
sudo dnf remove elrepo-release
If you want to keep ELRepo but ensure the kernel repository stays disabled, install the DNF plugin if needed and disable only elrepo-kernel.
sudo dnf install dnf-plugins-core
sudo dnf config-manager --set-disabled elrepo-kernel
Troubleshoot ELRepo Kernels on CentOS Stream
System Still Boots the CentOS Stream Kernel
If uname -r still shows the stock kernel after reboot, confirm the ELRepo kernel entry exists and set it as the default.
The grep command guide covers the -E filter used here if you want to adjust the boot-entry search pattern.
sudo grubby --info=ALL | grep -E '^(title|kernel)='
elrepo_kernel=$(ls -1 /boot/vmlinuz-*elrepo* | sort -V | tail -n 1)
sudo grubby --set-default="$elrepo_kernel"
Run sudo grubby --default-kernel, reboot, then verify again with uname -r.
Secure Boot Blocks the ELRepo Kernel
ELRepo documents that kernel-ml and kernel-lt packages are not signed for Secure Boot. If firmware refuses to boot the ELRepo kernel, boot the stock CentOS Stream kernel from GRUB and either keep the distro kernel or change Secure Boot policy from firmware with the operational risk understood.
DKMS or Proprietary Modules Fail After Reboot
External modules need development files for the running kernel. Install the matching ELRepo devel package first, then rebuild your modules with the tool your driver stack uses.
sudo dnf --enablerepo=elrepo-kernel install kernel-ml-devel
sudo dkms autoinstall
The dkms package comes from EPEL on CentOS Stream. Use the Install EPEL on CentOS Stream workflow first if dkms is not available on your system.
dnf config-manager Is Missing
Minimal systems may not include the DNF plugin that provides config-manager. Install it from the CentOS Stream repositories, then rerun the disable command.
sudo dnf install dnf-plugins-core
sudo dnf config-manager --set-disabled elrepo-kernel
Conclusion
CentOS Stream is back online with an ELRepo kernel branch available for newer hardware support, and the stock kernel remains close by as a recovery path. Keep ELRepo kernel updates deliberate with targeted DNF commands, and use the GRUB fallback before removing any kernel branch that has not already booted cleanly on your hardware.


Formatting tips for your comment
You can use basic HTML to format your comment. Useful tags currently allowed in published comments:
<code>command</code>command<strong>bold</strong><em>italic</em><blockquote>quote</blockquote>