WSL2
Table of Contents
1. 简介
WSL1,Windows Subsystem for Linux。允许开发人员在 Windows 下运行 GNU/Linux 环境。 包括大多数命令行工具,实用程序和引用程序。
比较牛逼的一个点在于,安装一个 Linux 发行版跟安装普通软件一样,但却能拥有近乎原生的 Linux 系统 (真正的 Linux 内核),而不需要安装虚拟机。
如无特殊说明以下 WSL 都表示 WSL2。
2. 安装指引
https://docs.microsoft.com/zh-cn/windows/wsl/install-win10
安装报错2:
Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x800701bc Error: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernel Press any key to continue...
下载 Linux 内核包,安装即可解决。
vmmem 进程很占内存,3
- 关闭 wsl
wsl --shutdown
修改配置文件
notepad "$env:USERPROFILE/.wslconfig"
设置[wsl2] guiApplications=false memory=4GB
在 Windows 下使用 WSL 做开发,系统内存至少 16G,否则再怎么缩减内存也不够用。
3. 命令
wsl -l -v
查看当前运行的发行版wsl --shutdown
关闭所有,不可以在 WSL 中使用sudo reboot
命令实现重启wsl -t <distro-name>
关闭指定发行版
wsl
启动所有wsl -d <distro-name>
启动指定发行版
4. 外部访问 WSL 中的服务
如果在宿主机中访问 WSL 中的某个端口服务,直接通过 localhost
即可。但如果是在宿主机外部(如手机浏览器),则需要一层转发:
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=4000 connectaddress=171.21.112.1 connectport=8080
说明:
connectaddress
connectport
WSL 的 IP 地址和服务暴露端口listenaddress
listenport
映射到宿主机的地址和端口
查看当前所有映射: netsh interface portproxy show all
。
删除某个映射: netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=4000
。
其他说明:
- 执行以上命令都需要管理员权限
- 获取 WSL 的 IP 地址,Ubuntu
ip a
,还有其他方法:How to find WSL2 machine's IP address from windows - 如果外部无法访问,需要检查下 Windows 防火墙放行规则
5. 从 WSL 访问宿主机的服务
宿主机对于 WSL IP 作为 /etc/resolv.conf
的 nameserver,另外也可以在 Windows 上执行 ipconfig
查看 以太网适配器 vEthernet (WSL)
中的值。
6. 使用 SSH 连接
sudo apt autoremove --purge openssh-server -y && sudo apt install openssh-server -y
- 修改 sshd 配置
/etc/ssh/sshd_config
:- 端口:
Port 2222
- 密码登录:
PasswordAuthentication yes
- 端口:
sudo service ssh --full-restart
7. FAQ
7.1. 如何禁用光标闪烁
配置没有办法直接禁用,只能在系统全局设置。 控制面板 => 键盘 => 更改光标闪烁速率
这个设定有点坑,估计后面会优化。
7.2. 如何使用系统代理
https://gitlab.com/JerryZhang2012/dotfiles
主机使用 ClashX 作为代理时,注意打开 Allow LAN
选项。
7.3. locale 设置为 en_US.UTF-8
很多种方法,大部分都是直接修改 /etc/default/locale
加上 .bashrc
比较麻烦。
简单的方法:
sudo locale-gen "en_US.UTF-8"
sudo dpkg-reconfigure locales
7.4. 系统如何使用 systemd?
不支持 systemd,安装服务、自启动等使用 Docker。
7.5. Windows Dockers 开启 WSL2 还是在 WSL2 中安装 Docker?
后者。所有带 GUI 的 Docker 都是垃圾(MacOS 和 Windows 下都一样)。
7.6. 如何设置启动目录
"startingDirectory" : "//wsl$/Ubuntu-18.04/home/<Your Ubuntu Username>"
4
7.7. ssh-add 报错:Could not open a connection to your authentication agent
根源是 ssh-agent 没起来,使用: eval $(ssh-agent -s)
解决。
7.8. 与宿主机文件系统互通
Windows 系统目录被挂载在 Linux 的 /mnt/
目录下,拷贝文件超级方便。