diff --git a/internal/distro/rhel9/images.go b/internal/distro/rhel9/images.go index 09e9377c6..987f8be1d 100644 --- a/internal/distro/rhel9/images.go +++ b/internal/distro/rhel9/images.go @@ -283,6 +283,7 @@ func edgeInstallerImage(workload workload.Workload, img.Groups = users.GroupsFromBP(customizations.GetGroups()) img.SquashfsCompression = "xz" + img.AdditionalDracutModules = []string{"prefixdevname", "prefixdevname-tools"} img.ISOLabelTempl = d.isolabelTmpl img.Product = d.product @@ -357,6 +358,8 @@ func imageInstallerImage(workload workload.Workload, img.Users = users.UsersFromBP(customizations.GetUsers()) img.Groups = users.GroupsFromBP(customizations.GetGroups()) + img.AdditionalDracutModules = []string{"prefixdevname", "prefixdevname-tools"} + img.SquashfsCompression = "xz" // put the kickstart file in the root of the iso diff --git a/internal/image/image_installer.go b/internal/image/image_installer.go index 85bda623d..fc7babab1 100644 --- a/internal/image/image_installer.go +++ b/internal/image/image_installer.go @@ -48,6 +48,7 @@ type ImageInstaller struct { AdditionalKernelOpts []string AdditionalAnacondaModules []string + AdditionalDracutModules []string } func NewImageInstaller() *ImageInstaller { @@ -77,7 +78,8 @@ func (img *ImageInstaller) InstantiateManifest(m *manifest.Manifest, anacondaPipeline.Groups = img.Groups anacondaPipeline.Variant = img.Variant anacondaPipeline.Biosdevname = (img.Platform.GetArch() == platform.ARCH_X86_64) - anacondaPipeline.AdditionalModules = img.AdditionalAnacondaModules + anacondaPipeline.AdditionalAnacondaModules = img.AdditionalAnacondaModules + anacondaPipeline.AdditionalDracutModules = img.AdditionalDracutModules tarPath := "/liveimg.tar.gz" diff --git a/internal/image/ostree_installer.go b/internal/image/ostree_installer.go index eb17ad1a2..4df91ca34 100644 --- a/internal/image/ostree_installer.go +++ b/internal/image/ostree_installer.go @@ -34,6 +34,8 @@ type OSTreeInstaller struct { Commit ostree.CommitSpec Filename string + + AdditionalDracutModules []string } func NewOSTreeInstaller(commit ostree.CommitSpec) *OSTreeInstaller { @@ -64,6 +66,7 @@ func (img *OSTreeInstaller) InstantiateManifest(m *manifest.Manifest, anacondaPipeline.Variant = img.Variant anacondaPipeline.Biosdevname = (img.Platform.GetArch() == platform.ARCH_X86_64) anacondaPipeline.Checkpoint() + anacondaPipeline.AdditionalDracutModules = img.AdditionalDracutModules rootfsPartitionTable := &disk.PartitionTable{ Size: 20 * common.MebiByte, diff --git a/internal/manifest/anaconda.go b/internal/manifest/anaconda.go index eb18b6b13..c555f7bc1 100644 --- a/internal/manifest/anaconda.go +++ b/internal/manifest/anaconda.go @@ -46,7 +46,10 @@ type Anaconda struct { InteractiveDefaults *AnacondaInteractiveDefaults // Additional anaconda modules to enable - AdditionalModules []string + AdditionalAnacondaModules []string + + // Additional dracut modules to enable + AdditionalDracutModules []string } // NewAnaconda creates an anaconda pipeline object. repos and packages @@ -195,12 +198,14 @@ func (p *Anaconda) serialize() osbuild.Pipeline { pipeline.AddStage(osbuild.NewUsersStage(usersStageOptions)) // always enable users module in anaconda - pipeline.AddStage(osbuild.NewAnacondaStage(osbuild.NewAnacondaStageOptions(true, p.AdditionalModules))) + pipeline.AddStage(osbuild.NewAnacondaStage(osbuild.NewAnacondaStageOptions(true, p.AdditionalAnacondaModules))) pipeline.AddStage(osbuild.NewLoraxScriptStage(&osbuild.LoraxScriptStageOptions{ Path: "99-generic/runtime-postinstall.tmpl", BaseArch: p.platform.GetArch().String(), })) - pipeline.AddStage(osbuild.NewDracutStage(dracutStageOptions(p.kernelVer, p.Biosdevname, []string{ + + dracutModules := append( + p.AdditionalDracutModules, "anaconda", "rdma", "rngd", @@ -210,7 +215,8 @@ func (p *Anaconda) serialize() osbuild.Pipeline { "iscsi", "lunmask", "nfs", - }))) + ) + pipeline.AddStage(osbuild.NewDracutStage(dracutStageOptions(p.kernelVer, p.Biosdevname, dracutModules))) pipeline.AddStage(osbuild.NewSELinuxConfigStage(&osbuild.SELinuxConfigStageOptions{State: osbuild.SELinuxStatePermissive})) if p.InteractiveDefaults != nil { diff --git a/internal/manifest/coreos_installer.go b/internal/manifest/coreos_installer.go index cf913be3a..b0356176b 100644 --- a/internal/manifest/coreos_installer.go +++ b/internal/manifest/coreos_installer.go @@ -34,6 +34,8 @@ type CoreOSInstaller struct { Biosdevname bool FDO *fdo.Options + + AdditionalDracutModules []string } // NewCoreOSInstaller creates an CoreOS installer pipeline object. @@ -144,10 +146,14 @@ func (p *CoreOSInstaller) serialize() osbuild.Pipeline { Final: true, })) pipeline.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: "C.UTF-8"})) - dracutStageOptions := dracutStageOptions(p.kernelVer, p.Biosdevname, []string{ + + dracutModules := append( + p.AdditionalDracutModules, "coreos-installer", "fdo", - }) + ) + + dracutStageOptions := dracutStageOptions(p.kernelVer, p.Biosdevname, dracutModules) if p.FDO != nil && p.FDO.DiunPubKeyRootCerts != "" { pipeline.AddStage(osbuild.NewFDOStageForRootCerts(p.FDO.DiunPubKeyRootCerts)) dracutStageOptions.Install = []string{"/fdo_diun_pub_key_root_certs.pem"}