---
title: 使用HPCRunner一键构建镜像
description: "- 待构建镜像的节点已挂载配置YUM源。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpcindapp/prtg-osc/topic_0000002516910035.html
sourcePath: /source/zh/kunpenghpcs/hpcindapp/prtg-osc/topic_0000002516910035.html
indexId: 1768c5f4b72c70890954e16ee8990a7567ec39630a0772b36a99521da2760fdd69
---
# 使用HPCRunner一键构建镜像

#### 前置条件

- 待构建镜像的节点已挂载配置YUM源。
  YUM源挂载配置建议使用全量的ISO Everything包。

- 待构建镜像的节点需要服务器有外网权限。如无外网权限请先配置外网权限或外网代理。


#### 安装步骤

1. 使用PuTTY工具，以root用户登录节点。
2. 克隆仓库。如已通过手动下载了贾维斯智能助手（HPCRunner），则忽略该步骤，否则执行如下命令：
  git clone https://gitcode.com/openeuler/hpcrunner.git

  回显结果包含如下示例内容，表示HPCRunner克隆成功：

```
Cloning into 'hpcrunner'...
remote: Enumerating objects: 13018, done.
remote: Counting objects: 100% (171/171), done.
remote: Compressing objects: 100% (142/142), done.
remote: Total 13018 (delta 89), reused 57 (delta 23), pack-reused 12847 (from 1)
Receiving objects: 100% (13018/13018), 72.71 MiB | 2.57 MiB/s, done.
Resolving deltas: 100% (6150/6150), done.
```


3. 初始化HPCRunner。执行如下命令：
  cd hpcrunner

  source init.sh

  hpcrunner表示HPCRunner安装目录。可根据实际情况调整。

4. 安装go。执行如下命令：
  ./jarvis -install go/1.18 com

  若网络条件不佳或在线下载较慢，可提前将go软件的安装包提前下载至HPCRunner的downloads目录,以避免解压或编译安装失败。 go软件的下载地址为：https://go.dev/dl/go1.18.linux-arm64(https://go.dev/dl/go1.18.linux-arm64)

  回显结果包含如下示例内容，表示go安装成功：

```
SUCCESSFULLY EXECUTED AT 2025-10-13 09:51:31, CONGRATULATIONS!!!
```


5. 配置加载go环境变量。执行如下命令：
  module load ${JARVIS_ROOT}/software/modulefiles/go/1.18

  无回显结果表示正常。

6. 安装singularity。执行如下命令：
  ./jarvis -install singularity/3.9.6 any

  若网络条件不佳或在线下载较慢，可提前将singularity软件的安装包提前下载至HPCRunner的downloads目录,以避免解压或编译安装失败。 singularity软件的下载地址为：https://github.com/sylabs/singularity/releases/download/v3.9.6/singularity-ce-3.9.6.tar.gz(https://github.com/sylabs/singularity/releases/download/v3.9.6/singularity-ce-3.9.6.tar.gz)

  回显结果包含如下示例内容，表示singularity安装成功：

```
SUCCESSFULLY EXECUTED AT 2025-10-13 09:55:31, CONGRATULATIONS!!!
```


7. 配置加载singularity环境变量。执行如下命令：
  module load ${JARVIS_ROOT}/software/modulefiles/singularity/3.9.6

  无回显结果表示正常。

8. 使用singularity构建镜像。执行如下命令：
  singularity build NCL_6.6.2.sif container/ncl/6.6.2/data.NCL662-gcc.arm.cpu.config.def

  回显结果包含如下示例内容，表示镜像构建成功：

  构建完成之后生成的.sif文件保存到当前目录。

9. 运行测试生成的镜像。执行如下命令拷贝算例：
  singularity exec -B ${PWD} NCL_6.6.2.sif cp -r /hpcrunner/software/utils/ncl/6.6.2/gcc/lib/ncarg/nclex/gsun ./

  singularity exec -B ${PWD} NCL_6.6.2.sif cp -r /hpcrunner/software/utils/ncl/6.6.2/gcc/lib/ncarg/nclex/nug ./

10. 进入算例目录

```
cd nug
```


11. 创建测试脚本

```
vim test.sh
```

```
#!/bin/bash
wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/CNTASN_1m_200103_grid_T_curvilinear_grid.nc
wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/rectilinear_grid_2D.nc
wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/T2M_ERAINT_rectilinear_grid_2D.nc
wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/r2b4_amip.nc
wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/tas_mon_1961-1990_rectilinear_grid_2D.nc
wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/MITgcm_rectilinear_grid_3D.nc
wget http://www.ncl.ucar.edu/Images/NCLLogoWeb.jpg
wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/thetao_curvilinear_ocean.nc
wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/tripolar_grid_STORM.nc[d(2]
cat > ex01.f << EOF
C NCLFORTSTART
subroutine cquad (a, b, c, nq, x, quad)
real x(nq), quad(nq)
C NCLEND
C
C  Calculate quadratic polynomial values.
C
do 10 i=1,nq
quad(i) = a*x(i)**2 + b*x(i) + c
10 continue
return
end
C NCLFORTSTART
function arcln (numpnt, pointx, pointy)
dimension pointx(numpnt),pointy(numpnt)
C NCLEND
C
C  Calculate arc lengths.
C
if (numpnt .lt. 2) then
print *, 'arcln: number of points must be at least 2'
stop
endif
arcln = 0.
do 10 i=2,numpnt
pdist = sqrt((pointx(i)-pointx(i-1))**2 +
+                        (pointy(i)-pointy(i-1))**2)
arcln = arcln + pdist
10 continue
return
end
EOF
WRAPIT ex01.f
for file in *.ncl;do
if [ -e "$file" ];then
echo "============test $file=============="
ncl $file
fi
done
```


12. 执行测试脚本

```
singularity exec -B `pwd` ../NCL_6.6.2.sif bash ./test.sh
```


  测试回显：

  由于http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation(http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation)网站和http://www.gadm.org/country(http://www.gadm.org/country)网站已失效，所以需要该网站数据的部分算例无法测试。如NUG_regrid_unstructured_to_rectilinear_bilinear_wgts_ESMF.ncl和NUG_regrid_unstructured_to_rectilinear_bilinear_wgts_destgrid_ESMF.ncl

13. 执行以下命令进入另一个测试目录

```
cd ../gsun
```


14. 创建测试脚本

```
vim test.sh
```

```
cp $NCARG_ROOT/share/ncarg/data/asc/u.cocos ./
for file in gsun*n.ncl
do
ncl $file
done
```


15. 执行测试脚本

```
singularity exec -B `pwd` ../NCL_6.6.2.sif bash ./test.sh
```


  测试显示X11弹窗，点击画面关闭
