From 74ee95175817c000fe1e79ed0f80f77ce736ccf3 Mon Sep 17 00:00:00 2001 From: dkeven <82354774+dkeven@users.noreply.github.com> Date: Thu, 25 Sep 2025 11:17:13 +0800 Subject: [PATCH] feat: support installation on Ubuntu 25.04 (#1870) --- cli/pkg/core/connector/system.go | 3 ++- cli/pkg/gpu/tasks.go | 12 ++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/cli/pkg/core/connector/system.go b/cli/pkg/core/connector/system.go index badf3e161..2720da08e 100644 --- a/cli/pkg/core/connector/system.go +++ b/cli/pkg/core/connector/system.go @@ -54,6 +54,7 @@ const ( Ubuntu20 UbuntuVersion = "20." Ubuntu22 UbuntuVersion = "22." Ubuntu24 UbuntuVersion = "24." + Ubuntu25 UbuntuVersion = "25." Debian9 DebianVersion = "9" Debian10 DebianVersion = "10" @@ -134,7 +135,7 @@ func (s *SystemInfo) IsSupport() error { //} if s.IsUbuntu() { - if !s.IsUbuntuVersionEqual(Ubuntu22) && !s.IsUbuntuVersionEqual(Ubuntu24) { + if !s.IsUbuntuVersionEqual(Ubuntu22) && !s.IsUbuntuVersionEqual(Ubuntu24) && !s.IsUbuntuVersionEqual(Ubuntu25) { return fmt.Errorf("unsupported ubuntu os version '%s'", s.GetOsVersion()) } } diff --git a/cli/pkg/gpu/tasks.go b/cli/pkg/gpu/tasks.go index d4e7a7cb5..cc3aab417 100644 --- a/cli/pkg/gpu/tasks.go +++ b/cli/pkg/gpu/tasks.go @@ -78,7 +78,7 @@ func (t *InstallCudaDeps) Execute(runtime connector.Runtime) error { switch { case systemInfo.IsUbuntu(): cudaKeyringVersion = v1alpha2.CudaKeyringVersion1_0 - if systemInfo.IsUbuntuVersionEqual(connector.Ubuntu24) { + if systemInfo.IsUbuntuVersionEqual(connector.Ubuntu24) || systemInfo.IsUbuntuVersionEqual(connector.Ubuntu25) { cudaKeyringVersion = v1alpha2.CudaKeyringVersion1_1 osVersion = "24.04" } else if systemInfo.IsUbuntuVersionEqual(connector.Ubuntu22) { @@ -173,7 +173,11 @@ func (t *UpdateNvidiaContainerToolkitSource) Execute(runtime connector.Runtime) return fmt.Errorf("Failed to find %s binary in %s", gpgkey.Filename, keyPath) } - cmd = fmt.Sprintf("apt-key add %s", keyPath) + if _, err := runtime.GetRunner().SudoCmd("install -d -m 0755 /usr/share/keyrings", false, true); err != nil { + return err + } + keyringPath := "/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg" + cmd = fmt.Sprintf("gpg --batch --yes --dearmor -o %s %s", keyringPath, keyPath) if _, err := runtime.GetRunner().SudoCmd(cmd, false, true); err != nil { return err } @@ -201,6 +205,10 @@ func (t *UpdateNvidiaContainerToolkitSource) Execute(runtime connector.Runtime) return err } + if _, err := runtime.GetRunner().SudoCmd(fmt.Sprintf("sed -i 's#^deb https://#deb [signed-by=%s] https://#' %s", keyringPath, dstPath), false, true); err != nil { + return err + } + mirrorRepo := os.Getenv(common.ENV_NVIDIA_CONTAINER_REPO_MIRROR) if mirrorRepo == "" { return nil