From 303f9b6b4421f3cfcb20f77c1a0f7b11f32a9454 Mon Sep 17 00:00:00 2001 From: Atkins Chang Date: Fri, 6 Aug 2021 22:09:02 +0800 Subject: [PATCH] kind: patch for correct kernal module path Signed-off-by: Atkins Chang --- pkgs/development/tools/kind/default.nix | 5 ++ .../tools/kind/kernel-module-path.patch | 47 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 pkgs/development/tools/kind/kernel-module-path.patch diff --git a/pkgs/development/tools/kind/default.nix b/pkgs/development/tools/kind/default.nix index 88bc30943c3..e667238b9b0 100644 --- a/pkgs/development/tools/kind/default.nix +++ b/pkgs/development/tools/kind/default.nix @@ -13,6 +13,11 @@ buildGoModule rec { sha256 = "sha256-pjg52ONseKNw06EOBzD6Elge+Cz+C3llPvjJPHkn1cw="; }; + patches = [ + # fix kernel module path used by kind + ./kernel-module-path.patch + ]; + vendorSha256 = "sha256-HiVdekSZrC/RkMSvcwm1mv6AE4bA5kayUsMdVCbckiE="; doCheck = false; diff --git a/pkgs/development/tools/kind/kernel-module-path.patch b/pkgs/development/tools/kind/kernel-module-path.patch new file mode 100644 index 00000000000..833cd3388ec --- /dev/null +++ b/pkgs/development/tools/kind/kernel-module-path.patch @@ -0,0 +1,47 @@ +diff --git a/pkg/cluster/internal/providers/common/getmodules.go b/pkg/cluster/internal/providers/common/getmodules.go +new file mode 100644 +index 00000000..f42a883d +--- /dev/null ++++ b/pkg/cluster/internal/providers/common/getmodules.go +@@ -0,0 +1,15 @@ ++package common ++ ++import "os" ++ ++const ( ++ fhsKernalModulePath = "/lib/modules" ++ nixKernalModulePath = "/run/booted-system/kernel-modules/lib" ++) ++ ++func GetKernelModulePath() string { ++ if _, err := os.Stat(nixKernalModulePath); !os.IsNotExist(err) { ++ return nixKernalModulePath ++ } ++ return fhsKernalModulePath ++} +diff --git a/pkg/cluster/internal/providers/docker/provision.go b/pkg/cluster/internal/providers/docker/provision.go +index 50161861..86d5b7b6 100644 +--- a/pkg/cluster/internal/providers/docker/provision.go ++++ b/pkg/cluster/internal/providers/docker/provision.go +@@ -242,7 +242,7 @@ func runArgsForNode(node *config.Node, clusterIPFamily config.ClusterIPFamily, n + // (please don't depend on doing this though!) + "--volume", "/var", + // some k8s things want to read /lib/modules +- "--volume", "/lib/modules:/lib/modules:ro", ++ "--volume", fmt.Sprintf("%s:/lib/modules:ro", common.GetKernelModulePath()), + }, + args..., + ) +diff --git a/pkg/cluster/internal/providers/podman/provision.go b/pkg/cluster/internal/providers/podman/provision.go +index 51dce486..3bc36b42 100644 +--- a/pkg/cluster/internal/providers/podman/provision.go ++++ b/pkg/cluster/internal/providers/podman/provision.go +@@ -205,7 +205,7 @@ func runArgsForNode(node *config.Node, clusterIPFamily config.ClusterIPFamily, n + // dev: devices on the volume will be able to be used by processes within the container + "--volume", fmt.Sprintf("%s:/var:suid,exec,dev", varVolume), + // some k8s things want to read /lib/modules +- "--volume", "/lib/modules:/lib/modules:ro", ++ "--volume", fmt.Sprintf("%s:/lib/modules:ro", common.GetKernelModulePath()), + }, + args..., + )