@@ -67,6 +67,13 @@ const (
6767 postConfigChangeActionReboot = "reboot"
6868)
6969
70+ // releaseKernelPackages contains the list of packages per kernel type a given OS release uses
71+ type releaseKernelPackages struct {
72+ defaultKernel []string
73+ realtimeKernel []string
74+ hugePagesKernel []string
75+ }
76+
7077func getNodeRef (node * corev1.Node ) * corev1.ObjectReference {
7178 return & corev1.ObjectReference {
7279 Kind : "Node" ,
@@ -1719,33 +1726,27 @@ func (dn *CoreOSDaemon) switchKernel(oldConfig, newConfig *mcfgv1.MachineConfig)
17191726 return fmt .Errorf ("64k-pages is only supported for aarch64 architecture" )
17201727 }
17211728
1722- // TODO: Drop this code and use https://github.com/coreos/rpm-ostree/issues/2542 instead
1723- defaultKernel := []string {"kernel" , "kernel-core" , "kernel-modules" , "kernel-modules-core" , "kernel-modules-extra" }
1724- // Note this list explicitly does *not* include kernel-rt as that is a meta-package that tries to pull in a lot
1725- // of other dependencies we don't want for historical reasons.
1726- realtimeKernel := []string {"kernel-rt-core" , "kernel-rt-modules" , "kernel-rt-modules-extra" , "kernel-rt-kvm" }
1727- hugePagesKernel := []string {"kernel-64k-core" , "kernel-64k-modules" , "kernel-64k-modules-core" , "kernel-64k-modules-extra" }
1728-
17291729 if oldKtype != newKtype {
17301730 logSystem ("Initiating switch to kernel %s" , newKtype )
17311731 } else {
17321732 logSystem ("Re-applying kernel type %s" , newKtype )
17331733 }
17341734
1735+ kernelPackages := dn .getKernelPackagesForRelease ()
17351736 if newKtype == ctrlcommon .KernelTypeRealtime {
17361737 // Switch to RT kernel
17371738 args := []string {"override" , "remove" }
1738- args = append (args , defaultKernel ... )
1739- for _ , pkg := range realtimeKernel {
1739+ args = append (args , kernelPackages . defaultKernel ... )
1740+ for _ , pkg := range kernelPackages . realtimeKernel {
17401741 args = append (args , constants .RPMOSTreeInstallArg , pkg )
17411742 }
17421743
17431744 return runRpmOstree (args ... )
17441745 } else if newKtype == ctrlcommon .KernelType64kPages {
17451746 // Switch to 64k pages kernel
17461747 args := []string {"override" , "remove" }
1747- args = append (args , defaultKernel ... )
1748- for _ , pkg := range hugePagesKernel {
1748+ args = append (args , kernelPackages . defaultKernel ... )
1749+ for _ , pkg := range kernelPackages . hugePagesKernel {
17491750 args = append (args , constants .RPMOSTreeInstallArg , pkg )
17501751 }
17511752
@@ -1754,6 +1755,26 @@ func (dn *CoreOSDaemon) switchKernel(oldConfig, newConfig *mcfgv1.MachineConfig)
17541755 return fmt .Errorf ("unhandled kernel type %s" , newKtype )
17551756}
17561757
1758+ // getKernelPackagesForRelease returns the list of kernel packaged for the running OS release.
1759+ func (dn * CoreOSDaemon ) getKernelPackagesForRelease () releaseKernelPackages {
1760+ // TODO: Drop this code and use https://github.com/coreos/rpm-ostree/issues/2542 instead
1761+
1762+ kernelPackages := releaseKernelPackages {
1763+ defaultKernel : []string {"kernel" , "kernel-core" , "kernel-modules" , "kernel-modules-core" , "kernel-modules-extra" },
1764+ hugePagesKernel : []string {"kernel-64k-core" , "kernel-64k-modules" , "kernel-64k-modules-core" , "kernel-64k-modules-extra" },
1765+ // Note this list explicitly does *not* include kernel-rt as that is a meta-package that tries to pull in a lot
1766+ // of other dependencies we don't want for historical reasons.
1767+ realtimeKernel : []string {"kernel-rt-core" , "kernel-rt-modules" , "kernel-rt-modules-extra" },
1768+ }
1769+
1770+ // RHEL10 early bugfix of OCPBUGS-62925
1771+ // RHEL10 doesn't ship with kernel-rt-kvm
1772+ if ! dn .os .IsEL10 () {
1773+ kernelPackages .realtimeKernel = append (kernelPackages .realtimeKernel , "kernel-rt-kvm" )
1774+ }
1775+ return kernelPackages
1776+ }
1777+
17571778// updateFiles writes files specified by the nodeconfig to disk. it also writes
17581779// systemd units. there is no support for multiple filesystems at this point.
17591780//
0 commit comments