From 30c6b644133d6e5cbf4e5bfb0fd19de8b618cf2e Mon Sep 17 00:00:00 2001 From: Gregory Kurtzer Date: Thu, 4 Feb 2021 18:06:46 -0800 Subject: [PATCH] Support importing a kernel from a chroot directory --- internal/app/wwctl/kernel/imprt/main.go | 2 +- internal/app/wwctl/kernel/imprt/root.go | 2 ++ internal/pkg/kernel/kernel.go | 6 +++--- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/internal/app/wwctl/kernel/imprt/main.go b/internal/app/wwctl/kernel/imprt/main.go index 4109fc55..b48ce76b 100644 --- a/internal/app/wwctl/kernel/imprt/main.go +++ b/internal/app/wwctl/kernel/imprt/main.go @@ -12,7 +12,7 @@ import ( func CobraRunE(cmd *cobra.Command, args []string) error { for _, arg := range args { - output, err := kernel.Build(arg) + output, err := kernel.Build(arg, OptRoot) if err != nil { wwlog.Printf(wwlog.ERROR, "Failed building kernel: %s\n", err) os.Exit(1) diff --git a/internal/app/wwctl/kernel/imprt/root.go b/internal/app/wwctl/kernel/imprt/root.go index 22881842..b529e680 100644 --- a/internal/app/wwctl/kernel/imprt/root.go +++ b/internal/app/wwctl/kernel/imprt/root.go @@ -16,12 +16,14 @@ var ( BuildAll bool ByNode bool SetDefault bool + OptRoot string ) func init() { baseCmd.PersistentFlags().BoolVarP(&BuildAll, "all", "a", false, "Build all overlays (runtime and system)") baseCmd.PersistentFlags().BoolVarP(&ByNode, "node", "n", false, "Build overlay for a particular node(s)") baseCmd.PersistentFlags().BoolVar(&SetDefault, "setdefault", false, "Set this kernel for the default profile") + baseCmd.PersistentFlags().StringVarP(&OptRoot, "root", "r", "/", "Import kernel from root (chroot) directory") } // GetRootCommand returns the root cobra.Command for the application. diff --git a/internal/pkg/kernel/kernel.go b/internal/pkg/kernel/kernel.go index d7df72ad..5dc081e3 100644 --- a/internal/pkg/kernel/kernel.go +++ b/internal/pkg/kernel/kernel.go @@ -69,10 +69,10 @@ func ListKernels() ([]string, error) { return ret, nil } -func Build(kernelVersion string) (string, error) { +func Build(kernelVersion string, root string) (string, error) { - kernelImage := "/boot/vmlinuz-" + kernelVersion - kernelDrivers := "/lib/modules/" + kernelVersion + kernelImage := path.Join(root, "/boot/vmlinuz-"+kernelVersion) + kernelDrivers := path.Join(root, "/lib/modules/"+kernelVersion) kernelDestination := KernelImage(kernelVersion) driversDestination := KmodsImage(kernelVersion)