当前位置: 首页 > Linux

【WSL】文档【持续添加中...】

时间:2023-04-06 23:57:20 Linux

全栈技术分享,API文档动态更新,简单易懂的技术要点,如果快速入门有帮助,点个赞,感兴趣的加书签获取更多文档,这些都是方便随时参考。如果您有任何问题,请留言讨论。概念是基于window系统的linux子系统,即在window中安装了一个linux,类似于虚拟机,但比虚拟机更轻巧,wsl可以安装多个distribution,即多个linux系统wsl:Subsystem,即管理工具,相当于linuxMirrorDistro:Distribution,即各个子系统软件实例,相当于镜像实例安装环境需要系统有windows1122H225217.1010或以上驱动(可选)wslg需要显卡硬件支持GPU,如果支持,安装相应版本的驱动,用于WSLAMDGPU驱动IntelGPU驱动,用于WSLNVIDIAGPU驱动,用于WSL虚拟化配置启用虚拟化监控平台和虚拟机平台重启进入bios界面确认启用虚拟化功能软件包1.wt:windowsterminal(设为默认程序)2.wsl:windowforlinuxpreview0.69orabove3.linux:Ubuntu-22.04.1LTS指令包即可微软商城下载win11+wsl0.69以上支持systemd和wslg界面虚拟化配置路径:设置-应用-可选功能-更多窗口功能可根据官方文档安装。我直接下载了linux打开,自动安装了。按照界面提示进行安装。第一次需要修改密码:sudopasswd官方安装文档命令说明常用命令wsl--versionWSLversion:0.67.6.0Kernelversion:5.15.62.1WSLgversion:1.0.44MSRDCversion:1.2.3401Direct3Dversion:1.606.4DXCore版本:10.0.25131.1002-220531-1700.rs-onecore-base2-hypWindows版本:10.0.25206.1000wsl-l-vwsl--set-default-version2wsl--shutdownwsl--exportUbuntu-22.04D:\软件\系统\Ubuntu-22.04-1013.tarwsl--importUbuntu-22.04-1013D:\software\system\Ubuntu-22.04-1013D:\software\system\Ubuntu-22.04-1013.tarwsl功能管理子系统格式wsl[ARG][选项]...COMMAND示例wsl-l-vARG--exec,-e不使用默认shell执行指定的命令--按原样传递命令行的其余部分--cd指定当前目录-d|--distribution运行指定的子系统distribution-u|--user指定用户的参数wsl--list--online查看可以安装的distribution--install[-d]安装指定的发行版,不指定即默认发行版--set-default-version指定wsl版本,一般设置为2--shutdown停止所有正在运行的发行版--update更新wsl内核版本--status查看wsl状态--rollback恢复到wsl内核之前版本Distro的参数--export导出分发到指定的tar文件--import[options]importanddistributiontothespecifiedinstallationpathoption:--version2指定wsl版本--list|-l[options]列出分发信息options--allall--runningrunning-qshownameonly-vverbose-oshowlistofinstallabledistributions--set-edfault|-s设置默认进入的发行版--set-version指定发行版的wsl版本--terminate|-t终止分发--unregister注销分发并删除根文件系统wslg概念wsl的图形工具,支持你在窗口上显示linux应用wsl20.69及以上的界面默认安装了wslg(一个比较稳定的wslg)。体验aptinstallgeditgedit~/.bachrc网络配置固定IP1。关闭网络自动生成vim/etc/wsl.conf[network]generateResolvConf=false2。修改DNS地址vim/etc/resolv.confnameserver8.8.8.8可以在上面的.bashrc中加入重启后失败vim~/.bashrcecho"nameserver192.168.60.1">/etc/resolv.conf3.注意固定IP脚本要换成你的distribution名称使用方法:每次wsl关机,双击脚本输入@echoonCHCP65001::start获取管理员权限setlocalsetuac=~uac_permission_tmp_%random%md"%SystemRoot%\system32\%uac%"2>nulif%errorlevel%==0(rd"%SystemRoot%\system32\%uac%">nul2>nul)else(echosetuac=CreateObject^("Shell.Application"^)>"%temp%\%uac%.vbs"echouac.ShellExecute"%~s0","","","runas",1>>"%temp%\%uac%.vbs"echoWScript。退出>>"%temp%\%uac%.vbs""%temp%\%uac%.vbs"/fdel/f/q"%temp%\%uac%.vbs"&exit)endlocal::Complete获取之后,就可以在echocurrentoperation下面开始写自己的代码了行目录:%cd%\echo批处理目录:%~dp0echo切换回批处理目录:cd/d%%~dp0REM首先关闭虚拟子系统wsl--shutdownREM把这个理解为启动脚本wsl-d[yourdistributionname]-urootipaddrdel$(ipaddrshoweth0^|grep'inet\b'^|awk'{print$2}'^|head-n1)deveth0wsl-d[你的发行版名称]-urootipaddradd192.168.60.2/24broadcast192.168.60.255deveth0wsl-d[yourdistributionname]-urootiprouteadd0.0.0.0/0via192.168.60.1deveth0powershell-c"Get-NetAdapter-IncludeHidden-Name'vEthernet(WSL)'|Get-NetIPAddress|Remove-NetIPAddress-Confirm:$False;New-NetIPAddress-IPAddress192.168.60.1-PrefixLength24-InterfaceAlias'vEthernet(WSL)';Get-NetNat|?Name-EqWSLNat|Remove-NetNat-Confirm:$False;New-NetNat-NameWSLNat-InternalIPInterfaceAddressPrefix192.168.60.0/24;"REM启动对应Linux系统,我用的是windowsterminalwt-pUbuntu-22.04exit4。测试iproutedefaultvia192.168.60.1deveth0192.168.60.0/24deveth0protokernelscopelinksrc192.168.60.2gateway:192.168.60.1subnetmask:192.168.60.0/24ipaddress:192.168.60.2pinglu.com5.网上还有一种扩展的方法是创建一个exe执行文件,放到windows的service服务中,实现开机自动执行,不需要手动点击脚本,不过我没试成功,附上关键API文档及链接:HcnCreateNetworkHcnCreateEndpointexe教程官方API使用window代理软件(v2ray)1.关闭网络自动生成vim/etc/wsl.conf[network]generateResolvConf=false2.修改DNS地址vim/etc/resolv.confnameserver8.8.8.8重启后会失效你可以在上面添加vim~/.bashrc.bashrccho"nameserver8.8.8.8">/etc/resolv.conf3.配置端口转发vim~/.bashrc#add对于proxy,查看v2ray客户端局域网底部端口:[sock...]exporthostip=$(iproute|grepdefault|awk'{print$3}')exporthostport=10808aliasproxy='exportHTTPS_PROXY="socks5://${hostip}:${hostport}";导出HTTP_PROXY="socks5://${hostip}:${hostport}";exportALL_PROXY="socks5://${hostip}:${hostport}";echo-e"Acquire::http::Proxy\"http://${hostip}:${hostport}\";"|sudotee-a/etc/apt/apt.conf.d/proxy.conf>/dev/null;echo-e"Acquire::https::Proxy\"http://${hostip}:${hostport}\";";|sudotee-a/etc/apt/apt.conf.d/proxy.conf>/dev/null;'aliasunproxy='unsetHTTPS_PROXY;取消设置HTTP_PROXY;取消设置ALL_PROXY;sudosed-i-e'/Acquire::http::Proxy/d'/etc/apt/apt.conf.d/proxy.conf;sudosed-i-e'/Acquire::https::Proxy/d'/etc/apt/apt.conf.d/proxy.conf;'4.测试pingwww.google.com