我有Windows Subsystem for Linux,但是我不知道我有哪个版本,而且很多东西在版本1中无法正常工作。我该如何检查我的版本?
ver
。倒数第二个数字组的版本是否为18917或更高?如果是,那么您可能已经安装了WSL 2,但尚未进行验证。继续进行A步骤或者B步骤。wsl -l -v
。如果版本2已正确安装,您将看到版本号。如果您没有看到版本号,或者看到错误消息(感谢Cornea Valentin),则表示您使用的是版本1(您也可能看到版本号'1',这可能表示您正在运行v1-请参阅此处)。请卸载它,然后按照https://scotch.io/bar-talk/trying-the-new-wsl-2-its-fast-windows-subsystem-for-linux重新安装。
B. 在WSL shell提示符下运行uname
或uname -r
。如果内核版本>= 4.19,则为WSL版本2。uname -a
命令打印内核版本。 - thisismydesignwsl -l -v
打印的是使用信息(即不起作用),但 wsl -l --verbose
打印了预期的详细列表。systeminfo.exe
给出了 OS 版本:10.0.19041 N/A Build 19041
。 - drkvogelwsl -l -v
命令时返回的是版本1
,并且配备了Ubuntu 20.04
。这对于更新的Ubuntu版本来说是个不错的修复。很酷! - Kyle Vassella无效的命令行选项:-l
,怎么办? - Mobergwsl -l -v
命令检查版本wsl --set-version Ubuntu-20.04 2
命令更新版本注意:更改正在运行的操作系统的版本将终止它。
操作系统的名称不一定是 Ubuntu-20.04,请选择在 wsl -l -v
中列出的实际名称
如果无法更新到版本 2,则可能未安装 WSL 2 内核。可以从Microsoft下载。
wsl --status
:https://www.youtube.com/watch?v=bRW5r7TK6KM - Benny Codeuname -r
,然后得到了结果。
5.4.72-microsoft-standard-WSL2
uname -r
来检查。# Multiline
wsl.exe -l -v |
iconv -f utf16 |
egrep "\b${WSL_DISTRO_NAME}\s+Running" |
tr -d '\r' |
sed 's/.*\([[:digit:]]\)[[:space:]]*/\1/'
会返回1
或2
。
逐行解释,这样做:
执行wsl.exe -l -v
以返回您可能安装的所有发行版的完整列表
通过iconv
运行它以修复其格式错误的UTF16输出。除非您尝试使用grep(或将其管道传输到诸如hexdump -C
之类的工具),否则通常看不到问题,但您必须在使用grep之前清理它。
匹配当前实例(通过$WSL_DISTRO_NAME
)行
删除DOS行结束符
在该行中找到版本号并输出
感谢这个Super User答案提供的概念。
只要为WSL启用了Interop,这将起作用。
如果未启用Interop,则可以使用备用方法来检查/proc/cmdline
:
/proc/cmdline
在 WSL1 上是 BOOT_IMAGE=/kernel init=/init
/proc/cmdline
在 WSL2 上是 initrd=\initrd.img panic=-1 pty.legacy_count=0 nr_cpus=16
所以:
grep -q "^BOOT_IMAGE" /proc/cmdline
在 WSL1 上返回成功,但在 WSL2 上返回错误grep -q "^initrd" /proc/cmdline
在 WSL2 上返回成功,但在 WSL1 上返回错误目前这个方法可行(至少过去一年都有效),但如果 WSL1 或 WSL2 的架构发生变化,将来可能会有改变。然而,我预计 /proc/cmdline
在 WSL1 和 WSL2 之间很可能始终不同,并且可以通过编程解析来确定当前版本。
docker
时,你会看到一条消息The command 'docker' could not be found in this WSL 1 distro.
,这是一个非常明确的确认。
uname -r | grep Microsoft > /dev/null && echo "WSL1"
. -- 这是一种相当临时的检测方式,但如果你正在运行 WSL1,它将会打印 "WSL1"。 - BrainSlugs83uname -r
结尾为-Microsoft
,而在WSL2中,它以小写字母"m"结尾,即-microsoft-standard
。 - Arthur Taccawsl --version
是可用的... - MC Emperor