WSL2安装Ubuntu


wsl --list --online 查看所有可用镜像
wsl -l -v 查看当前安装的版本
wsl --install -d Ubuntu-24.04 安装指定镜像
wsl --list --verbose 检查是否在运行
wsl --status 查看日志
wsl --version 查看各种组件版本
wsl --shutdown 停止所有子系统
wsl --set-default Ubuntu-24.04 设置默认子系统
wsl --update 确保子系统是最新,WSLg需要,能运行带gui的程序
wsl.exe --install --no-distribution 如果启动出错可以通过这个命令安装wsl
systemctl is-system-running 确保系统服务能工作

安装启动如果提示类似错误:

ruby
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x800701bc
Error: 0x800701bc WSL 2 ????????????? https://aka.ms/wsl2kernel
Press any key to continue...

安装wsl2内核更新包:
https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package

然后将wsl2设置为默认
wsl --set-default-version 2

访问windows本地磁盘
cd /mnt/d
cd /mnt/d/tongbu/xiaoyi 打开本机D盘项目

警告

在ubuntu中创建项目目录后一定要将文件夹权限修改为可写,不然无法写入
sudo chown -R $USER:$USER . 将当前目录权限授权

ubuntu访问windows端口服务

在WSL2的操作系统中,要访问虚拟的连接的本机地址,在宿主windows系统中使用ipconfig 查看WSL的ipv4地址,如果是代理服务,需要开启允许局域网连接,并重启代理,以及windows中防火墙允许代理软件通过网络
假设ip是172.29.0.1
设置代理
export all_proxy=http://172.29.0.1:10809
或者
export http_proxy=http://172.29.0.1:10809
export https_proxy=http://172.29.0.1:10809
让配置生效
source ~/.bashrc
curl -v https://www.google.com 验证访问

该命令只对当前shell生效,关闭后不起作用

取消代理
unset all_proxy
unset http_proxy
unset https_proxy

如果不能安装,可使用完整wsl安装包

https://github.com/microsoft/WSL/releases

局域网访问wsl2服务,端口转发

查wsl2ip地址
$wslIp = (wsl hostname -I).Split(" ",[System.StringSplitOptions]::RemoveEmptyEntries)[0]
$wslIp
或者
ip a
wsl中执行,查看ip地址,假设ip地址是172.27.180.20,服务运行的端口是8000
管理员运行powershell:
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=这里写上面查到的IP connectport=22

取消转发
netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=22

分一个账号并使用ssh管理

bash
sudo apt update && sudo apt install -y openssh-server    # 安装 OpenSSH 服务器
sudo service ssh start || sudo systemctl start ssh       # 启动 sshd(启用 systemd 时可用 systemctl)               

sudo ss -tlnp | grep :22 确认22端口在监听
sudo systemctl enable ssh 让ssh服务开机启动

sudo adduser <用户名> 设置账号,根据提示设置密码
其他全称,房间号直接回车跳过,最后y确认

sudo usermod -aG sudo <用户名> 将用户加入sudo组,允许sudo
groups <用户名> 验证是否在sudo组

开启密码登录
sudo nano /etc/ssh/sshd_config 在ubuntu中,因为本机无权限编辑

ini
# 确保至少包含/修改为以下内容:
Port 22                                                  # 使用 22 端口
PermitRootLogin no                                       # 禁止 root 登录,降低风险
PasswordAuthentication yes                               # 允许密码认证
KbdInteractiveAuthentication no                          # 关闭交互式质询(老配置也可能叫 ChallengeResponseAuthentication no)
UsePAM yes                                               # 允许 PAM,配合密码登录
AllowUsers gto drai                                  # (可选)只允许gto和drai用户通过 SSH 登录

Ctrl + O保存,然后按回车确认文件名
Ctrl + X 退出

重启ssh服务
sudo service ssh restart || sudo systemctl restart ssh

此时本机已经可以通过ssh登录了

设置wsl2允许使用的内存和cpu核心数

宿主机中C:\Users<用户名>添加一个.wslconfig文件:

ini
[wsl2]
processors=116 # WSL2能使用的最大cpu核心单元(按线程算)
memory=192GB # WSL2能使用的最大内存
swap=16GB # 内存交换,如果不是服务器,建议8G
localhostForwarding=true