From e5e6dee51aa8d72c72aea27d1344d342dad9e808 Mon Sep 17 00:00:00 2001 From: Gregory Kurtzer Date: Fri, 17 Sep 2021 21:31:33 -0700 Subject: [PATCH 1/2] minor error message fix --- internal/pkg/util/util.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/pkg/util/util.go b/internal/pkg/util/util.go index 981d45c9..a6ebc2c9 100644 --- a/internal/pkg/util/util.go +++ b/internal/pkg/util/util.go @@ -91,7 +91,7 @@ func CopyFile(source string, dest string) error { err = CopyUIDGID(source, dest) if err != nil { - return errors.Wrap(err, "failed to copy") + return errors.Wrap(err, "failed to set ownership") } sourceFD.Close() From 8ddebe8d77997c539d7abc772d48341aaf1f3c47 Mon Sep 17 00:00:00 2001 From: Gregory Kurtzer Date: Fri, 17 Sep 2021 21:32:03 -0700 Subject: [PATCH 2/2] Attempt to implement #120 --- internal/pkg/kernel/kernel.go | 41 ++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/internal/pkg/kernel/kernel.go b/internal/pkg/kernel/kernel.go index 34618db6..5f6ab073 100644 --- a/internal/pkg/kernel/kernel.go +++ b/internal/pkg/kernel/kernel.go @@ -1,7 +1,9 @@ package kernel import ( + "compress/gzip" "fmt" + "io" "io/ioutil" "os" "os/exec" @@ -80,16 +82,20 @@ func Build(kernelVersion string, root string) (string, error) { // 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) + return "", errors.Wrap(err, "failed to create kernel dest") } err = os.MkdirAll(path.Dir(driversDestination), 0755) if err != nil { - return "", fmt.Errorf("failed to create driver dest: %s", err) + return "", errors.Wrap(err, "failed to create driver dest") } if !util.IsFile(kernelImage) { - return "", errors.New("Could not locate kernel image") + if !util.IsFile(kernelImage + ".gz") { + return "", errors.New("Could not locate kernel image") + } else { + kernelImage = kernelImage + ".gz" + } } if !util.IsDir(kernelDrivers) { @@ -98,10 +104,35 @@ func Build(kernelVersion string, root string) (string, error) { wwlog.Printf(wwlog.VERBOSE, "Setting up Kernel\n") if _, err := os.Stat(kernelImage); err == nil { - err := util.CopyFile(kernelImage, kernelDestination) + kernel, err := os.Open(kernelImage) if err != nil { - return "", err + return "", errors.Wrap(err, "could not open kernel") } + defer kernel.Close() + + gzipreader, err := gzip.NewReader(kernel) + if err == nil { + defer gzipreader.Close() + + writer, err := os.Create(kernelDestination) + if err != nil { + return "", errors.Wrap(err, "could not decompress kernel") + } + defer writer.Close() + + _, err = io.Copy(writer, gzipreader) + if err != nil { + return "", errors.Wrap(err, "could not write decompressed kernel") + } + + } else { + + err := util.CopyFile(kernelImage, kernelDestination) + if err != nil { + return "", errors.Wrap(err, "could not copy kernel") + } + } + } wwlog.Printf(wwlog.VERBOSE, "Building Kernel driver image\n")