diff --git a/config/config.go b/config/config.go index ae4db86..0ab31f0 100644 --- a/config/config.go +++ b/config/config.go @@ -140,6 +140,8 @@ type Artifact struct { DisableKpti bool } + StandardModules bool + Preload []PreloadModule } diff --git a/debug.go b/debug.go index 8c064bd..778083d 100644 --- a/debug.go +++ b/debug.go @@ -109,6 +109,7 @@ func interactive(q *qemu.System) (err error) { } } +// TODO Merge with pew.go:whatever func debugHandler(kcfg config.KernelConfig, workPath, kernRegex, gdb string, dockerTimeout time.Duration, yekaslr, yesmep, yesmap, yekpti, nokaslr, nosmep, nosmap, nokpti bool) (err error) { @@ -206,6 +207,15 @@ func debugHandler(kcfg config.KernelConfig, workPath, kernRegex, gdb string, } defer os.RemoveAll(tmp) + if ka.StandardModules { + // Module depends on one of the standard modules + err = copyStandardModules(q, ki) + if err != nil { + log.Println(err) + return + } + } + err = preloadModules(q, ka, ki, dockerTimeout) if err != nil { log.Println(err) diff --git a/pew.go b/pew.go index 8b070fc..a4a994f 100644 --- a/pew.go +++ b/pew.go @@ -403,6 +403,15 @@ func copyTest(q *qemu.System, testPath string, ka config.Artifact) ( return } +func copyStandardModules(q *qemu.System, ki config.KernelInfo) (err error) { + _, err = q.Command("root", "mkdir -p /lib/modules") + if err != nil { + return + } + + return q.CopyDirectory("root", ki.ModulesPath, "/lib/modules/") +} + func whatever(swg *sizedwaitgroup.SizedWaitGroup, ka config.Artifact, ki config.KernelInfo, binaryPath, testPath string, qemuTimeout, dockerTimeout time.Duration, dist, tag string, @@ -498,6 +507,15 @@ func whatever(swg *sizedwaitgroup.SizedWaitGroup, ka config.Artifact, return } + if ka.StandardModules { + // Module depends on one of the standard modules + err = copyStandardModules(q, ki) + if err != nil { + log.Println(err) + return + } + } + err = preloadModules(q, ka, ki, dockerTimeout) if err != nil { log.Println(err)