前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WSL2中的高级设置配置wsl.conf 和 .wslconfig

WSL2中的高级设置配置wsl.conf 和 .wslconfig

作者头像
小麦苗DBA宝典
发布2022-11-07 19:07:50
12.9K1
发布2022-11-07 19:07:50
举报

wsl.conf 和 .wslconfig 文件用于基于每个分发wsl.conf () 和全局跨所有 WSL 2 分发.wslconfig版 () 配置高级设置选项。本指南将介绍每个设置选项(何时使用每种文件类型、存储文件的位置、示例设置文件和提示)。

wsl.conf 和 .wslconfig 有何区别?

可以使用以下两种方式为每次启动 WSL 时自动应用的已安装 Linux 分发版配置设置:

  • .wslconfig ,用于在 WSL 2 上运行的所有已安装分发版 全局 配置设置。
  • wsl.conf 为 WSL 1 或 WSL 2 上运行的 Linux 发行版配置 每个分发 版的设置。

这两种文件类型都用于配置 WSL 设置,但存储文件的位置、配置的范围以及运行分发的 WSL 版本都会影响要选择的文件类型。

正在运行的 WSL 版本会影响配置设置。WSL 2 作为轻型虚拟机 (VM) 运行,因此使用虚拟化设置来控制使用 (使用的内存量或处理器量,如果使用 Hyper-V 或 VirtualBox) ,则可能很熟悉这些内存或处理器量。

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 将检测这些文件是否存在、读取内容,并在每次启动 WSL 时自动应用配置设置。如果文件丢失或格式不正确, (标记格式不正确) ,则 WSL 将继续按正常方式启动,而无需应用配置设置。

检查正在运行的 WSL 版本。

备注

使用 wsl.conf 文件调整每个发行版设置的功能仅适用于 Windows 版本 17093 及更高版本。

第 8 秒的规则

必须等到运行 Linux 分发版的子系统完全停止运行并重启,才能显示配置设置更新。关闭分发外壳的所有实例后,这通常需要大约 8 秒。

如果启动分发版 (ie。Ubuntu) ,修改配置文件,关闭分发版,然后重新启动它。你可能假设配置更改已立即生效。但当前情况并非如此,因为子系统可能仍在运行。在重新启动之前,必须等待子系统停止,以便为获取更改提供足够的时间。可以通过使用 PowerShell 和以下命令来检查关闭 Linux 发行版 (shell) 后其是否仍在运行:wsl --list --running。如果未运行分发版,将收到响应:“没有正在运行的分发版。现在可以重启分发版,查看应用的配置更新。

该命令 wsl --shutdown 是重启 WSL 2 分发版的快速路径,但它将关闭所有正在运行的分发版,因此请明智地使用。

wsl.conf 的配置设置

wsl.conf 文件基于每个分发配置设置。(有关 WSL 2 分发版的全局配置,请参阅 .wslconfig) 。

wsl.conf 文件支持四个部分:automountnetworkinterop``user(在.ini文件约定之后建模,密钥将在节下声明,如 .gitconfig files.) 有关存储 wsl.conf 文件的位置的信息,请参阅 wsl.conf 。

systemd 支持

默认情况下,许多 Linux 分发版运行“systemd” (,包括 Ubuntu) 和 WSL 最近添加了对此系统/服务管理器的支持,以便 WSL 更类似于在裸机计算机上使用你喜欢的 Linux 分发版。需要版本 0.67.6+ 的 WSL 才能启用系统化。使用命令 wsl --version检查 WSL 版本。如果需要更新,可以在 Microsoft Store 中获取最新版本的 WSL。在 博客公告中了解详细信息。

若要启用 systemd,请使用sudo管理员权限在文本编辑器中打开文件wsl.conf,并将以下行添加到/etc/wsl.conf

Bash复制

代码语言:javascript
复制
[boot]
systemd=true

然后,需要使用 PowerShell 关闭 WSL 分发 wsl.exe --shutdown 版来重启 WSL 实例。分发重启后,系统应运行。可以使用以下命令进行确认:systemctl list-unit-files --type=service这将显示服务的状态。

自动装载设置

节标签:[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 的选项。

自动装载选项作为所有自动装载驱动器的装载选项应用。若要仅更改特定驱动器的选项,请改用 /etc/fstab 该文件。通常由装载二进制文件分析成标志的选项不受支持。如果要显式指定这些选项,则必须包含要在其中 /etc/fstab执行此操作的每个驱动器。

自动装载选项

为 Windows 驱动器 (DrvFs) 设置不同的装载选项可以控制为 Windows 文件计算文件权限的方式。提供了以下选项:

密钥

说明

默认

uid

用于所有文件的所有者的用户 ID

首次安装时 WSL 发行版的默认用户 ID (默认为 1000)

gid

用于所有文件的所有者的组 ID

首次安装时 WSL 发行版的默认组 ID (默认为 1000)

umask

要对所有文件和目录排除的权限的八进制掩码

000

fmask

要对所有文件排除的权限的八进制掩码

000

dmask

要对所有目录排除的权限的八进制掩码

000

metadata

是否将元数据添加到 Windows 文件以支持 Linux 系统权限

disabled

case

确定被视为区分大小写的目录以及使用 WSL 创建的新目录是否将设置标志。有关选项的详细说明,请参阅区分大小写。选项包括 off、 dir或 force。

off

默认情况下,WSL 会将 uid 和 gid 设置为默认用户的值。例如,在 Ubuntu 中,默认用户为 uid=1000,gid=1000。如果使用此值指定不同的 gid 或 uid 选项,将覆盖默认用户值。否则,将始终追加默认值。

(umask) 设置新创建文件的权限的用户文件创建模式掩码。默认值为 022,只能写入数据,但任何人都可以读取数据。可以更改值以反映不同的权限设置。例如, umask=077 更改完全私有的权限,其他用户无法读取或写入数据。若要进一步指定权限,也可以使用 fmask (文件) 和 dmask (目录) 。

备注

权限掩码在应用到文件或目录之前通过一个逻辑或操作进行设置。

什么是 DrvFs?

DrvFs 是 WSL 的文件系统插件,旨在支持 WSL 与 Windows 文件系统之间的互操作。DrvFs 允许 WSL 在 /mnt 下装载支持文件系统的驱动器,例如 /mnt/c、/mnt/d 等。有关在装载 Windows 或 Linux 驱动器或目录时指定默认区分大小写行为的详细信息,请参阅 区分大小写 页面。

网络设置

节标签:[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]

这些选项在预览体验成员内部版本 17713 和更高版本中可用。

key

default

说明

enabled

boolean

true

设置此键可确定 WSL 是否支持启动 Windows 进程。

appendWindowsPath

boolean

true

设置此键可确定 WSL 是否会将 Windows 路径元素添加到 $PATH 环境变量。

用户设置

节标签:[user]

这些选项在版本 18980 及更高版本中可用。

key

default

说明

default

字符串

首次运行时创建的初始用户名

设置此键指定在首次启动 WSL 会话时以哪个用户身份运行。

启动设置

启动设置仅适用于 Windows 11 和 Server 2022。

节标签:[boot]

key

default

说明

命令

string

""

你希望在 WSL 实例启动时运行的命令字符串。此命令以根用户身份运行。例如:service docker start

示例 wsl.conf 文件

下面的示例 wsl.conf 文件演示了一些可用的配置选项。在此示例中,分发是 Ubuntu-20.04,文件路径为 \\wsl.localhost\Ubuntu-20.04\etc\wsl.conf

Bash复制

代码语言:javascript
复制
# Automatically mount Windows drive when the distribution is launched
[automount]

# Set to true will automount fixed drives (C:/ or D:/) with DrvFs under the root directory set above. Set to false means drives won't be mounted automatically, but need to be mounted manually or with fstab.
enabled = true

# Sets the directory where fixed drives will be automatically mounted. This example changes the mount location, so your C-drive would be /c, rather than the default /mnt/c. 
root = /

# DrvFs-specific options can be specified.  
options = "metadata,uid=1003,gid=1003,umask=077,fmask=11,case=off"

# Sets the `/etc/fstab` file to be processed when a WSL distribution is launched.
mountFsTab = true

# Network host settings that enable the DNS server used by WSL 2. This example changes the hostname, sets generateHosts to false, preventing WSL from the default behavior of auto-generating /etc/hosts, and sets generateResolvConf to false, preventing WSL from auto-generating /etc/resolv.conf, so that you can create your own (ie. nameserver 1.1.1.1).
[network]
hostname = DemoHost
generateHosts = false
generateResolvConf = false

# Set whether WSL supports interop process like launching Windows apps and adding path variables. Setting these to false will block the launch of Windows processes and block adding $PATH environment variables.
[interop]
enabled = false
appendWindowsPath = false

# Set the user when launching a distribution with WSL.
[user]
default = DemoUser

# Set a command to run when a new WSL instance launches. This example starts the Docker container service.
[boot]
command = service docker start

.wslconfig 的配置设置

.wslconfig 文件全局配置使用 WSL 2 运行的所有 Linux 分发版的设置。(对于按分发配置,请参阅 wsl.conf) 。

有关存储 .wslconfig 文件的位置的信息,请参阅 .wslconfig 。

备注

全局 .wslconfig 配置选项仅适用于在 Windows 内部版本 19041 及更高版本中作为 WSL 2 运行的分发版。请记住,可能需要运行 wsl --shutdown 来关闭 WSL 2 VM,然后重启 WSL 实例以使这些更改生效。

此文件可以包含以下选项,这些选项会影响任何 WSL 2 分发的 VM:

节标签:[wsl2]

key

default

说明

内核 (kernel)

string

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

布尔*

true

一个布尔值,用于在 WSL 中打开或关闭对 GUI 应用程序 (WSLg) 的支持。仅适用于Windows 11。

debugConsole

布尔*

false

一个布尔值,用于在 WSL 2 发行版实例启动时打开显示 dmesg 内容的输出控制台窗口。仅适用于Windows 11。

nestedVirtualization

布尔*

true

用于打开或关闭嵌套虚拟化的布尔值,使其他嵌套 VM 能够在 WSL 2 中运行。仅适用于Windows 11。

vmIdleTimeout

数量*

60000

VM 在关闭之前处于空闲状态的毫秒数。仅适用于Windows 11。

具有 path 值的条目必须是带有转义反斜杠的 Windows 路径,例如:C:\\Temp\\myCustomKernel

具有 size 值的条目必须是后跟单位的大小,例如 8GB512MB

值类型后具有 * 的条目仅在Windows 11可用。

示例 .wslconfig 文件

.wslconfig下面的示例文件演示了一些可用的配置选项。在此示例中,文件路径为 C:\Users<UserName>\.wslconfig.

Bash复制

代码语言:javascript
复制
# Settings apply across all Linux distros running on WSL 2
[wsl2]

# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
memory=4GB 

# Sets the VM to use two virtual processors
processors=2

# Specify a custom Linux kernel to use with your installed distros. The default kernel used can be found at https://github.com/microsoft/WSL2-Linux-Kernel
kernel=C:\\temp\\myCustomKernel

# Sets additional kernel parameters, in this case enabling older Linux base images such as Centos 6
kernelCommandLine = vsyscall=emulate

# Sets amount of swap storage space to 8GB, default is 25% of available RAM
swap=8GB

# Sets swapfile path location, default is %USERPROFILE%\AppData\Local\Temp\swap.vhdx
swapfile=C:\\temp\\wsl-swap.vhdx

# Disable page reporting so WSL retains all allocated memory claimed from Windows and releases none back when free
pageReporting=false

# Turn off default connection to bind WSL 2 localhost to Windows localhost
localhostforwarding=true

# Disables nested virtualization
nestedVirtualization=false

# Turns on output console showing contents of dmesg when opening a WSL 2 distro for debugging
debugConsole=true

参考

https://learn.microsoft.com/zh-cn/windows/wsl/wsl-config#wslconfig

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • wsl.conf 和 .wslconfig 有何区别?
  • wsl.conf
  • .wslconfig
    • 第 8 秒的规则
    • wsl.conf 的配置设置
      • systemd 支持
        • 自动装载设置
          • 自动装载选项
          • 什么是 DrvFs?
        • 网络设置
          • 互操作设置
            • 用户设置
              • 启动设置
                • 示例 wsl.conf 文件
                • .wslconfig 的配置设置
                • 示例 .wslconfig 文件
                • 参考
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档