Windows进化到10后,最惊喜的功能是支持Linux子系统,即所谓的WSL: Windows Subsystem for Linux.
当时基本第一时间升级到最新版,对于开发者来说,总算可以替代Mac作为主力机了. 之前我通常都是使用VirtualBox或Hyper-V安装Ubuntu虚拟机.
该系统一直在演进,最新的WSL2相当于内嵌纯原生Linux内核,还能支持docker等,文件系统性能据说提升20倍.
另一个好消息是,新版 Win10 Home/家庭版也可以安装Linux子系统了(64位系统的要求大部分都已经满足了).
注: WSL2 需要 Win10升级到2004(即2020年5月更新)
升级到Windows10最新版
每次有大更新发布时需要到官网下载并安装Windows 10易升
按提示升级系统就好.
注: 之前我以为安装一次"易升"就总是可以更新系统,实际不是这样.
查看当前系统版本
快捷键: Win + R 然后输入 winver
配置和使用 WSL: Ubuntu 22.04
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# 下载 https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
wsl --set-default-version 2
安装
首先开启Linux子系统:
[控制面板\所有控制面板项\程序和功能] - 启用或关闭Windows功能 - 勾选“适用于Linux的Windows子系统”
到Windows应用商店搜Ubuntu,然后"获取"就行了.
查看当前版本
# 比较诡异的是,既然已经支持WSL2了,默认居然是WSL1
wsl -l -v
# 切换到WSL2
wsl --set-version Ubuntu-22.04 2
更新国内镜像
vi /etc/apt/sources.list
替换 archive.ubuntu.com 为mirrors.aliyun.com
:%s/archive\.ubuntu\.com/mirrors\.aliyun\.com/gc
使用
PowerShell进入Ubuntu: bash
在2019秋季更新后,WSL可以可以无缝访问Linux文件. 有两种方式:
- 直接使用文件资源管理器: explorer.exe .
- 命令行或文件系统浏览: \wsl$\Ubuntu-22.04
解决 wsl cannot execute binary file: Exec format error
wsl --set-version Ubuntu-22.04 2
常规操作
安装git 和 brew
sudo apt-get install build-essential curl file git
git clone https://github.com/Homebrew/brew ~/.linuxbrew/Homebrew
mkdir ~/.linuxbrew/bin
ln -s ~/.linuxbrew/Homebrew/bin/brew ~/.linuxbrew/bin
eval $(~/.linuxbrew/bin/brew shellenv)
Goland
[构建、执行、部署]-[运行目标],添加WSL
- /usr/local/go/bin/go
- /home/xulz/go
构建时建立选项,勾选在远程目标上构建
ssh
ssh 别名 遇到错误: " Bad owner or permissions on /home/xulz/.ssh/config “的解决方法:
chmod 600 ~/.ssh/config
Windows Terminal
官方总算有好用的多标签终端了,可以到 商店下载.
注: 需要升级系统到1903+
快捷键:
- 新标签: Ctrl + Shift + t
复制标签页: Ctrl + Shift + d- 快捷命令面板: Ctrl + Shift + p
- 拆分窗格: Alt + Shift + +/-
# 文件资源管理器 - 导航栏 输入
wt -d .
# 生成新guid
New-Guid
{
"commandline": "ssh root@moon",
"startingDirectory": "D:/coding",
"icon": "⚡"
},
{
"name": "app",
"command": "newTab",
"keys": "ctrl+shift+t"
}
Docker in WSL 2
使用on-my-zsh和Powerline字体
遇到了使用oh-my-zsh皮肤agnoster时,字符显示乱码的问题.
# 先安裝字体
# refer to https://github.com/powerline/fonts
git clone https://github.com/powerline/fonts.git --depth=1
cd fonts
# cd DejaVuSansMono 右键安装所需字体即可
# 注:以下可选
set-executionpolicy bypass
./install.ps1
set-executionpolicy default
Ubuntu Terminal字体可以通过[属性]-[字体]的方式修改为powerline字体.
Windows Terminal则需要修改配置文件,在[Settings]的profiles增加fontFace 配置:
{
"guid": "{xxxxx-xxxx-xxxxxx-xxxxx}",
"hidden": false,
"name": "Ubuntu-22.04",
"source": "Windows.Terminal.Wsl",
"fontFace": "DejaVu Sans Mono for Powerline"
}
Win10 老版本使用
升级到WSL2
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# 重启机器
# 设置2为默认版本
wsl --set-default-version 2
# 查看已安装版本
wsl --list --verbose
安装
老版本Win10 安装需要两步:
- 开启开发者模式: 更新和安全 -> 开发者选项 -> 开发人员模式 或者 Settings -> Update and Security -> For developers
- 在命令行输入bash 按提示安装就行.
使用
访问文件系统: 通常在 %localappdata%\Lxss\rootfs 或 C:\Users\xulz\AppData\Local\Lxss\home\xulz (替换为你的用户名)
注: 默认隐藏, attrib -s -h lxss
卸载
卸载遗留WSL系统:
wsl –unregister Legacy