安装、配置并使用 WSL ,主要分为以下五个部分:
- 前情提要
- 安装发行版本
- 编写配置脚本
- 使用相关命令
- 参考链接
目录 Table of Contents
前情提要
终于结束漫长的听力翻译和阅读理解,开始真正搞机(期待地搓手手.gif。本文将解锁 WSL 1 初体验(发现 Windows build 版本好像快落后了一个世纪,WSL 2 装不了惹。
安装发行版本
配置相关:
- Windows 10 家庭中文版 1903
- 64 位操作系统,基于 x64 的处理器
- WSL 1
- Ubuntu 16.04 LTS
- Alpine WSL
Step 1: 开启支持 WSL 选项
方法一:控制面板设置
“控制面板” -> “程序” -> “启用或关闭 Windows 功能” -> “适用于 Linux 的 Windows 子系统”
重启电脑
方法二:输入命令设置
“Windows PowerShell(以管理员身份运行)” ->
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
重启电脑
Step 2: 安装 Linux 发行版本
- 方法一:Microsoft Store 安装
- 方法二:Command-Line/Script 安装
Step 3: 配置 Linux 发行版本
- 启动已安装好的 Linux 发行版本
- 点击启动:
- 菜单栏单击运行发行版本
- 磁贴板单击运行发行版本
- 命令启动:
bash.exe
:默认目录为 Windows 用户目录distro.exe
:默认目录为 Linux 用户目录wsl.exe
:允许 Windows 和 Linux 的命令混用
- 点击启动:
- 等待 Linux 发行版本解压缩和初始化
- 创建 Linux 下的新用户及其密码
- 管理员用户之一
- 每次进入的默认用户
- 与 Windows 用户名无关
- 定期更新 Linux 下的 Package
sudo apt update && sudo apt upgrade
PS: 常见报错解决页 👉 WSL troubleshooting page
编写配置脚本
WSL 支持使用 wsl.conf
来初始化自动挂载和网络配置两大功能。wsl.conf
位于 /etc
目录,如果文件已存在,WSL 会自动读取适配;如果文件不存在,可以自行在目录内新建;如果文件出错了,WSL 会忽略配置文件。
自动挂载
Section Label: [automount]
key | value | default | notes |
---|---|---|---|
enabled | boolean | true | true causes fixed drives (i.e C:/ or D:/ ) to be automatically mounted with DrvFs under /mnt . false means drives won’t be mounted automatically, but you could still mount them manually or via fstab . |
mountFsTab | boolean | true | true sets /etc/fstab to be processed on WSL start. /etc/fstab is a file where you can declare other filesystems, like an SMB share. Thus, you can mount these filesystems automatically in WSL on start up. |
root | String | /mnt/ |
Sets the directory where fixed drives will be automatically mounted. For example, if you have a directory in WSL at /windir/ and you specify that as the root, you would expect to see your fixed drives mounted at /windir/c |
options | comma-separated list of values | empty string | This value is appended to the default DrvFs mount options string. Only DrvFs-specific options can be specified. Options that the mount binary would normally parse into a flag are not supported. If you want to explicitly specify those options, you must include every drive for which you want to do so in /etc/fstab. |
网络配置
Section label: [network]
key | value | default | notes |
---|---|---|---|
generateHosts | boolean | true |
true sets WSL to generate /etc/hosts . The hosts file contains a static map of hostnames corresponding IP address. |
generateResolvConf | boolean | true |
true set WSL to generate /etc/resolv.conf . The resolv.conf contains a DNS list that are capable of resolving a given hostname to its IP address. |
交互操作
Section label: [interop]
These options are available in Insider Build 17713 and later.
key | value | default | notes |
---|---|---|---|
enabled | boolean | true |
Setting this key will determine whether WSL will support launching Windows processes. |
appendWindowsPath | boolean | true |
Setting this key will determine whether WSL will add Windows path elements to the $PATH environment variable. |
具体示例
1 | # Enable extra metadata options by default |
使用相关命令
查看版本列表
wsl -l
,wsl --list
:可用的 Linux 发行版wsl --list --all
: 未可用和已可用的 Linux 发行版wsl --list --running
:运行的 Linux 发行版
设置默认版本
wsl -s <DistributionName>
,wsl --setdefault <DistributionName>
重新安装版本
wsl --unregister <DistributionName>
- 重复“安装发行版本”的“Step 3: 配置 Linux 发行版本”
指定参数登录
wsl -d
,wsl --distribution
:指定版本登录wsl -u
,wsl --user
:指定用户登录
交互操作选择
$ echo 0 > /proc/sys/fs/binfmt_misc/WSLInterop
:停用交互操作$ echo 1 > /proc/sys/fs/binfmt_misc/WSLInterop
:开启交互操作
Windows命令行运行Linux工具
wsl <LinuxCommand>
1
2
3
4
5C:\temp> wsl ls -la | findstr "foo"
-rwxrwxrwx 1 root root 14 Sep 27 14:26 foo.bat
C:\temp> dir | wsl grep foo
09/27/2016 02:26 PM 14 foo.bat
Linux命令行运行Windows工具
<WindowsCommand>
1
2
3
4
5
6$ cmd.exe /C dir
<- contents of C:\ ->
$ PING.EXE www.microsoft.com
Pinging e1863.dspb.akamaiedge.net [2600:1409:a:5a2::747] with 32 bytes of data:
Reply from 2600:1409:a:5a2::747: time=2ms
PS: 以上适用于 “Windows 10 Version 1903 and later“, “Versions Earlier than Windows 10 Version 1903 “的对应目录请查看文末的参考链接。Windows Insiders Builds 17063 起支持 Windows 和 Linux 共享环境变量;Fall Creators Update 起 Windows Path
将加入 Linux $PATH
。