【WSL】文档 [不断补充中...]

eveforest -
【WSL】文档 [不断补充中...]
全栈技术分享,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 --version

WSL 版本: 0.67.6.0
内核版本: 5.15.62.1
WSLg 版本: 1.0.44
MSRDC 版本: 1.2.3401
Direct3D 版本: 1.606.4
DXCore 版本: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows版本: 10.0.25206.1000

wsl -l -v
wsl --set-default-version 2
wsl --shutdown

wsl --export Ubuntu-22.04 D:\software\system\Ubuntu-22.04-1013.tar
wsl --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 -vARG--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 gedit

gedit ~/.bachrc
网络配置固定IP1.关闭network自动生成
vim /etc/wsl.conf

[network]
generateResolvConf = false
2.修改DNS地址
vim /etc/resolv.conf

nameserver 8.8.8.8
重启后失效可以加入上面的.bashrc里

vim ~/.bashrc

echo "nameserver 192.168.60.1" > /etc/resolv.conf
3.固定IP脚本
注意替换为你的分发名

使用方式:每次wsl shutdown都双击脚本进入
@echo on
CHCP 65001

:: 开始获取管理员权限
setlocal
set uac=~uac_permission_tmp_%random%
md "%SystemRoot%\system32\%uac%" 2>nul
if %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 批处理所在目录:%~dp0
echo 切换回批处理所在目录: cd /d %%~dp0

REM 先关闭虚拟子系统
wsl --shutdown
REM 把这里理解为一个开机启动脚本就行
wsl -d 【你的分发名】 -u root ip addr del $(ip addr show eth0 ^| grep 'inet\b' ^| awk '{print $2}' ^| head -n 1) dev eth0
wsl -d 【你的分发名】 -u root ip addr add 192.168.60.2/24 broadcast 192.168.60.255 dev eth0
wsl -d 【你的分发名】 -u root ip route add 0.0.0.0/0 via 192.168.60.1 dev eth0

powershell -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 terminal
wt -p Ubuntu-22.04

exit
4. 测试
ip route 

default via 192.168.60.1 dev eth0
192.168.60.0/24 dev eth0 proto kernel scope link src 192.168.60.2

网关:192.168.60.1
子网掩码:192.168.60.0/24
ip地址:192.168.60.2

ping lu.com
5. 扩展
网上还有一种方式是制作exe执行文件,放入windows的service服务就可实现开机自动执行,无需手动点击脚本,但我没有尝试成功,附上文档和链接
关键API:
HcnCreateNetwork
HcnCreateEndpoint

exe方式教程
官方API

使用window的代理软件(v2ray)1.关闭network自动生成
vim /etc/wsl.conf

[network]
generateResolvConf = false
2.修改DNS地址
vim /etc/resolv.conf

nameserver 8.8.8.8
重启后失效可以加入上面的.bashrc里

vim ~/.bashrc

echo "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=10808
alias 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
特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

Tags 标签

wsl2linuxwindows

扩展阅读

加个好友,技术交流

1628738909466805.jpg