From ac61306900e24a9905e63da896d11adc991b1e3a Mon Sep 17 00:00:00 2001 From: Evan Lezar Date: Wed, 30 Oct 2024 15:13:34 +0100 Subject: [PATCH] Use require-nvidia-kernel-modules feature for toolkit installation Signed-off-by: Evan Lezar --- tools/container/toolkit/executable.go | 6 ------ tools/container/toolkit/executable_test.go | 17 ----------------- tools/container/toolkit/runtime.go | 17 +++-------------- tools/container/toolkit/runtime_test.go | 7 ------- tools/container/toolkit/toolkit.go | 2 ++ 5 files changed, 5 insertions(+), 44 deletions(-) diff --git a/tools/container/toolkit/executable.go b/tools/container/toolkit/executable.go index 394ca007..7fb879b7 100644 --- a/tools/container/toolkit/executable.go +++ b/tools/container/toolkit/executable.go @@ -36,7 +36,6 @@ type executable struct { source string target executableTarget env map[string]string - preLines []string argLines []string } @@ -96,11 +95,6 @@ func (e executable) writeWrapperTo(wrapper io.Writer, destFolder string, dotfile // Add the shebang fmt.Fprintln(wrapper, "#! /bin/sh") - // Add the preceding lines if any - for _, line := range e.preLines { - fmt.Fprintf(wrapper, "%s\n", r.apply(line)) - } - // Update the path to include the destination folder var env map[string]string if e.env == nil { diff --git a/tools/container/toolkit/executable_test.go b/tools/container/toolkit/executable_test.go index 8cb47596..5b3249ea 100644 --- a/tools/container/toolkit/executable_test.go +++ b/tools/container/toolkit/executable_test.go @@ -59,23 +59,6 @@ func TestWrapper(t *testing.T) { "", }, }, - { - e: executable{ - preLines: []string{ - "preline1", - "preline2", - }, - }, - expectedLines: []string{ - shebang, - "preline1", - "preline2", - "PATH=/dest/folder:$PATH \\", - "source.real \\", - "\t\"$@\"", - "", - }, - }, { e: executable{ argLines: []string{ diff --git a/tools/container/toolkit/runtime.go b/tools/container/toolkit/runtime.go index bdfca983..1f3ce31b 100644 --- a/tools/container/toolkit/runtime.go +++ b/tools/container/toolkit/runtime.go @@ -57,16 +57,6 @@ func newNvidiaContainerRuntimeInstaller(source string) *executable { } func newRuntimeInstaller(source string, target executableTarget, env map[string]string) *executable { - preLines := []string{ - "", - "cat /proc/modules | grep -e \"^nvidia \" >/dev/null 2>&1", - "if [ \"${?}\" != \"0\" ]; then", - " echo \"nvidia driver modules are not yet loaded, invoking runc directly\"", - " exec runc \"$@\"", - "fi", - "", - } - runtimeEnv := make(map[string]string) runtimeEnv["XDG_CONFIG_HOME"] = filepath.Join(destDirPattern, ".config") for k, v := range env { @@ -74,10 +64,9 @@ func newRuntimeInstaller(source string, target executableTarget, env map[string] } r := executable{ - source: source, - target: target, - env: runtimeEnv, - preLines: preLines, + source: source, + target: target, + env: runtimeEnv, } return &r diff --git a/tools/container/toolkit/runtime_test.go b/tools/container/toolkit/runtime_test.go index d2841506..77d84ec7 100644 --- a/tools/container/toolkit/runtime_test.go +++ b/tools/container/toolkit/runtime_test.go @@ -38,13 +38,6 @@ func TestNvidiaContainerRuntimeInstallerWrapper(t *testing.T) { expectedLines := []string{ shebang, - "", - "cat /proc/modules | grep -e \"^nvidia \" >/dev/null 2>&1", - "if [ \"${?}\" != \"0\" ]; then", - " echo \"nvidia driver modules are not yet loaded, invoking runc directly\"", - " exec runc \"$@\"", - "fi", - "", "PATH=/dest/folder:$PATH \\", "XDG_CONFIG_HOME=/dest/folder/.config \\", "source.real \\", diff --git a/tools/container/toolkit/toolkit.go b/tools/container/toolkit/toolkit.go index 43e68ca5..2a487a52 100644 --- a/tools/container/toolkit/toolkit.go +++ b/tools/container/toolkit/toolkit.go @@ -465,6 +465,8 @@ func installToolkitConfig(c *cli.Context, toolkitConfigPath string, nvidiaContai configValues["nvidia-container-runtime.runtimes"] = toolkitRuntimeList } + // We require the NVIDIA kernel modules to be loaded. + configValues["features.require-nvidia-kernel-modules"] = true for _, optInFeature := range opts.optInFeatures.Value() { configValues["features."+optInFeature] = true }