@@ -394,11 +394,22 @@ func doInstall(mst *initramfsMountsState, model *asserts.Model, sysSnaps map[sna
394394 })
395395 }
396396
397- // TODO do not rebuild drivers tree if using preseed tarball
397+ preseed := false
398+ currentSeed , err := mst .LoadSeed (mst .recoverySystem )
399+ if err != nil {
400+ return err
401+ }
402+ preseedSeed , ok := currentSeed .(seed.PreseedCapable )
403+ if ok && preseedSeed .HasArtifact ("preseed.tgz" ) {
404+ preseed = true
405+ }
406+ // Drivers tree will already be built if using the preseed tarball
407+ needsKernelSetup := model .NeedsKernelSetup () && ! preseed
408+
398409 isCore := ! model .Classic ()
399410 kernelBootInfo := gadgetInstall .BuildKernelBootInfo (
400411 kernelSnap , compSeedInfos , kernelMountDir , kernCompsMntPts ,
401- isCore , model . NeedsKernelSetup () )
412+ isCore , needsKernelSetup )
402413
403414 bootDevice := ""
404415 installedSystem , err := gadgetInstallRun (model , gadgetMountDir , kernelBootInfo .KSnapInfo , bootDevice , options , installObserver , timings .New (nil ))
@@ -447,14 +458,10 @@ func doInstall(mst *initramfsMountsState, model *asserts.Model, sysSnaps map[sna
447458 return err
448459 }
449460
450- currentSeed , err := mst .LoadSeed (mst .recoverySystem )
451- if err != nil {
452- return err
453- }
454- preseedSeed , ok := currentSeed .(seed.PreseedCapable )
455- if ok && preseedSeed .HasArtifact ("preseed.tgz" ) {
461+ if preseed {
456462 runMode := false
457- if err := installApplyPreseededData (preseedSeed , boot .InitramfsWritableDir (model , runMode )); err != nil {
463+ if err := installApplyPreseededData (preseedSeed ,
464+ boot .InitramfsWritableDir (model , runMode )); err != nil {
458465 return err
459466 }
460467 }
0 commit comments