这是本文档旧的修订版!
目录
PWstudio cpu 版 windows11_wsl2 安装指南
适用系统:window11
在开始之前,强烈建议先看一遍 PWstudio 安装前必看,建立一个整体概念。
采用 wslc 起 PWstudio cpu 容器
下面这部分是另一种通过 wslc(WSL 自带的容器工具)来启动 PWstudio cpu 容器的方式,跟上面第 2、3 步走的是不同的路线,二者选一种走完即可,不要两种都做。如果你已经按照上面第 2、3 步顺利完成安装,可以跳过下面这部分。
1. wsl 安装与更新
温馨提示: 通过以下命令均在 PowerShell 中执行
若是在本机(自己的电脑)进行安装:直接右击开始键,选择以管理员身份打开 PowerShell;或者在 “开始” 菜单搜索 PowerShell, 右键选择 “以管理员身份运行”,打开终端操作界面
若是在安有windows系统的服务器上进行安装:则需要先按照以下步骤连接到远程服务器上,具体操作步骤如下
(1)打开远程桌面连接工具
• 按下键盘上的 Win + R 组合键,打开“运行”对话框。
• 在弹出的对话框输入 mstsc,然后点击“确定”或按回车键。
(2)输入服务器信息
• 在弹出的“远程桌面连接”窗口中,找到 “计算机” 一栏。
• 输入目标服务器的 IP 地址:例如 192.168.97.23。
• 点击左下角的 “显示选项” ,展开更多设置。在 “用户名” 一栏输入 对应的用户名,例如 lxkt。
• 点击 “连接”。
(3)输入登录凭据
• 系统会弹出“Windows 安全中心”窗口,要求输入用户名的密码作为凭据。
• 在 “用户名” 字段,输入 lxkt(如果上一步已填,此处会自动显示)。
• 在 “密码” 字段,输入密码,例如 lxkt。
• 确认信息无误后,点击 “确定”。
(4)确认安全证书
• 如果是第一次连接此服务器,系统可能会提示“无法验证此远程计算机的身份,是否仍要连接”。
• 这是正常的安全提醒,检查 IP 地址无误后,点击 “是” 即可继续连接
连接成功后,即可登录到远程服务器的windows界面,再对远程服务器直接右击开始键,选择以管理员身份打开 PowerShell;或者在 “开始” 菜单搜索PowerShell, 右键选择 “以管理员身份运行”,打开终端操作界面。
1. 若系统没有wsl,需要先运行以下命令进行安装
wsl --install
2. 更新到 WSL 预发布版:运行以下命令
wsl --update --pre-release
3. 重启 WSL 服务: 更新完成后, 运行此命令让更改生效
wsl --shutdown
4. 验证 wslc 是否可用: 关闭并重新打开你的终端(PowerShell 或 Windows 终端)
wslc --version
如果看到类似版本号的输出(比如 2.9.3.0),说明可以继续下一步了。
2 宿主机安装 server.py 服务
安装说明:点击链接, 在 Windows 下安装 server.py 服务 跟着文档安装好证书服务, 再进行下一步。
3. 导入镜像
wslc pull ccr.ccs.tencentyun.com/lxkt/qflowcpu:latest
这一步是下载 PWstudio cpu 版镜像,体积较大,根据网速可能需要几分钟到十几分钟,请耐心等待。
注:若在拉取镜像时报错“由于未安装所需的特性,无法启动操作 错误代码:HCS_E_SERVICE_NOT_AVAILABLE”时,
这个错误 HCS_E_SERVICE_NOT_AVAILABLE 的核心原因是 WSL2 所需的虚拟化服务 (vmcompute) 未能正常运行。wslc 依赖于 WSL2 的虚拟化功能来创建和管理容器,因此当底层服务不可用时,wslc pull 命令就会失败。
解决方案:修改 WSL2 网络模式为镜像模式(Mirrored)
这会令 WSL2 与 Windows 共享同一网络栈,从而解决 TLS 问题。
(1)在文件资源管理器地址栏输入 %UserProfile%,进入用户目录。
(2)新建或编辑 .wslconfig 文件(注意文件名有英文点号)。
(3)在上述文件里粘贴以下内容:
ini [wsl2] networkingMode=mirrored dnsTunneling=true firewall=false
(4)保存文件,然后关闭所有 WSL 相关的终端和程序。
(5)在 PowerShell 中执行 wsl –shutdown 重启 WSL。
(6)重新打开终端,再次尝试 wslc pull ccr.ccs.tencentyun.com/Lxkt/qflowcpu:Latest。
如果成功,则问题解决。
4. 启动容器
在启动容器之前,需要先在宿主机的powershell 终端执行 ipconfig 查看对应 WSL 虚拟网卡的 ip(取以太网适配器 vEthernet (WSL (Hyper-V firewall))栏下的 IPv4 地址)。
wsl --install -d Ubuntu
以下起容器的第一行命令中的172.20.192.1是通过ipconfig 查到的 WSL 虚拟网卡的 ip
在 powershell 中:
wslc run -d --name qflowcpu -e SERVERIP=172.20.192.1 ` -v $env:TEMP\pwmat:/var/tmp/pwmat_host_secret:ro ` --ulimit memlock=-1:-1 --ulimit stack=-1:-1 --shm-size=128G ` -e SELINUX=disabled -p 80:80 -p 81:81 -p 2297:2297 -p 5010:5010 ` --hostname=mstation ccr.ccs.tencentyun.com/lxkt/qflowcpu:latest
在 cmd 中:
wslc run -d --name qflowcpu -e SERVERIP=172.20.192.1 ^ -v %TEMP%\pwmat:/var/tmp/pwmat_host_secret:ro ^ --ulimit memlock=-1:-1 --ulimit stack=-1:-1 --shm-size=128G ^ -e SELINUX=disabled -p 80:80 -p 81:81 -p 2297:2297 -p 5010:5010 ^ --hostname=mstation ccr.ccs.tencentyun.com/lxkt/qflowcpu:latest
注:在 powershell 或 cmd 下启动容器时,必须要把ip修改成 ipconfig 查看对应 WSL 虚拟网卡的 ip, 否则提交作业会报错。 修改指定 ip 启动容器的命令也可参考该页面的第二条
-e SERVERIP=172.20.192.1 `中的172.20.192.1需要改成通过ipconfig 查到的 WSL 虚拟网卡的 ip
或设置镜像网络
以上两段powershell 或 cmd 二选一,根据你习惯用的终端类型执行即可,不要两个都执行。若执行后没有报错,会输出一长串字符(容器 ID),说明容器已经启动。
windows系统下:
通过如下命令查看正在运行的容器:
wslc ps
通过如下命令查看所有容器(启动的 或 停止的):
wslc ps -a
执行后能看到一个表格,如果表格里有一行 NAMES 列显示 qflowcpu,STATUS 列显示 Up …(比如 “Up 5 minutes”),就说明容器正在正常运行。
启动一个已经存在、但当前处于停止状态的容器
wslc start qflowcpu
启动容器前,如有同名容器占用,需停止和删除旧容器:
wslc stop qflowcpu
删除同类型旧容器:
wslc rm qflowcpu
停止、删除之后,再重新执行上面的 wslc run 命令即可。
- 删除容器, 容器里的数据也会被删除❗
- 容器里的 qflow 工作流不能导出
5. 对容器登录、上传下载
- 通过 SSH 客户端登录、上传、下载推荐
| 地址 | 端口号 | 用户名 | 密码 |
|---|---|---|---|
| [宿主机ip] | 2297 | pwmat | PWmat2022 |
| [宿主机ip] | 2297 | root | PWmatSimplyBest |
上表 [宿主机ip] 替换成127.0.0.1,其它按表格填写即可,不需要修改。
以上安装,若是通过本机连接到远程服务器的windows版进行安装,这里需要在远程服务器上,用管理员的身份登录到powershell中,通过ssh 用户名@127.0.0.1 -p 2297直接登录到容器里(本机通过127.0.0.1是无法访问的)
注意:登录到容器后,使用容器在命令行提交作业时,可使用example01里的slurm.sh脚本文件进行作业提交,但是需要将脚本里的IP改成 ipconfig 查看对应 WSL 虚拟网卡的IP,即将脚本中最后一条提交作业的命令( mpirun -np $SLURM_NPROCS PWmat -host 172.20.192.1 50001 | tee output)中的IP(172.20.192.1)改成 WSL 虚拟网卡的 IP
6. qstudio、qflow 访问登录
从这一步开始,改为使用网页浏览器操作(推荐 Chrome 或 Edge),访问地址:http://[宿主机ip] 宿主ip就填写127.0.0.1
注意:如果是安装在远程服务器上,这步是需要在远程服务器的浏览器进行操作
| 账号 | 密码 |
|---|---|
| 15000000000 | PWmat2022 |
如果粘贴密码提示错误,可能是浏览器兼容性问题,手动输入密码即可。
若是通过本机连接到远程服务器安装的,想通过本机访问,可查看下文:
如果是在本机(自己的电脑)安装,以上访问方式和下面这种访问均可,如果是通过本机连接到远程服务器进行安装,只需要在远程服务器上进行访问,可以采用上面这种访问方式(不可以通过本机直接访问),但如果想通过本机直接访问访问,可以通过以下这种方式(通过真实宿主IP的方式进行访问),该方式可实现在远程服务器进行访问,也可以直接通过本机进行访问:
具体如下:
启动容器时,需要通过以下方式进行启动(与上述启动容器的的区别加了三段0.0.0.0):
wslc run -d --name qflowgpu -e SERVERIP=172.20.192.1 ` -v $env:TEMP\pwmat:/var/tmp/pwmat_host_secret:ro ` --ulimit memlock=-1:-1 --ulimit stack=-1:-1 --gpus all --shm-size=128G ` -e SELINUX=disabled -p 0.0.0.0:80:80 -p 0.0.0.0:81:81 -p 0.0.0.0:2297:2297 -p 5010:5010 ` --hostname=mstation ccr.ccs.tencentyun.com/lxkt/qflowgpu:latest
启动成功后,
访问容器时:可以通过本机powershell/本机Xshell或者MobaXterm/远程服务器的powershell/远程服务器的xshell等,进行访问登录,访问时,宿主IP可通过ipconfig命令获取到以太网适配器 Onboard LAN2下的IPv4地址,即为真实宿主IP(例如,192.168.97.23)。而端口,用户名和密码参考上文对容器访问的表格
访问qflow和qstudio时:采用真实宿主IP进行访问,具体方式,直接在本机的浏览器/远程服务器搜索 http://[宿主机ip](宿主IP:通过ipconfig命令获取到以太网适配器 Onboard LAN2下的IPv4地址)
