文章目录
一、什么是wsl
官网:https://learn.microsoft.com/zh-cn/windows/wsl/about
适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 的一项功能,可用于在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双引导。 WSL 旨在为希望同时使用 Windows 和 Linux 的开发人员提供无缝高效的体验。
二、安装wsl
官方文档:
https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-1---enable-the-windows-subsystem-for-linux
需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。
以管理员身份打开 PowerShell(“开始”菜单 >“PowerShell” >单击右键 >“以管理员身份运行”),然后输入以下命令
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
检查运行 WSL 2 的要求
- 若要更新到 WSL 2,需要运行 Windows 10。
对于 x64 系统:版本 1903 或更高版本,内部版本为 18362.1049 或更高版本。
对于 ARM64 系统:版本 2004 或更高版本,内部版本为 19041 或更高版本或 Windows 11。
低于 18362 的版本不支持 WSL 2。
若要检查 Windows 版本及内部版本号,选择 Windows 徽标键 + R,然后键入“winver”,选择“确定”。 更新到“设置”菜单中的最新 Windows 版本。
将 WSL 2 设置为默认版本
打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本:
wsl --set-default-version 2
WSL 2 仅在 Windows 11 或 Windows 10 版本 1903、内部版本 18362 或更高版本中可用。 通过按 Windows 徽标键 + R,检查你的 Windows 版本,然后键入 winver,选择“确定”。 (或者在 Windows 命令提示符下输入 ver 命令)。 你可能需要更新到最新的 Windows 版本。 低于 14393 的版本完全不支持 WSL。
官方文档:https://learn.microsoft.com/zh-cn/windows/wsl/compare-versions?source=recommendations
查看并安装linux
运行 wsl --list --online
以查看可用发行版列表并运行 wsl --install -d <DistroName>
以安装一个发行版。
然后通过 wsl --install -d Ubuntu-20.04
选择 Ubuntu 20.04 进行安装。
三、WSL2的使用
如何查看linux文件
Windows系统下,在我的电脑中可以找到Linux子系统的文件夹,可以直接进行访问,并与Windows系统下的文件进行相互操作。
wsl如何使用代理:
方法1:设置linux代理
由于WSL采用的是NAT模式,不能直接与本机localhost共享代理端口。
以往采取的方式就是设置http_proxy和https_proxy.
但,不方便的地方在于每次重启wsl后,由于IP会变化,很有可能需要重新进行配置。
也有办法,可以通过读取/etc/resolve.conf,提取其中的nameserver,自动提取IP,这样就可以自动化配置了。
有两个关键步骤:
- WSL2 中配置的代理要指向 Windows 的 IP;
- Windows 上的代理客户端需要允许来自本地局域网的请求;
由于 Linux 子系统也是通过 Windows 访问网络,所以 Linux 子系统中的网关指向的是 Windows,DNS 服务器指向的也是 Windows,基于这两个特性,我们可以将 Windows 的 IP 读取出来。
使用
cat /etc/resolv.conf
查看DNS
再输入
export ALL_PROXY="http://{DNS中的地址}:7890"
就可以使用了, 7890 是 Windows 上运行的代理客户端的端口,记得要在 Windows 代理客户端上配置允许本地局域网请求。
一键配置脚本
将上面的过程写入一个 bash 脚本,可以轻松的实现一键配置代理:
#!/bin/bash
host_ip=$(cat /etc/resolv.conf |grep "nameserver" |cut -f 2 -d " ")
export ALL_PROXY="http://$host_ip:7890"
WSL 每次启动的时候都会有不同的 IP 地址,所以并不能直接用静态的方式来设置代理。WSL2 会把 IP 写在 /etc/resolv.conf中,因此可以用 cat /etc/resolv.conf | grep nameserver | awk ‘{ print $2 }’ 这条指令获得宿主机 IP 。
WSL2 自己的 IP 可以用 hostname -I | awk '{print $1}'
得到。**
方法2:通过 DNS 隧道来配置 WSL 的网络
官方解决方案:networking-considerations-with-dns-tunneling
wsl --shutdown
修改文件: C:\Users{用户名}.wslconfig
如果没有.wslconfig
文件,则新建 .wslconfig
文件
[wsl2]
memory=8GB
processors=8
[experimental]
autoMemoryReclaim=gradual
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
sparseVhd=true
如何将 WSL 接入局域网并与宿主机同网段
Windows Subsystem for Linux (WSL) 是一个非常实用的工具,它允许在 Windows 系统上原生运行 Linux 环境。默认情况下,WSL 使用 NAT 网络模式,与宿主机处于不同的网段。
TODO
使用VScode连接到WSL2
VS Code 利用 Remote-WSL 扩展使你能够直接从 VS Code 使用 WSL2 作为实时开发环境
四、常用总结
wsl安装包实际安装位置安装都D盘
方法1:新安装方式
wsl默认安装在c盘,随着系统的使用,会占用我们C盘的空间。
wsl的硬盘映像文件名为 ext4.vhdx, 以 Ubuntu20.04 为例,路径默认在C:\Users\<你的用户名>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04LTS_79rhkp1fndgsc\LOCALS~1\ext4.vhdx
先打开cmd,输入wsl --list
,查看你安装的版本,然后输入wsl --unregister <要卸载的发行版>
,之后删掉目录下的那个子系统就可以了
第一步:
从官网页面可以下载想要安装的 Linux 发行版:下载发行版
第二步:
以我下载的 Ubuntu 22.04 LTS 为例,把下载后得到的 .appx 文件放到 D 盘目录下,然后修改后缀名为 zip ,即 Ubuntu2204-220620.appx -> Ubuntu2204-220620.zip
然后把它解压,得到一个文件夹,如果文件夹中有 ubuntu****.exe ,那就可以了;但是 22.04 版本解压后应该是有若干个 appx ,这时候根据自己的平台把 Ubuntu_2204.0.10.0_x64.appx 或 Ubuntu_2204.0.10.0_ARM64.appx 修改后缀为 zip,然后再一次解压,这一次就可以得到 .exe 了。
第三步:
双击 ubuntu2204.exe 开始安装,如果出现错误,那么大概率是没有更新 WSL2 的内核,回到前面一节 “设置默认安装 WSL2” 更新内核。
方法2:
How can I move my WSL distribution to a different drive or location?
官方链接: https://learn.microsoft.com/en-us/windows/wsl/faq
您可以使用 PowerShell 执行此操作。以下是每个步骤的必要命令和说明。
# Create a folder where you would like to store your distro
New-Item -ItemType Directory -Path <Install location, e.g: D:\WSLDistros\Ubuntu>
# Export your distro to that folder as a VHD
wsl --export --vhd <Distroname, e.g: Ubuntu> <Install Location with filename, e.g: D:\WSLDistros\Ubuntu\ext4.vhdx>
# Unregister your old distro
# Please note this will erase your existing distro's file contents, please ensure the backup file you created in the 2nd step is present at the location and that the export operation completed successfully.
# Please exercise caution when using this command, as it is destructive and could cause data loss.
wsl --unregister <Distroname>
# Import your VHD backup
wsl --import-in-place <Distroname> <Install Location with filename>
# Set your default user account
You can set up your default user account by [setting a wsl.conf value of user.default=<name>](/windows/wsl/wsl-config#user-settings)
vscode远程wsl时默认用root登录
-
以管理员身份启动powershell
-
先查看电脑上的wsl版本:
输入下面命令
wsl -l
- 然后根据对应的版本的wsl系统设置默认用户(我这里是Ubuntu 所以就是Ubuntu.exe)
Ubuntu.exe config --default-user root