之前一度使用过WSL,但是由于各种不兼容,以及文件系统与Windows共享,导致无法进行Android源码编译(需要大小写敏感的文件系统等),故一直使用双系统的方案;
最近受到越来越多朋友的安利,说WSL2如何如何的爽;
于是,WSL2搞起!
以下步骤主要参考官网介绍:https://docs.microsoft.com/zh-cn/windows/wsl/install-win10
用蓝色高亮部分是我遇到的坑,以及解决方案:
1. 以管理员模式运行PowerShell并输入:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
完成后重启电脑;
2. 下载WSL内核并安装:(建议从官网链接跳转下载,下方链接可能会失效)
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
3. 再次以管理员模式运行PowerShell并输入:
wsl --set-default-version 2
4. 打开Microsoft Store,下载对应的Linux分发版本,我选择的是Ubuntu;
5. 点击获取、安装;
6. 安装完成后点击运行;
7. 在设置默认帐号密码时,我遇到了如下问题:
Installing, this may take a few minutes...
The attempted operation is not supported for the type of object referenced.
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:
中文版报错应该是:参考的对象类型不支持尝试的操作。
解决方案二选一:
1. 关闭所有VPN,或基于VPN原理的各种加速器(比如UU加速器),然后命令行或者PowerShell中运行netsh winsock reset
2. 使用https://www.proxifier.com/tmp/Test20200228/NoLsp.exe中提供的可执行文件,在命令行或PowerShell中运行NoLsp.exe C:\windows\system32\wsl.exe
8. 在设置完成后,我进入Ubuntu,发现已经错过新用户添加的步骤了,只能默认以root用户登录;因此需要手动添加用户:
以下命令在Ubuntu下以root用户执行:
adduser ryan
然后按照提示输入密码与详细信息即可;
用户创建完成后,需要在PowerShell中再修改一下默认登陆的用户:
ubuntu config --default-user ryan
重新登陆Ubunbu,即是默认使用ryan用户登陆的状态;
默认Ubuntu的终端只能是“能用”的状态,完全无法满足生产力需求,因此,使用更为强大的终端则是下一步关键事务;
首先尝试使用微软最近热推的Windows Terminal,安装非常简单,在Microsoft Store中搜索Windows Terminal即可找到:
安装完成后打开,可以看到这玩意非常全能,PowerShell/CMD/WSL全支持:
快捷键与Ubuntu的Gnome Terminal基本一致,使用上手非常快;
网上有比较全的内容,搜索“Windows Terminal 右键”即可,可能结果各有不同,但主要都是通过修改注册表实现;
这里讲一个我使用的,也是自认为最快、最原始的手动修改方法:
1. 运行regedit,即注册表编辑器
2. 在注册表编辑器中,找到如下路径:HKEY_CLASSES_ROOT - Directory - Background - shell
3. 在该路径下,创建一个Key,名为wt;
4. 在该Key的default键中,编写上下文菜单的名字,比如“Windows terminal here”
5. 再在wt下床架一个子Key,名为command;
6. 为command下的default键中,写上Windows terminal的可执行文件名(可以通过cmd或powershell尝试,如果PATH变量是正确设置过的,这里填wt.exe即可,否则需要输入完整路径)
最终结果如图:
7. 然后,Windows terminal here选项应该就可以出现在目录右键的上下文菜单中了;
8. 但是可以发现,目前无论在哪里点击右键,其打开的Windows Terminal都是$HOME变量定义的目录;因此需要做如下修改:
9. 在Windows Terminal中打开Settings (设置),这是一个settings.json文件,或者通过如下路径手动打开:
$HOME\AppData\Local\Packages\Microsoft.WindowsTerminal_***\LocalState\settings.json
打开后在list对应的项目下,追加"startingDirectory": null这一键值对,注意格式(可能需要在上一键值对后面添加逗号)
结果参考如图:
10. 既然都改到了这里,那么把Windows Terminal默认开启的类型也改了吧,默认是PowerShell,而我们安装Windows Terminal主要是为了使用WSL,因此可以将其默认改为打开WSL终端;
修改是通过修改defaultProfile这一键值对实现的,值修改为Windows Terminal的guid即可,例如我这里就这么修改:
"defaultProfile": "{2c4de342-38b7-51cf-b940-2309a097f518}",
后续使用右键打开Windows Terminal即是默认用WSL打开,且目录为当前目录;
更多关于Windows Terminal的美化以及易用性配置,持续更新中;