====== PWstudio cpu 版 windows11_wsl2 安装指南 ====== 适用系统:window11\\ 在开始之前,强烈建议先看一遍 [[pwstudio:readme|PWstudio 安装前必看]],建立一个整体概念。 ---- 采用 wslc 起 PWstudio cpu 容器 下面这部分是通过 wslc(WSL 自带的容器工具)来启动 PWstudio cpu 容器的方式。 ===== 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 服务 ===== 安装说明:点击链接, [[pwstudio:serverwin|在 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 地址)。 注意:若在宿主机执行完ipconfig命令之后,若没有查到WSL 虚拟网卡的 ip,则需要安装ubuntu,可以通过以下命令进行安装 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 启动容器的命令也可参考该页面的[[pwstudio:qa:q106|第二条]] -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 | 如果粘贴密码提示错误,可能是浏览器兼容性问题,手动输入密码即可。 ~~DISCUSSION:off~~ ---- **若是通过本机连接到远程服务器安装的,想通过本机访问,可查看下文:** 如果是在本机(自己的电脑)安装,以上访问方式和下面这种访问均可,如果是通过本机连接到远程服务器进行安装,只需要在远程服务器上进行访问,可以采用上面这种访问方式(不可以通过本机直接访问),但如果想通过本机直接访问访问,可以通过以下这种方式(通过真实宿主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地址) ~~DISCUSSION:off~~