WSL 适用于 Linux 的 Windows 子系统
Windows Subsystem For Linux
Windows Subsystem For Linux 适用于 Linux 的 Windows 子系统允许开发人员直接在 Windows 上运行 GNU/Linux 环境(包括大多数命令行工具、实用程序和应用程序),无需修改,无需传统虚拟机或双引导设置的开销。
安装 WSL
如何使用适用于 Linux 的 Windows 子系统安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等)。 通过 WSL,你可使用与 Windows 工具(如 PowerShell 或 Visual Studio Code)完全集成的 Linux 工具(如 Bash 或 Grep),而无需双启动。
必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11。Windows + R 运行 winver 查看版本
以管理员权限启动 PowerShell
|
|
更改默认安装的 Linux 发行版
默认情况下,安装的 Linux 分发版为 Ubuntu。 可以使用 -d 标志进行更改。
- 若要更改安装的发行版,请输入:
wsl --install -d <Distribution Name>
。 将<Distribution Name>
替换为要安装的发行版的名称。 若要查看可通过在线商店下载的可用 Linux 发行版列表,请输入:wsl --list --online
或wsl -l -o
。 若要在初始安装后安装其他 Linux 发行版,还可使用命令:wsl --install -d <Distribution Name>
。
检查正在运行的 WSL 版本
|
|
Ubuntu 22.04 LTS
Microsoft Store 下载安装 Ubuntu
需要注意,在商店中的安装并没有实际上完成 Linux 子系统的安装,你还需要运行一次已安装的 Linux 发行版以执行真正的安装操作。
验证是否是 WSL 2 我们只需要在 PowerShell 下输入 wsl -l -v
,输出内容如下,这里 VERSION 为 2 代表启用了 WSL 2
|
|
更换默认源为阿里源, 使用 sudo vim /etc/apt/sources.list 命令编辑,删除原来的内容,添加下面的阿里源信息
Windows Terminal Setting
|
|
可以在 WSL 的 Ubuntu 中安装 zsh、oh-my-zsh
Visual Studio Code Remote WSL
Plugins Remote - WSL
命令面板(Ctrl+Shift+P
)中,输入shell
选择终端:选择默认 Shell
在终端中使用 VSCode
Ctrl+Shift+P 搜索 code 将 code 添加到 PATH
|
|
选择默认终端
按 Ctrl+Shift+P
选择Terminal: Select Default Profile
。
|
|
Docker Desktop WSL 2 backend
WSL 2 引入了重大的体系结构更改,因为它是 Microsoft 构建的完整 Linux 内核,允许 Linux 容器在没有仿真的情况下本机运行,而 Docker 也专门开发了可以使用 WSL 2 中的 Docker 守护进程的桌面管理程序
安装 Docker for Windows
设置打开 wsl2 特性
- 启用基于实验性WSL 2的引擎复选框(Enable the experimental WSL 2 based engine)
- 暴露 2375 端口,让外部其他程序也能管理 Docker (打开 Expose daemon on tcp://localhost:2375 without TLS 前面的复选框)
- 在 Resources 中设置要从哪个 WSL 2 发行版中访问 Docker
安装并配置 Kubernetes 环境
修改 Docker daemon 配置
docker 默认 Cgroup Driver 为 cgroup ,但是在 kubernetes1.14 之后的版本推荐使用 systemd 来作为 Docker 的 cgroup 驱动 。使使用 vim /etc/docker/deamon.json 命令修改或新建配置,具体配置内容可以参考 Kubernetes 官方。
|
|
重启 Docker
|
|
WSL 技巧
Windows 里有一个很有用的命令 「start」,start . 用资源管理器打开当前目录(或用 explorer .),start 文件名 用默认软件打开这个文件,这样就不用开了终端,还要手动去找这个文件再查看了,工作流得到优化。
Windows 下打开 WSL 目录
打开WSL状态下,Windows + R
运行 \\wsl$
安装 WSL 路径:C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState
WSL会完成对Windows硬盘的自动挂载,在/mnt下,通过对应盘符即可访问。
在Linux下cd到需要访问的目录,然后运行"explorer.exe .",注意最后的".",表示用windows资源管理器打开当前文件夹。
WSL命令行调用 notepad.exe。
Windows命令行调用ls。
两者的输入输出管道可以对接,互相可以调用对方的二进制。
将linux根目录映射到win10磁盘
在win10文件地址栏输入 \wsl$ ,可以看到已安装的wsl文件系统,如 Ubuntu 右键-映射网络驱动器,选择要映射的盘符即可。 另外注意,可以用explorer.exe .命令使用windows文件资源管理器打开当前路径
在 terminal 配置文件中,找到Ubuntu配置项,添加如下配置即可 startingDirectory" : “//wsl$/Ubuntu-20.04/home”
PowerShell
|
|
打开创建的脚本文件,将chcp 65001命令写入,然后保存退出文件; 重启Powershell,此后Powershell每次启动即会运行chcp 65001; 若不想每次启动Powershell显式"Active code page: 65001",可改写命令为chcp 65001 >$null,将输出丢弃;
附录
- https://learn.microsoft.com/zh-cn/windows/wsl/
- https://learn.microsoft.com/zh-cn/windows/package-manager/
- https://learn.microsoft.com/zh-cn/windows/powertoys/
- https://code.visualstudio.com/docs
- https://techcommunity.microsoft.com/t5/windows-dev-appconsult/running-wsl-gui-apps-on-windows-10/ba-p/1493242
- https://windowsterminalthemes.dev/