Windows Subsystem for Linux

WSL

Posted by PYQ on December 31, 2021

Ⅰ. WSL概述

官方文档

1.1 WSL介绍

试想在Windows系统上运行Linux环境,我们需要怎么做?不同于类Unix的Mac OS,Windows不支持直接使用GNU/linux下的命令,通常的做法是下载类似VMware或者VirtualBox的虚拟机软件,再使用相应的镜像文件以运行Linux环境。而WSL的出现可以让我们直接在Windows上运行Linux环境。

WSL即Windows Subsystem for Linux的缩写,意思是linux版的window子系统。WSL可以让开发人员无需虚拟机就可以直接在Windows上运行GNU/Linux环境,包括大多数命令行工具、实用工具和应用程序,且不会产生传统虚拟机或双启动设置开销。

WSL的优点

  • 相较于虚拟机,WSL占用资源更少
  • WSL可以直接对Windows文件系统下的文件直接进行读写,文件传输更加方便

  • 在Microsoft Store中选择你偏好的GNU/Linux分发版
  • 运行常用的命令行软件工具(例如 grep、sed、awk)或其他ELF-64二进制文件
  • 运行Bash shell脚本和GNU/Linux命令行应用程序,包括:
    • 工具:vim、emacs、tmux
    • 语言:NodeJS、Javascript、Python、Ruby、C/C++、C# 与 F#、Rust、Go等
    • 服务:SSHD、MySQL、Apache、lighttpd、MongoDB、PostgreSQL
  • 使用自己的GNU/Linux分发包管理器安装其他软件
  • 使用类似于Unix的命令行shell调用Windows应用程序
  • 在Windows上调用GNU/Linux应用程序

1.2 WSL2

目前WSL一共有两个版本,最新版本为WSL2。WSL2提高了文件系统性能,以及添加完全的系统调用兼容性,这一新的体系结构改变了这些Linux二进制文件与Windows和计算机硬件进行交互的方式,但仍然提供与WSL1(当前广泛可用的版本)中相同的用户体验。

WSL2 vs WSL1

功能 WSL 1 WSL 2
Windows和Linux之间的集成
启动时间短
占用的资源量少
托管VM
完整的Linux内核
完全的系统调用兼容性
可以与当前版本的VM Ware和VirtualBox一起运行
跨OS文件系统的性能

本文将对WSL2的安装进行介绍,我强烈建议您使用WSL2,相较于WSL1,其提供了更快的性能和系统调用兼容性。

以下情况建议安装WSL1:

  1. 项目文件必须存储在WSL1中(建议安装于Linux目录)。
  2. 一个项目要求对相同的文件使用Windows和Linux工具进行交叉编译。

一些建议

如果您的设备RAM较小(小于等于8G),那么我强烈建议您安装WSL以学习或工作。

⚠️:不建议Linux初学者直接使用WSL进行学习,使用虚拟机开始Linux的学习有更好的容错性!

Ⅱ. WSL的安装

2.1 Windows版本要求

必须运行Windows 10版本2004及更高版本(内部版本 19041 及更高版本)或 Windows 11。

Windows版本可在设置-Windows更新中查看

2.2 其他先决条件

(1) 开启VT虚拟化

  • 一般情况下,此功能默认开启,若未开启,请参考以下步骤
  • 重启电脑,开机后按delete键进入BIOS
  • 进入BIOS后,找到Virtualization Technology,把Disabled改为Enabled
  • 选择Save & Exit Setup
  • 按Y确定

2.3 安装

(1) 开启WSL

以管理员身份打开PowerShell(“开始”菜单 >“PowerShell”> 单击右键 >“以管理员身份运行”),然后输入以下命令:

1
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

(2) 开启虚拟机功能

以管理员身份打开 PowerShell 并运行:

1
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重新启动计算机,以完成WSL安装并更新到WSL2。

(3) 下载Linux内核更新包

  1. 点击链接进行下载WSL2内核更新包:适用于 x64 计算机的 WSL2 Linux 内核更新包
  2. 运行上一步中下载的更新包。

(4) 将WSL2设置为默认版本

打开PowerShell,然后在安装新的Linux发行版时运行以下命令,将WSL2设置为默认版本:

1
wsl --set-default-version 2

(5) 打开Microsoft Store,并选择你偏好的Linux分发版。

image-20211231115831445

首次启动新安装的Linux分发版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。然后,需要为新的Linux分发版创建用户帐户和密码。

Windows 控制台中的 Ubuntu 解包

现已成功安装并设置了与Windows操作系统完全集成的Linux分发!

Ⅲ. 更换源

由于Ubuntu自带源速度较慢,我们此处更换阿里源,也可更换其他镜像源。

(1) 查看Codename

lsb_release -a

image-20211231131128765

(2) 备份源

cd /etc/apt
sudo cp sources.list sources.list.bak

(3) 更换源

1
sudo vim sources.list

下面源信息中$Codename替换为第一步中系统的Codename,vim命令为:%s/$Codename/focal/g

1
2
3
4
5
6
7
8
9
10
deb http://mirrors.aliyun.com/ubuntu/ $Codename main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ $Codename-backports main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ $Codename-proposed main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ $Codename-security main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ $Codename-updates main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ $Codename main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ $Codename-backports main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ $Codename-proposed main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ $Codename-security main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ $Codename-updates main multiverse restricted universe

(4) 执行更新

1
sudo apt-get update

Ⅳ. Shell美化

此节不影响使用,可不进行。

直接点击Linux发行版程序打开的控制台不太美观,我们对其进行美化。

4.1 安装Windows terminal

在Microsoft Store中搜索下载即可,Windows11自带。下载完成后,可以直接右键点击即可选择打开下载的Linux发行版。

4.2 VIM美化

有关VIM的美化见博客VIM。

4.3 下载zsh

Ubuntu自带的shell为bash,我们选择更高效、更加美观的zsh。

下载安装zsh

1
sudo apt install zsh

查看zsh是否安装成功

1
cat /etc/shells

进入zsh,选择数字2

1
zsh

使用命令修改默认终端

1
chsh -s /bin/zsh

关闭终端重新进入即可改变默认shell

4.4 下载oh-my-zsh以及配置zsh

下载github项目到本地的~/.oh-my-zsh(需预先下载git)

1
git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh

替换zsh默认配置

1
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

使文件生效

1
source ~/.zshrc

配置主题

1
vim ~/.zshrc

修改.zshrc中的ZSH_THEME变量的引号内内容即可,本文选择ys样式,也可选择其他主题

安装插件

oh-my-zsh提供了一些插件,储存在~/.oh-my-zsh/plugins目录中,如果你希望安装一个插件,可以在~/.zshrc的plugins=(xxx xxx …)这一行里加入插件名称。

这里我们安装两个第三方插件:语法高亮和命令提示

(1) 语法高亮

1
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh}/plugins/zsh-syntax-highlighting

(2) 命令提示

1
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh}/plugins/zsh-autosuggestions

(3) 修改配置文件并使其生效

1
2
3
4
5
6
7
vim ~/.zshrc

#修改plugin变量如下
plugins=(git zsh-syntax-highlighting zsh-autosuggestions)

#使配置文件生效
source ~/.zshrc

对于语法提示,使用——>按键即可补全,效果如下:

image-20211231123710477

4.5 安装oh-my-tmux

tmux是一个及其好用的终端多开工具,可以极大的提高效率。

(1) 安装tmux

1
sudo apt-get install tmux

(2) 开启tmux

1
2
tmux                    #默认名字启用tmux
tmux new -s name        #指定session的名字

(3) 安装oh-my-tmux

oh-my-tmux官方文档

1
2
3
4
cd
git clone https://github.com/gpakosz/.tmux.git
ln -s -f .tmux/.tmux.conf
cp .tmux/.tmux.conf.local .

重启终端,打开tmux即可,另外可修改~/.tmux.conf.local来个性化自己的配置,最终效果如下:

image-20211231130608322

Ⅵ. Tabby推荐

常见的shell连接工具有xshell,免费版的xshell有诸多限制。此处推荐新兴开源工具Tabby,更加美观并且集成了sftp工具,目前我已将其替换了xshell和xftp。

Tabby官网 在线体验demo Github地址 教程

image-20211231133037985