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
随机推荐
- Qt--共享内存监听工具
共享内存概述 共享内存的特点: 1)共享内存是进程共享数据的一种最快的方法. 一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容. 2)使用共享内存要注意的是多个进程 ...
- CosyVoice多语言、音色和情感控制模型,one-shot零样本语音克隆模型本地部署(Win/Mac),通义实验室开源
近日,阿里通义实验室开源了CosyVoice语音模型,它支持自然语音生成,支持多语言.音色和情感控制,在多语言语音生成.零样本语音生成.跨语言声音合成和指令执行能力方面表现卓越. CosyVoice采 ...
- 微服务网关Gateway使用
为什么需要网关? Gateway网关是我们服务的守门神,所有微服务的统一入口. 网关的核心功能特性 请求路由和负载均衡 一切请求都必须先经过gateway,但网关不处理业务,而是根据某种规则,把请求转 ...
- v-model 的原理?
我们在 vue 项目中主要使用 v-model 指令在表单 input.textarea.select 等元素上创建双向数据绑定,我们知道 v-model 本质上不过是语法糖,v-model 在内部为 ...
- yb课堂 实战之Mybatis打通Mysql数据库 《二》
配置mybatis连接Mysql数据库 server.port=8081 # ========================数据库相关配置===================== spring.d ...
- SpringBoot 接收Post请求参数,三种方式
package net.cyb.demo.controller; import net.cyb.demo.domain.User; import net.cyb.demo.utils.JsonData ...
- Pytorch功能库留存
初始化 首先,介绍我们导入的包和基础的网络结构 import torch import torch.nn as nn #可替代网络结构部分 ''' 神经网络类的定义 1. 输入卷积: in_chann ...
- 还在困惑需要多少数据吗?来看看这份估计指南 | CVPR 2022
论文基于实验验证,为数据需求预测这一问题提供了比较有用的建议,详情可以直接看看Conclusion部分. 来源:晓飞的算法工程笔记 公众号 论文: How Much More Data Do I Ne ...
- 解决方案 | AutoCAD二次开发的ProgID一览表(AutoCAD2004 ~ AutoCAD2024)
1 图片版本 2 文字版本 AutoCAD产品名 版本号 ProgID AutoCAD 2004 R16 AutoCAD.Application.16 AutoCAD 2005 R16.1 AutoC ...
- TIER 1: Sequel
TIER 1: Sequel MySQL MySQL 是一种流行的开源关系型数据库管理系统(RDBMS),它被广泛用于存储和管理大量的结构化数据.MySQL 是由瑞典公司 MySQL AB 开发的,后 ...