WSL
开启虚拟机功能
在「控制面板」 -> 「程序和功能」 -> 「Windows功能窗口中勾选适用于Linux的Windows子系统」 功能,点击确定,并按照提示重启电脑。
另一个是命令行方式 :
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
WSL2
WSL2类似虚拟机底层与linux更加接近,可以支持Docker,但是在与WINDOWS磁盘IO交互时性能很差。 按自己需求取舍。
开启虚拟机功能
在「控制面板」 -> 「程序和功能」 -> 「Windows功能窗口中勾选适用于Linux的Windows子系统」 功能,点击确定,并按照提示重启电脑。
升级
由于版本问题,好多人的的子系统还停留在 WSL,而不是 WSL2。对于升级,输入如下命令
wsl --set-version Ubuntu-20.04 2
然后,通过如下命令查看
wsl -l -v
设置 WSL2 为默认版本
.html wsl --set-default-version 2 }}}
WSL与Windows相互访问
/mnt/c/
C:\Users\XXXX\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
用资源管理器打开,\\wsl$
,然后右键选中一个发行版,比如Ubuntu,“固定到快速访问”,这样就够用了
设置默认shell为zsh:
# Launch Zsh if [ -t 1 ]; then exec zsh fi
CLI
WSL-terminal
https://goreliu.github.io/wsl-terminal/README.zh_CN.html
在/etc/wsl-terminal.conf
中指定要用的shell。如果不生效,
那么在快捷方式中加上启动参数,指定使用的SHELL与初始目录:
-e SHELL="/bin/zsh" -e LANG -t -C "~" /bin/zsh -l
从在当前位置通过右键menu启动 WSL:
运行wsl-terminal目录下./tools/1-add-open-wsl-terminal-here-menu.js
就ok了,
右键menu就有了从WSL中打开当前目录
右键用指定的Linux软件打开文件:
./tools/5-add-open-with-vim-menu.js
可以通过右键在linux vim中打开文件。
可以把vim改成其他wsl下的程序,这里以emacs为例子:
var WshShell = new ActiveXObject("WScript.Shell"); WshShell.CurrentDirectory = ".."; WshShell.RegWrite("HKCU\\Software\\Classes\\*\\shell\\vim-in-wsl-terminal\\", "Open with emacs in wsl-terminal", "REG_SZ"); WshShell.RegWrite("HKCU\\Software\\Classes\\*\\shell\\vim-in-wsl-terminal\\icon", "\"" + WshShell.CurrentDirectory + "\\emacsclient.exe\"" ); WshShell.RegWrite("HKCU\\Software\\Classes\\*\\shell\\vim-in-wsl-terminal\\command\\", "\"" + WshShell.CurrentDirectory + "\\emacsclient.exe\" -n \"%1\"", "REG_SZ");
GUI
WSL安装xfce desktop
sudo apt-get install xfce4 xfce4-terminal
配置环境变量: WSL中设置环境变量:
export DISPLAY=:0
可以把配置加到/etc/profile
中:
export DISPLAY=:0 export LIBGL_ALWAYS_INDIRECT=1
Xming作为GUI远程工具
连接工具使用Xming
,启动XLanch
以后设置Display Number
与WSL中环境变量一致,
WSL中的GUI程序会弹出窗口。
# display for WSL remote desktop export DISPLAY=:0 export NO_AT_BRIDGE=1
VcXsrv作为远程工具
可以把配置加到/etc/profile
中:
export DISPLAY=:0.0 export LIBGL_ALWAYS_INDIRECT=1
Windows安装VcXsrv然后打开XLaunch
WSL中启动的图形界面程序
startxfce4
XLaunch窗口就会跳出来窗口
MobaXterm作为GUI远程工具
MobaXterm内置了Xserver,使用其免费版本的portable(之前使用过 VcXsrv 体验不好, 全屏下任务切换有明显卡顿,而且窗口resize里面内容不跟着resize,非常不爽)
https://mobaxterm.mobatek.net/download-home-edition.html
WSL中安装桌面环境并添加环境变量:
sudo apt-get install --assume-yes xfce4 sudo apt-get install --assume-yes xorg-dev
将下面代码添加到/etc/profile
文件里:
# 与 Xserver 连接 export DISPLAY=:0 export NO_AT_BRIDGE=1
每次在打开WSL的app前确保 MobaXterm 正在运行,并保证右上角Xserver
图标为开启状态
。
MobaXterm默认设置是不允许windows粘贴板上的内容直接复制到 app 上的,
所以需要调整默认设置进入settings > 选中 X11 选项卡 > 将clipboard 框里选择为
disable "copy on select"
就可以了
常见错误
mysql
大坑。 出现问题: 今天安装mysql,
sudo apt-get install mysql-server
一直报错:
E: Could not read response to hello message from hook [ ! -f /usr/bin/snap ] || /usr/bin/snap advise-snap --from-apt 2>/dev/null || true: Success
解决方法:
sudo rm -rf /etc/apt/apt.conf.d/20snapd.conf
anaconda
安装anaconda时报错:
Exception: dst exists: '/mnt/f/Ubuntu/anaconda3/share/terminfo/e/eterm'
因为/mnt
下不区分大小写,所以必须能实现大小写区别。一般有两个方法:
-
默认安装到
$HOME
目录下。 - 把安装anaconda的目录区分大小写。
sudo apt-get install attr setfattr -n system.wsl_case_sensitive -v 1 /mnt/f/Ubuntu/anaconda3
缺少QT5
WSL1会遇到问题:
error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory
可以升级wsl2,也可以在wsl1中:
sudo strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5