全栈技术分享,API文档动静更新,技术点扼要易懂,疾速入门
有帮忙的话点个赞吧,感兴趣的关注加书签取得更多文档,不便随时查阅,有问题欢送留言探讨

概念

基于window零碎的linux子系统,也就是window中装了个linux,相似虚拟机,但比虚拟机轻量wsl能够装置多个散发,也就是多个linux零碎wsl: 子系统,也就是管理工具,相当于linux镜像Distro: 散发,也就是各个子系统软件实例,相当于镜像实例

装置

环境要求
零碎windows 11 22H2 25217.1010以上
驱动(可选)wslg须要显卡硬件反对GPU,反对的话装置对应版本驱动即可
用于 WSL 的 AMD GPU 驱动程序
用于 WSL 的英特尔 GPU 驱动程序
用于 WSL 的 NVIDIA GPU 驱动程序
虚拟化配置启用虚拟化监控程序平台和虚拟机平台
重启进入bios界面确认启用虚拟化性能
软件包1. wt: windows terminal(设置为默认程序)
2. wsl: window for linux preview 0.69以上
3. linux:Ubuntu-22.04.1 LTS
阐明
软件包可在微软商店下载win11 + wsl 0.69以上 反对systemd和wslg界面虚拟化配置门路:设置-利用-可选性能-更多window性能能够依照官网文档阐明装置,我是间接下载linux后间接关上就主动装置了随界面提醒装置好,第一次要批改明码:sudo passwd

官网装置文档

命令阐明

常用命令
wsl --versionWSL 版本: 0.67.6.0内核版本: 5.15.62.1WSLg 版本: 1.0.44MSRDC 版本: 1.2.3401Direct3D 版本: 1.606.4DXCore 版本: 10.0.25131.1002-220531-1700.rs-onecore-base2-hypWindows版本: 10.0.25206.1000wsl -l -vwsl --set-default-version 2wsl --shutdownwsl --export Ubuntu-22.04 D:\software\system\Ubuntu-22.04-1013.tarwsl --import Ubuntu-22.04-1013 D:\software\system\Ubuntu-22.04-1013 D:\software\system\Ubuntu-22.04-1013.tar
<font size="5">wsl</font>
作用管理子系统
格局wsl [ARG] [option]... COMMAND
示例wsl -l -v
ARG--exec, -e <COMMAND>不应用默认shell执行指定命令
--按原样传递其余命令行
option--cd <DIRECTORY>指定当前目录
-d|--distribution <Distro>运行指定子系统散发
-u|--user指定用户
wsl的参数--list --online查看能装置的散发
--install [-d <Distro>]装置指定散发,无指定即是默认散发
--set-default-version <version>指定wsl版本,个别设为2
--shutdown进行所有运行的散发
--update更新wsl内核版本
--status查看wsl状态
--rollback还原到wsl内核先前版本
Distro的参数--export <Distro> <FILE>导出散发到指定tar文件
--import <Distro> <装置门路> <导入门路> [options]导入散发到指定装置门路
option: --version 2 指定wsl版本
--list|-l [options] <version>列出散发信息
options
--all 所有
--running 运行中
-q 只显示名称
-v 详细信息
-o 显示可装置的散发列表
--set-edfault|-s <Distro>设置默认进入的散发
--set-version <Distro> <version>指定散发的wsl版本
--terminate|-t <Distro>终止散发
--unregister登记散发并删除根文件系统

wslg

概念

wsl的图形工具,也就是反对你在window上显示linux利用的界面wsl2 0.69以上版本 默认装置了wslg(比较稳定的wslg)

体验

apt install geditgedit ~/.bachrc

网络配置固定IP

1.敞开network主动生成

vim /etc/wsl.conf[network]generateResolvConf = false

2.批改DNS地址

vim /etc/resolv.confnameserver 8.8.8.8
重启后生效能够退出下面的.bashrc里vim ~/.bashrcecho "nameserver 192.168.60.1" > /etc/resolv.conf

3.固定IP脚本

留神替换为你的散发名应用形式:每次wsl shutdown都双击脚本进入
@echo onCHCP 65001:: 开始获取管理员权限setlocalset uac=~uac_permission_tmp_%random%md "%SystemRoot%\system32\%uac%" 2>nulif %errorlevel%==0 ( rd "%SystemRoot%\system32\%uac%" >nul 2>nul ) else (    echo set uac = CreateObject^("Shell.Application"^)>"%temp%\%uac%.vbs"    echo uac.ShellExecute "%~s0","","","runas",1 >>"%temp%\%uac%.vbs"    echo WScript.Quit >>"%temp%\%uac%.vbs"    "%temp%\%uac%.vbs" /f    del /f /q "%temp%\%uac%.vbs" & exit )endlocal:: 实现获取,上面能够开始写你本人的代码了echo 以后运行目录: %cd%\echo 批处理所在目录:%~dp0echo 切换回批处理所在目录: cd /d %%~dp0REM 先敞开虚构子系统wsl --shutdownREM 把这里了解为一个开机启动脚本就行wsl -d 【你的散发名】 -u root ip addr del $(ip addr show eth0 ^| grep 'inet\b' ^| awk '{print $2}' ^| head -n 1) dev eth0wsl -d 【你的散发名】 -u root ip addr add 192.168.60.2/24 broadcast 192.168.60.255 dev eth0wsl -d 【你的散发名】 -u root ip route add 0.0.0.0/0 via 192.168.60.1 dev eth0powershell -c "Get-NetAdapter -IncludeHidden -Name 'vEthernet (WSL)' | Get-NetIPAddress | Remove-NetIPAddress -Confirm:$False; New-NetIPAddress -IPAddress 192.168.60.1 -PrefixLength 24 -InterfaceAlias 'vEthernet (WSL)'; Get-NetNat | ? Name -Eq WSLNat | Remove-NetNat -Confirm:$False; New-NetNat -Name WSLNat -InternalIPInterfaceAddressPrefix 192.168.60.0/24;"REM 启动对应Linux零碎,我这里是应用windows terminalwt -p Ubuntu-22.04exit

4. 测试

ip route default via 192.168.60.1 dev eth0192.168.60.0/24 dev eth0 proto kernel scope link src 192.168.60.2网关:192.168.60.1子网掩码:192.168.60.0/24ip地址:192.168.60.2ping lu.com

5. 扩大

网上还有一种形式是制作exe执行文件,放入windows的service服务就可实现开机主动执行,无需手动点击脚本,但我没有尝试胜利,附上文档和链接要害API:HcnCreateNetworkHcnCreateEndpoint

exe形式教程
官网API

应用window的代理软件(v2ray)

1.敞开network主动生成

vim /etc/wsl.conf[network]generateResolvConf = false

2.批改DNS地址

vim /etc/resolv.confnameserver 8.8.8.8
重启后生效能够退出下面的.bashrc里vim ~/.bashrcecho "nameserver 8.8.8.8" > /etc/resolv.conf

3.配置端口转发

vim ~/.bashrc# add for proxy,端口看v2ray客户端最上面 局域网:[sock...]export hostip=$(ip route | grep default | awk '{print $3}')export hostport=10808alias proxy='    export HTTPS_PROXY="socks5://${hostip}:${hostport}";    export HTTP_PROXY="socks5://${hostip}:${hostport}";    export ALL_PROXY="socks5://${hostip}:${hostport}";    echo -e "Acquire::http::Proxy \"http://${hostip}:${hostport}\";" | sudo tee -a /etc/apt/apt.conf.d/proxy.conf > /dev/null;    echo -e "Acquire::https::Proxy \"http://${hostip}:${hostport}\";" | sudo tee -a /etc/apt/apt.conf.d/proxy.conf > /dev/null;'alias unproxy='    unset HTTPS_PROXY;    unset HTTP_PROXY;    unset ALL_PROXY;    sudo sed -i -e '/Acquire::http::Proxy/d' /etc/apt/apt.conf.d/proxy.conf;    sudo sed -i -e '/Acquire::https::Proxy/d' /etc/apt/apt.conf.d/proxy.conf;'

4. 测试

ping www.google.com