文章目录
1 准备工作
1.1 安装wsl
安装包下载指令如下,可以将以下指令写成bat并执行:
<!-- 下载 wsl 安装包 -->
curl https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi -O wsl_update_x64.msi
<!-- 安装 wsl 安装包 -->
msiexec .\wsl_update_x64.msi
<!-- 将wsl2设置为默认版本 -->
wsl --set-default-version 2
1.2 安装Ubuntu
以下安装可选任意一种
1.2.1 安装包安装
<!-- Ubuntu 安装包 -->
curl -L https://aka.ms/wslubuntu2004 -O Ubuntu.appx
<!-- 安装 Ubuntu -->
Add-AppxPackage .\Ubuntu.appx
1.2.2 Microsoft Store安装
打开Microsoft Store并在搜索栏搜索Ubuntu,选择以下任意一个版本安装
安装完成后,打开cmd,输入:wsl -l -v
显示如下,证明正确安装了wsl2版本的Ubuntu
1.2 下载安装Docker-desktop
点击进入Docker-desktop官网下载并安装
2 配置
以上三个安装包安装完毕后进入配置
2.1 Ubuntu配置
2.1.1 安装位置(可选)
默认情况下Ubuntu安装在C盘,会生成一些*.vhdx文件,这些文件会随着在操作系统内的一系列操作而扩大,且扩大后,无法缩小,建议安装在C盘以外的位置,安装可以采用以下安装方式:
参考章节1.2.1,在下载完安装包后,将*.appx改为*.zip,并解压,参考以下dos指令
Rename-Item .\Ubuntu.appx Ubuntu.zip
Expand-Archive .\Ubuntu.zip -Verbose
在解压后的文件夹内会有一个*.exe文件,这个文件即为系统入口,将整个文件夹放置在其他盘下,即可
2.1.2 登录配置
点击*.exe或者在cmd中输入:wsl
即可进入系统,在第一次进入系统时,需要设置登录账号密码,设置完成,即可,如下图
2.2 IP配置 (重要)
wsl系统在每次重启后都属于重新启动,此时windows会随机分配一个IP,若不将IP固定,那么无法利用ssh访问wsl的系统
进入Ubuntu系统内,输入:
sudo apt update
sudo apt remove openssh-server
sudo apt install openssh-server
将ssh服务重新安装后:
sudo vi /etc/ssh/sshd_config
# 将以下选项修改并去除注释:
Port 22 -> Port 2222
AddressFamily inet -> AddressFamily inet
ListenAddress 0.0.0.0 -> ListenAddress 0.0.0.0
LoginGraceTime 2m -> LoginGraceTime 120
PermitRootLogin no -> PermitRootLogin yes
PasswordAuthentication no -> PasswordAuthentication yes
# 保存修改并执行以下指令,使配置生效
sudo service ssh restart
输入ip addr show eth0
获取当前的IP信息,如下图:
记下两个信息172.27.150.141/20
和172.27.159.255
下面会用到
打开windows系统的 控制面板\网络和 Internet\网络连接,可以看到多出来一个vEthernet网卡,此网卡为wsl的虚拟网卡,查看IPV4属性,如下图:
记下当前IP,比如现在的IP为172.27.144.1
然后修改启动文件,可以是~/.bashrc
或者/etc/profile
vi /etc/profile
# 添加以下信息到文件结尾:
if [ "$(ip addr show eth0 | grep 'inet\b' | awk '{print $2}' | head -n 1)" != "172.27.150.141/20" ];
then
sudo ip addr del $(ip addr show eth0 | grep 'inet\b' | awk '{print $2}' | head -n 1) dev eth0
sudo ip addr add 172.27.150.141/20 broadcast 172.27.159.255 dev eth0
sudo ip route add 0.0.0.0/0 via 172.27.144.1 dev eth0
fi
将记下的三个信息,按上面的填进去,然后保存退出,执行source ${file}
(其中${file}
为修改的文件),使配置生效
执行ping baidu.com
看能否连接外网
确定能连接外网后,需要将wsl的端口映射到windows上才能进行利用ssh访问
新建一个bat文件,将以下内容写入:
set list=2222 10000
for %%i in (%list%) do (
echo %%i
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=%%i connectaddress= 172.27.150.141 connectport=%%i
netsh advfirewall firewall add rule name=WSL2 dir=in action=allow protocol=TCP localport=%%i
)
pause
其中list
变量是需要映射的端口
保存后,右键点击以管理员身份运行即可
完成以上设置后,再次在Ubuntu内执行ping baidu.com
看能否连接外网
2.3 nvidia配置
wsl内部调用的nvidia路径与正常安装的linux系统不一致,只需要建立一个软链接即可
sudo ln -s /usr/lib/wsl/lib/nvidia-smi /usr/bin/nvidia-smi
此时再输入nvidia-smi
就可以正常显示了
2.3 Docker 配置
打开安装好的docker desktop,打开settings,如下图,确认general设置用wsl引擎
点击docker engine将里面的设置改为以下json:
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"default-runtime": "nvidia",
"experimental": false,
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
设置以上json是为了支持nvidia-docker2
,其中nvidia-docker2
与docker
有什么区别可以自行搜索
点击resources->wsl integration,页面会显示已经安装过的linux发行版,将步骤3的开关打开,并点击右下角apply & restart,即可将docker服务安装到Ubuntu内
切换到Ubuntu下,输入docker ps
如果没问题就会出现以下显示:
至此,搭建结束。