Skip to main content

WSL使用详解

Li Zheng flyskywhy@gmail.com

在最新版的 Win10 的应用商店中安装好 Ubuntu 后,除了使用默认的命令行界面,还可以参考本文提供的方法使用图形界面、音频支持等功能。

apt

首先

sudo apt-get update

然后就可以安装软件比如 Geany 了

sudo apt install geany

本地 X 窗口软件

安装并启动 MobaXterm ,然后

echo "export DISPLAY=:0.0" >> ~/.bashrc

重启 Ubuntu 后,运行命令比如 geany 就能启动图形界面的 Geany 了。

ssh 远程 X 窗口软件

直接使用 MobaXterm 自带的 ssh 会话就好。

音频支持

本节参考 PulseAudio doesn't workwsl_gui_autoinstall.bat

  • Ubuntu 中安装音频驱动客户端
sudo add-apt-repository ppa:therealkenc/wsl-pulseaudio
sudo apt-get update
sudo apt-get install libpulse0 -y
echo export PULSE_SERVER=tcp:localhost >> ~/.bashrc
  • Windows 中安装音频驱动服务端

http://bosmans.ch/pulseaudio/pulseaudio-1.1.zip 下载解压到 %AppData%\Roaming\PulseAudio 中,然后在 PulseAudio\etc\pulse\default.pa 文件中添加一行:

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1

新建 %AppData%\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\start_pulseaudio.vbe 文件,文件内容为:

set ws=wscript.createobject("wscript.shell") ws.run "C:\Users\YOUR_NAME\AppData\Roaming\PulseAudio\bin\pulseaudio.exe --exit-idle-time=-1",0

记得替换这里的 YOUR_NAME 。

最后重启 Windows 和 Ubuntu 即可。

运行 32 位的 Linux 程序

64 位的 Win10 只支持 64 位而不支持 32 位的 Linux 二进制可执行文件 ,解决方法参见 React使用详解 中 aapt 的例子。

Windows 防火墙

由于 Windows 的防火墙无法自动在 WSL 中的 Linux 开启端口时弹出对话框让用户选择是否允许,所以在 Ubuntu 中开启的服务,只有 Ubuntu 或 Win10 本机才能访问该服务的端口,其它主机也来访问的方法参见 React使用详解 中 packager server 的例子。

腾讯 WeGame 导致无法监听端口

如果安装了腾讯 WeGame 且发现 Ubuntu 中服务的监听端口(就算在本机也)不起作用,则按照 这位自称 WeGame 开发团队人员所说 ,需做如下操作:

下载安装最新版 wegame 在 wegame 的安装目录比如 C:\Program Files\WeGame 中新建一个空文件 UseNewDriver.cfg 删除 system32/drivers/QMTgpNetFlow764.sys 并重启电脑

中文字体支持

虽然默认的命令行界面用比如 ls 命令可以看到中文,但是在图形软件比如 gitk 中只能看到方块,此时就需要安装中文字体:

sudo apt install ttf-wqy-zenhei ttf-wqy-microhei wkhtmltopdf

文件编辑

虽然在 Ubuntu 开启的时候,用 Windows 中的文本编辑器可以直接编辑 Ubuntu 中的文件比如 C:\Users\YOUR_NAME\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_77rhkp7fndgsc\LocalState\rootfs\home\YOUR_NAME\.bashrc ,文件的 Linux 权限也不会被改变,但是当 Ubuntu 重启后就会发现,该文件的 Linux 权限已经变成了 000 ,所以更合适的方式是使用 Ubuntu 中的文本编辑器比如占用资源较小的 geany 或是更全能的 Sublime Text