From f89293a1d6516517cd5ce36d1ea934e6a268ddd4 Mon Sep 17 00:00:00 2001 From: Christian Goll Date: Thu, 9 Sep 2021 08:39:41 +0200 Subject: [PATCH] allow compressed kernels with gz suffix handy for aarch64 --- internal/pkg/kernel/kernel.go | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/internal/pkg/kernel/kernel.go b/internal/pkg/kernel/kernel.go index 34618db6..01edf77a 100644 --- a/internal/pkg/kernel/kernel.go +++ b/internal/pkg/kernel/kernel.go @@ -6,12 +6,12 @@ import ( "os" "os/exec" "path" - - "github.com/pkg/errors" + "strings" "github.com/hpcng/warewulf/internal/pkg/config" "github.com/hpcng/warewulf/internal/pkg/util" "github.com/hpcng/warewulf/internal/pkg/wwlog" + "github.com/pkg/errors" ) func ParentDir() string { @@ -72,28 +72,30 @@ func ListKernels() ([]string, error) { } func Build(kernelVersion string, root string) (string, error) { + kernelImage := path.Join(root, "/boot/vmlinuz-"+kernelVersion) kernelDrivers := path.Join(root, "/lib/modules/"+kernelVersion) kernelDestination := KernelImage(kernelVersion) driversDestination := KmodsImage(kernelVersion) // Create the destination paths just in case it doesn't exist - err := os.MkdirAll(path.Dir(kernelDestination), 0755) - if err != nil { - return "", fmt.Errorf("failed to create kernal dest: %s", err) - } - - err = os.MkdirAll(path.Dir(driversDestination), 0755) - if err != nil { - return "", fmt.Errorf("failed to create driver dest: %s", err) - } + os.MkdirAll(path.Dir(kernelDestination), 0755) + os.MkdirAll(path.Dir(driversDestination), 0755) if !util.IsFile(kernelImage) { - return "", errors.New("Could not locate kernel image") + // allow uncompressed kernels (can be handy for aarch64) + kernelImage = path.Join(root, "/boot/vmlinux-"+kernelVersion) + if !util.IsFile(kernelImage) { + return "", errors.New("Could not locate kernel image") + } } if !util.IsDir(kernelDrivers) { - return "", errors.New("Could not locate kernel drivers") + // strip a gz suffix + kernelDrivers = strings.TrimRight(kernelDrivers, ".gz") + if !util.IsDir(kernelDrivers) { + return "", errors.New("Could not locate kernel drivers") + } } wwlog.Printf(wwlog.VERBOSE, "Setting up Kernel\n")