Skip to content

Commit a852150

Browse files
committed
feat: add support for installing NVIDIA Container Toolkit
1 parent c1b91ef commit a852150

File tree

3 files changed

+42
-4
lines changed

3 files changed

+42
-4
lines changed

app/install-env/ssh/ssh-hosts-confirm.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,13 +118,21 @@ function HostConfirmList({ host }: { host: SshDeployerInfo }) {
118118
plannedMessage="即将安装基础依赖"
119119
completedMessage="已安装基础依赖"
120120
/>
121+
<HostConfirmItem flag={flags.installDocker} plannedMessage="即将安装 Docker" completedMessage="已安装 Docker" />
121122
{flags.installNvidiaGpu && (
122123
<HostConfirmItem
123124
flag={flags.installNvidiaGpu}
124125
plannedMessage="即将安装 NVIDIA GPU 驱动"
125126
completedMessage="已安装 NVIDIA GPU 驱动"
126127
/>
127128
)}
129+
{flags.installNvidiaCtk && (
130+
<HostConfirmItem
131+
flag={flags.installNvidiaCtk}
132+
plannedMessage="即将安装 NVIDIA Container Toolkit"
133+
completedMessage="已安装 NVIDIA Container Toolkit"
134+
/>
135+
)}
128136
{flags.installHuaweiNpu && (
129137
<HostConfirmItem
130138
customIcon={<AlertTriangleIcon className="text-warning" />}
@@ -133,7 +141,6 @@ function HostConfirmList({ host }: { host: SshDeployerInfo }) {
133141
completedMessage="已安装 NPU 驱动"
134142
/>
135143
)}
136-
<HostConfirmItem flag={flags.installDocker} plannedMessage="即将安装 Docker" completedMessage="已安装 Docker" />
137144
</ol>
138145
)
139146
}

lib/ssh/pm.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@ export class PackageManager {
100100
}
101101

102102
installNvidiaDriver() {
103-
return String.raw`source <(curl -sSL https://atomgit.com/em-geeklab/nvidia-driver-installer/raw/main/nvidia-install.sh) -y`
103+
return String.raw`source <(curl -sSL https://gitee.com/EM_GeekLab/nvidia-driver-installer/raw/main/nvidia-install.sh) -y`
104+
}
105+
106+
installNvidiaContainerToolkit() {
107+
return String.raw`source <(curl -sSL https://gitee.com/EM_GeekLab/nvidia-driver-installer/raw/main/nvidia-container-installer.sh) -y --china-mirror`
104108
}
105109
}

lib/ssh/ssh-deployer.ts

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export type InstallStepFlags = {
5050
installDocker: InstallFlag
5151
installNvidiaGpu?: InstallFlag
5252
installHuaweiNpu?: InstallFlag
53+
installNvidiaCtk?: InstallFlag
5354
}
5455

5556
export type SshDeployerStatus = 'idle' | 'failed' | 'installing' | 'completed'
@@ -162,6 +163,7 @@ fi
162163
163164
nvidia_gpu_present="false"
164165
nvidia_gpu_smi_found="false"
166+
nvidia_container_toolkit_found="false"
165167
huawei_npu_present="false"
166168
huawei_npu_smi_found="false"
167169
@@ -172,6 +174,9 @@ if command -v lspci >/dev/null 2>&1; then
172174
if command -v nvidia-smi >/dev/null 2>&1; then
173175
nvidia_gpu_smi_found="true"
174176
fi
177+
if command -v nvidia-ctk >/dev/null 2>&1; then
178+
nvidia_container_toolkit_found="true"
179+
fi
175180
fi
176181
if echo "$lspci_output" | grep -q "Processing accelerators: Huawei Technologies"; then
177182
huawei_npu_present="true"
@@ -188,6 +193,7 @@ echo "{\
188193
\"aria2\":$aria2_found,\
189194
\"nvidiaGpu\": $nvidia_gpu_present,\
190195
\"nvidiaSmi\": $nvidia_gpu_smi_found,\
196+
\"nvidiaCtk\": $nvidia_container_toolkit_found,\
191197
\"huaweiNpu\": $huawei_npu_present,\
192198
\"huaweiSmi\": $huawei_npu_smi_found\
193199
}"`,
@@ -205,6 +211,7 @@ echo "{\
205211
aria2: boolean
206212
nvidiaGpu: boolean
207213
nvidiaSmi: boolean
214+
nvidiaCtk: boolean
208215
huaweiNpu: boolean
209216
huaweiSmi: boolean
210217
}
@@ -213,7 +220,12 @@ echo "{\
213220
installDocker: { planned: !result.docker, completed: result.docker },
214221
installDependencies: { planned: !dependenciesInstalled, completed: dependenciesInstalled },
215222
updateSources: { planned: true, completed: false }, // always update sources
216-
...(result.nvidiaGpu ? { installNvidiaGpu: { planned: !result.nvidiaSmi, completed: result.nvidiaSmi } } : {}),
223+
...(result.nvidiaGpu
224+
? {
225+
installNvidiaGpu: { planned: !result.nvidiaSmi, completed: result.nvidiaSmi },
226+
installNvidiaCtk: { planned: !result.nvidiaCtk, completed: result.nvidiaCtk },
227+
}
228+
: {}),
217229
...(result.huaweiNpu ? { installHuaweiNpu: { planned: !result.huaweiSmi, completed: result.huaweiSmi } } : {}),
218230
}
219231
}
@@ -237,13 +249,16 @@ echo "{\
237249
this.beforeInstall()
238250
await this.updateSources()
239251
await this.installDependencies()
252+
await this.installDocker()
240253
if (this.installFlags.installNvidiaGpu) {
241254
await this.installNvidiaGpu()
242255
}
243256
if (this.installFlags.installHuaweiNpu) {
244257
await this.installHuaweiNpu()
245258
}
246-
await this.installDocker()
259+
if (this.installFlags.installNvidiaCtk) {
260+
await this.installNvidiaContainerToolkit()
261+
}
247262
await this.startServices()
248263
this.afterInstall()
249264
}
@@ -361,6 +376,18 @@ echo "{\
361376
})
362377
}
363378

379+
private async installNvidiaContainerToolkit() {
380+
if (!this.installFlags.installNvidiaCtk) return
381+
await this.execInstallScript({
382+
script: this.pm.installNvidiaContainerToolkit(),
383+
flag: this.installFlags.installNvidiaCtk,
384+
initLog: '安装 NVIDIA Container Toolkit',
385+
successLog: 'NVIDIA Container Toolkit 安装完成',
386+
errorLog: 'NVIDIA Container Toolkit 安装失败',
387+
errorMessage: 'NVIDIA Container Toolkit 安装失败,请检查网络连接或手动安装',
388+
})
389+
}
390+
364391
private async installHuaweiNpu() {
365392
if (!this.installFlags.installHuaweiNpu) return
366393
this.pushInfoLog('暂不支持华为 NPU 驱动自动安装,请手动安装后重试', { withNewLine: true })

0 commit comments

Comments
 (0)