WSL 使用
WSL 是一个为在 Windows 10 和 Windows Server 2019 以上能够原生运行 Linux 二进制可执行文件(ELF 格式)的兼容层。可以把它当作一个只能用命令行交互的 Linux 虚拟机。
安装
在管理员模式下打开终端,输入:
wsl --install
这将开始安装 Ubuntu。
安装好之后会提示你创建一个默认 UNIX 用户名和密码。用户名最好使用小写的单个单词:
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:
New password:
Retype new password:
输入完成之后,我们的 Ubuntu 就初始化成功了:
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.133.1-microsoft-standard-WSL2 x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
This message is shown once a day. To disable it please create the
/home/user/.hushlogin file.
user@host:~$
如果要退出 WSL,输入 exit:
exit
如果下次要进入 WSL,输入 wsl,将进入设置的默认 Linux 发行版:
wsl
常用 WSL 命令
wsl --install # 安装虚拟机(默认为 Ubuntu)
wsl --shutdown # 停止所有 WSL 虚拟机
wsl --update # 升级所有 WSL 虚拟机
wsl --list # 查看虚拟机列表
wsl --unregister <vm-id> # 卸载虚拟机
在 WSL 中使用 Docker
Windows 主机上的 Docker Desktop 可以和 WSL 虚拟机集成。也就是说,如果你的 Windows 主机已经安装了 Docker Desktop,那么就不用在 WSL 中再次安装 Docker(CE)了。我们只需在 Docker Desktop 设置中打开相关的虚拟机集成即可。
打开 Docker Desktop 设置,进入 Resources > WSL integration,然后打开你需要集成的虚拟机选项即可:

设置镜像网络
如果你需要 WSL 虚拟机使用主机的网络环境,需要设置镜像网络。
在宿主机的用户主目录下创建文件 .wslconfig,填入以下配置:
[experimental]
autoMemoryReclaim=gradual # gradual | dropcache | disabled
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
然后重启 WSL 虚拟机:
wsl --shutdown
WSL 连接 U 盘
安装 USBIPD-WIN 工具(需要 Windows 11 或更高):
winget install --interactive --exact dorssel.usbipd-win
以管理员模式打开 PowerShell,然后列出 USB 设备:
usbipd list
找到你的 U 盘,然后共享并链接到 WSL:
usbipd bind --busid <bus-id> # 共享设备
usbipd attach --wsl --busid <busid> # 链接设备
在 WSL 中验证设备已链接:
lsusb
使用完成后,可物理断开 USB 设备,或者从 PowerShell 运行命令:
usbipd detach --busid <bus-id>
参考:连接 USB 设备 | Microsoft Learn
Troubleshooting
Failed to translate xxx
安装了 Docker 的同学可能会发现使用 wsl 命令启动虚拟机时报错:
$ wsl
<3>WSL (34) ERROR: CreateProcessParseCommon:708: Failed to translate C:\Users\user
<3>WSL (34) ERROR: CreateProcessParseCommon:754: getpwuid(0) failed 2
<3>WSL (34) ERROR: UtilTranslatePathList:2866: Failed to translate C:\Program Files\PowerShell\7
<3>WSL (34) ERROR: UtilTranslatePathList:2866: Failed to translate C:\Windows\system32
<3>WSL (34) ERROR: UtilTranslatePathList:2866: Failed to translate C:\Windows
...
这是因为 WSL 的默认 Linux 发行版被设置成了 docker-desktop-data。我们可以使用 wsl -l 命令检查默认 Linux 发行版:
$ wsl -l
适用于 Linux 的 Windows 子系统分发:
docker-desktop-data (默认)
Ubuntu
docker-desktop
可以看到默认 Linux 发行版是 docker-desktop-data。我们可以使用 wsl -s 命令重新设置默认 Linux 发行版:
wsl -s ubuntu # 设置 Ubuntu 为默认发行版
WSL2: WslRegisterDistribution failed with error: 0x80070002
我是在卸载了 VMware Workstation Pro 之后使用 WSL 安装 Ubuntu 时遇到了这样的问题。重新安装 VMware Workstation Pro,然后再卸载,然后再次使用 WSL 安装 Ubuntu 即可。
参考:WSL2: WslRegisterDistribution failed with error: 0x80070002 | GitHub
虚拟机无法联网
编辑 WSL 配置文件 /etc/wsl.conf,加入下面两行配置:
[network]
generateResolvConf = false
然后重启虚拟机:
wsl --shutdown
重新启动 WSL,并编辑 /etc/resolv.conf 文件,加入下面这行:
nameserver 223.5.5.5
WSL 使用的更多相关文章
- Bash On Win10 (WSL) 安装 Odoo 开发环境
前段时间微软发布了Bash On Win10,虽然目前还是Beta阶段,但是一想到再也不用折腾虚拟机上跑odoo了,就忍不住手痒,尝试在WSL上安装了一下odoo,结果比较惊喜,感觉可以抛弃Vitru ...
- 推荐一款好用的WSL终端模拟器
Windows 10 中包含了一个 WSL(Windows Subsystem for Linux)子系统,我们可以在其中运行未经修改过的原生 Linux ELF 可执行文件.利用它我们可以做很多事情 ...
- Win10 Bash/WSL调试Linux环境下的.NET Core应用程序
一.简介 使用过Mac OS的程序员都知道,在Mac Book Pro上写程序是一件比较爽的事儿,作为dotneter,我们都比较羡慕Mac系统的环境,比如命令行,当然设备也是挺漂亮的. 在新的Win ...
- 关于WSL(Windows上的Linux子系统)的介绍
WSL,Windows Subsystem for Linux,就是之前的Bash on [Ubuntu on] Windows(嗯,微软改名部KPI++ 首先要说一句,其实Windows 10在一周 ...
- 利用 WSL 在 Windows下打造高效的 Linux 开发环境
WSL-Windows Subsystem for Linux 介绍 The Windows Subsystem for Linux lets developers run Linux environ ...
- 微软为.NET程序员带来了最优的跨平台开发体验-WSL
前言 在前几个Visual Studio Code更新中发现有一个重要得特性,就是nodejs可以使用VS Code在WSL中进行Debug了(WSL是指Win10中的Linux子系统),之前写过一篇 ...
- Windows Sublime Text 配置Linux子系统(WSL)下的 gcc/g++ 编译环境
0. 简介(若已了解背景可以跳过此部分) Windows 10 Build 14316以上版本中加入了"Windows系统的Linux子系统"(Windows Subsystem ...
- Windows Subsystem for Linux (WSL)挂载移动硬盘U盘
WSL想通过移动硬盘处理一些数据,结果进去了无法发现移动硬盘,于是搜了好久也没有一个正确的解决办法,终于找到一个,现在贡献出来与大家共享. WSL比起linux挂载硬盘简单一些.而且windows本身 ...
- WSL与Windows交互实践
1. WSL是什么 2. WSL新特性 3. WSL管理配置 4. WSL交互 5. 解决方案 * 5.1 使用别名 * 5.2 多复制一份 * 5.3 重定向 * 5.4 symlink 6 ...
- WSL Windows Subsystem for Linux安装指南
见官方文档: https://msdn.microsoft.com/en-us/commandline/wsl/install_guide
随机推荐
- Gitlab的安装和使用
安装和配置必要的依赖项 yum install dnf sudo dnf install -y curl policycoreutils openssh-server #将SSH服务设置成开机自启动 ...
- MyBatis插件:通用mapper(tk.mapper)
简单认识通用mapper 了解mapper 作用:就是为了帮助我们自动的生成sql语句 通用mapper是MyBatis的一个插件,是pageHelper的同一个作者进行开发的 作者gitee地址:h ...
- WEB入门 - 文件上传
WEB入门 - 文件上传 参考文章 https://fushuling.com/index.php/2023/08/20/ctfshow刷题记录持续更新中/ https://www.cnblogs.c ...
- [oeasy]python0091_仙童公司_八叛逆_intel_8080_altair8800_牛郎星
编码进化 个人电脑 计算机 通过电话网络 进行连接 极客 利用技术 做一些有趣的尝试 极客文化 是 认真研究技术的 文化 计算机 不再是 高校和研究机构高墙里面的 神秘事物 而是 生活中常见的 家用电 ...
- ASP.NET MVC / WebAPI 路由机制详解
从MVC到WebApi,路由机制一直都在其中扮演着重要的角色. 它可以很简单:如果你只需要会用一些简单的路由,如/Home/Index那么你只需要配置一个默认路由就能搞定. 它可以很神秘:你的url可 ...
- CF1950B Upscaling题解
CF1950B Upscaling题解 题意 给予你一个正整数 \(n\),构造一个如图的字符矩阵. 思路 注意数据 \(1\le n \le 20\),可以发现数据很小,于是我们可以暴力模拟. 我们 ...
- Python学习的个人笔记
python基础知识 目录: Python基础语法: (1)打印出hello world (2)注释 (3)数据类型 (4)运算 (5)输入 (6)输出 (7)序列 (8)相等比较 (9)选择 (10 ...
- Jmeter函数助手12-threadNum
threadNum函数用于获取当前线程编号.该函数没有参数,直接引用即可. 1.线程数可在组件[测试计划->线程组]设置.如下是不传入循环次数的${__threadNum}. "调试取 ...
- 对比python学julia(第二章)--(第一节)隔沟算样—枚举策略
1.1. 问题描述 在明代数学家程大位的<算法统宗>著作中记载了这样一道数学题: 甲乙隔沟放牧,二人暗里参详. 甲云得乙九个羊,多你一倍之上. 乙说得甲九只,两家之数相当. 两边闲坐恼心 ...
- 【Java】Annotation 注解
Annotation 注解 注解是一种元数据 MetaData,从JDK5开始 在Java代码中是一个特殊的标记,可以在编译,类加载,运行时读取,执行对应的处理 程序可以在不改变原有逻辑的基础上嵌入一 ...