WSL
安装
若要检查 Windows 版本及内部版本号,选择 Windows 徽标键 + R,然后键入“winver”,选择“确定”。更新到“设置”菜单中的最新 Windows 版本。
IF (Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11)
ELSE
旧版 WSL 的手动安装步骤(可以更改WSL系统的存放位置)
手动安装
手动安装的优点是避免Linux的镜像文件(
ext4.vhdx
)存放在C盘, 存放ext4.vhdx
的位置可以自定义.
以下指令需要在管理员下的 powershell 运行
1 |
|
卸载 & 禁用
在控制面板中禁用 Hyper-V
- 在“控制面板”中,打开“程序和功能”。
- 选择“启用或关闭 Windows 功能”。
- 展开 Hyper-V,展开 Hyper-V 平台,然后清除“Hyper-V 虚拟机监控程序”复选框。
在 PowerShell 中禁用 Hyper-V
打开提升权限的 PowerShell 窗口。
运行以下命令:
1
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor
Note
U盘挂载
1 |
|
映射wsl文件系统
1 |
|
通过 \\wsl$
访问 Linux 文件时将使用 WSL 分发版的默认用户。 因此,任何访问 Linux 文件的 Windows 应用都具有与默认用户相同的权限。
wsl关机
1 |
|
wsl 配置文件
1 |
|
打开powershell输入~
切换目录
code .wslconfig
编辑配置
1 |
|
WSL 配置代理
获取主机 IP 主机 IP 保存在 /etc/resolv.conf 中
1 |
|
1 |
|
- 在wsl尝试用
export all_proxy
socks5做代理感觉总是调不通, 换成http就好了 不知道是为啥
wsl.conf .wslconfig配置文件
参考文档:
wsl.conf
- 以
/etc
unix 文件的形式存储在分发目录中。- 用于按分布配置设置。 此文件中配置的设置将仅应用于包含存储此文件的目录的特定 Linux 分发版。
- 可用于版本、WSL 1 或 WSL 2 运行的分发版。
- 若要访问已安装的发行版的
/etc
目录,请使用发行版的命令行和cd /
访问根目录,然后使用ls
列出文件或使用explorer.exe .
在 Windows 文件资源管理器中查看。 目录路径应如下所示:/etc/wsl.conf
.wslconfig
- 存储在目录中
%UserProfile%
。- 用于跨作为 WSL 2 版本运行的所有已安装 Linux 分发版全局配置设置。
- 只能用于 WSL 2 运行的分发版。 作为 WSL 1 运行的分发版不会受到此配置的影响,因为它们未作为虚拟机运行。
- 要访问
%UserProfile%
目录,请在 PowerShell 中使用cd ~
访问主目录(通常是用户配置文件C:\Users\<UserName>
),或者可以打开 Windows 文件资源管理器并在地址栏中输入%UserProfile%
。 目录路径应如下所示:C:\Users\<UserName>\.wslconfig
wsl.conf 的配置 (unix )
wsl.conf 文件支持四个部分:automount
、network
、interop
、user
、[boot]
。
配置文件示例
1 |
|
自动装载设置 automount
节标签:[automount]
key | 值 | default | 说明 |
---|---|---|---|
enabled | boolean | 是 | true 导致固定驱动器(即 C:/ 或 D:/ )自动装载到 DrvFs 中的 /mnt 下。 false 表示驱动器不会自动装载,但你仍可以手动或通过 fstab 装载驱动器。 |
mountFsTab | boolean | 是 | true 设置启动 WSL 时要处理的 /etc/fstab 。 /etc/fstab 是可在其中声明其他文件系统的文件,类似于 SMB 共享。 因此,在启动时,可以在 WSL 中自动装载这些文件系统。 |
root | string | /mnt/ | 设置固定驱动器要自动装载到的目录。 默认情况下,此设置设置为 /mnt/ ,因此 Windows 文件系统 C 驱动器已装载到 /mnt/c/ 。 如果更改为/mnt/``/windir/ ,应会看到已装载到/windir/c 的固定 C 驱动器。 |
选项 | 逗号分隔的值列表,例如 uid、gid 等,请参阅下面的自动装载选项 | 空字符串 | 下面列出了自动装载选项值,并追加到默认 DrvFs 装载选项字符串。 只能指定特定于 DrvFs 的选项。 |
网络设置 network
节标签:[network]
key | 值 | default | 说明 |
---|---|---|---|
generateHosts | boolean | true | true 将 WSL 设置为生成 /etc/hosts 。 hosts 文件包含主机名对应的 IP 地址的静态映射。 |
generateResolvConf | boolean | true | true 将 WSL 设置为生成 /etc/resolv.conf 。 resolv.conf 包含能够将给定主机名解析为其 IP 地址的 DNS 列表。 |
hostname | string | Windows 主机名 | 设置要用于 WSL 分发的主机名。 |
互操作设置 interop
节标签:[interop]
这些选项在预览体验成员内部版本 17713 和更高版本中可用。
key | 值 | default | 说明 |
---|---|---|---|
enabled | boolean | true | 设置此键可确定 WSL 是否支持启动 Windows 进程。 |
appendWindowsPath | boolean | true | 设置此键可确定 WSL 是否会将 Windows 路径元素添加到 $PATH 环境变量。 |
用户设置 user
节标签:[user]
这些选项在版本 18980 及更高版本中可用。
key | 值 | default | 说明 |
---|---|---|---|
default | 字符串 | 首次运行时创建的初始用户名 | 设置此键指定在首次启动 WSL 会话时以哪个用户身份运行。 |
启动设置 boot
启动设置仅适用于 Windows 11 和 Server 2022。
节标签:[boot]
key | 值 | default | 说明 |
---|---|---|---|
命令 | string | “” | 你希望在 WSL 实例启动时运行的命令字符串。 此命令以根用户身份运行。 例如: service docker start |
.wslconfig 的配置 (windows)
全局
.wslconfig
配置选项仅适用于在 Windows 内部版本 19041 及更高版本中作为 WSL 2 运行的分发版。 请记住,可能需要运行wsl --shutdown
来关闭 WSL 2 VM,然后重启 WSL 实例以使这些更改生效。
配置文件示例
1 |
|
节标签:[wsl2]
key | 值 | default | 说明 |
---|---|---|---|
内核 (kernel) | 字符串 | Microsoft 内置内核提供的收件箱 | 自定义 Linux 内核的绝对 Windows 路径。 |
内存 | 大小 | Windows 上总内存的 50% 或 8GB,以较小者为准;在 20175 之前的版本上:Windows 上总内存的 80% | 要分配给 WSL 2 VM 的内存量。 |
处理器 | 数字 | Windows 上相同数量的处理器 | 要分配给 WSL 2 VM 的处理器数量。 |
localhostForwarding | boolean | true | 一个布尔值,用于指定绑定到 WSL 2 VM 中的通配符或 localhost 的端口是否应可通过 localhost:port 从主机连接。 |
kernelCommandLine | 字符串 | 空白 | 其他内核命令行参数。 |
swap | 大小 | Windows 上 25% 的内存大小四舍五入到最接近的 GB | 要向 WSL 2 VM 添加的交换空间量,0 表示无交换文件。 交换存储是基于磁盘的 RAM,当内存需求超过硬件设备的限制时使用。 |
swapFile | 字符串 | %USERPROFILE%\AppData\Local\Temp\swap.vhdx | 交换虚拟硬盘的绝对 Windows 路径。 |
pageReporting | boolean | true | 默认设置 true 使 Windows 能够回收分配给 WSL 2 虚拟机的未使用的内存。 |
guiApplications | boolean* | true | 一个布尔值,用于在 WSL 中打开或关闭对 GUI 应用程序 (WSLg) 的支持。 仅适用于Windows 11。 |
debugConsole | boolean* | false | 一个布尔值,用于在 WSL 2 发行版实例启动时打开显示 dmesg 内容的输出控制台窗口。 仅适用于Windows 11。 |
nestedVirtualization | boolean* | true | 用于打开或关闭嵌套虚拟化的布尔值,使其他嵌套 VM 能够在 WSL 2 中运行。 仅适用于Windows 11。 |
vmIdleTimeout | number* | 60000 | VM 在关闭之前处于空闲状态的毫秒数。 仅适用于Windows 11。 |
具有 path
值的条目必须是带有转义反斜杠的 Windows 路径,例如:C:\\Temp\\myCustomKernel
具有 size
值的条目必须是后跟单位的大小,例如 8GB
或 512MB
。
值类型后具有 * 的条目仅在Windows 11可用。
WSL导出与迁移
我们可以选择手动安装wsl, 这样我们可以避免将wsl安装在c盘, 手动安装的时候, 将下载下来的
<distro>.appx
文件直接解压, 例如将Ubuntu_1604.2019.523.0_x64.appx
解压, 解压出来的文件夹内就包含了ubuntu1604.exe
, 运行他就可以启动wsl, 这样可以避免wsl的迁移.
查看WSL分发版本
在Windows PowerShell
中输入如下命令, 查看当前子系统的状态和版本信息.
1 |
|
结果如下:
1 |
|
导出分发版为tar文件
1 |
|
1
2
3
4
5
6
7--export <发行版> <FileName> [选项]
将发行版导出为 tar 文件。
对于标准输出,文件名可以为 -。
选项:
--vhd
指定该发行版应导出为 .vhdx 文件。
注销当前分发版
1 |
|
重新导入并安装WSL
1 |
|
1
2
3
4
5
6
7
8
9
10
11--import <发行版> <InstallLocation> <FileName> [选项]
将指定的 tar 文件作为新发行版导入。
对于标准输入,文件名可以为 -。
选项:
--version <版本>
指定新发行版要使用的版本。
--vhd
指定提供的文件是 .vhdx 文件,而不是 tar 文件。
此操作会在指定的安装位置复制 .vhdx 文件。
设置默认登陆用户为安装时用户名
(如果显示的子系统的
NAME
是带有版本号的话需要注意的是这里第二个参数就要带上参数, 例如Ubuntu-20.04
)
1 |
|
删除tar文件(可选)
1 |
|
语言和缺字体
wsl是没有中文字体的,所以在安装使用Firefox等软件时,无法正常显示中文字体,所以我们可以通过使用Windows自带字体的方式,来实现快速安装中文字体(以Ubuntu为例)。
1 |
|
我们只需要将Windows下的字体目录链接到WSL目录下即可然后再刷新一下。
1 |
|
这样就可以正常显示中文字体了。