[安利] WSL Linux 子系统,真香!完整实操

Published
Published
Description
Slug
URL
https://zhuanlan.zhihu.com/p/146545159
Tags
Date
Apr 3, 2023
category
notion image

notion image
WSL 初体验
WSL Linux 子系统体验原生 Docker,真香!
Windows 的 linux 子系统出来挺长时间了,你体验过了吗?
今天就带你折腾一下吧,毕竟想甩掉超占用硬件资源的大块头VM,比如VMware
本文献给爱折腾的你,折腾吧,后浪!
简单说下这篇文章的重点:
  • 安装 WSL 的全过程
  • 选择性升级到 WSL 2 的全过程
  • WSL 2 中体验原生 Docker

啥是 WSL ?

WSL 是 Windows Subsystem for Linux 的缩写,意思是 linux 版的 window 子系统。
引用自:微软官网
  • Run common command-line tools such as grep, sed, awk, or other ELF-64 binaries.
  • Run Bash shell scripts and GNU/Linux command-line applications including:
  • Tools: vim, emacs, tmux *Languages: NodeJS, Javascript, Python, Ruby, C/C++, C# & F#, Rust, Go, etc. *Services: SSHD, MySQL, Apache, lighttpd, MongoDB, PostgreSQL.
  • Install additional software using own GNU/Linux distribution package manager.
  • Invoke Windows applications using a Unix-like command-line shell.
  • Invoke GNU/Linux applications on Windows
简单的说就是,Linux 的 Windows 子系统让开发人员无需虚拟机就可以直接在 Windows 上运行 Linux 环境,包括大多数命令行工具、程序和应用。
使用 WSL 的好处是:
  1. 与在虚拟机下使用 Linux 相比,WSL 占用资源更少,更加流畅;
  1. WSL 可以对 Windows 文件系统下的文件直接进行读写,文件传输更方便;
  1. 剪贴板互通,可以直接在 Windows 下其它地方复制文本内容,粘贴到 WSL;
备注:其实我挺喜欢虚拟机的,毕竟是模拟了硬件,比较成熟,稳定。

开启WSL支持

使用管理员权限的 Shell 才能安装 WSL。
按 Win+X, 找到 Windows PowerShell (管理员),并复制执行命令。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
以上命令会激活 WSL 服务,然后需要重启系统
重启之后,Win + R,输入 appwiz.cpl,左上角找到“启动或关闭 Windows 功能”,会看到这个选项处于选中状态。
其实吧,上面的命令就相当于手动去勾选这个功能。

安装 WSL 发行版

在 Windows 应用商店搜索 ubuntu ,选择自己喜欢的版本,安装即可。
这里我选择的是 Ubuntu 20.04 LTS,之后的所有内容也是基于 WSL Ubuntu 编写。
下载,安装之后,第一次打开会初始化一会
然后设置个用户名,密码
到这里,其实咱们的 WSL 就安装好了。
接下来我们让它更好用吧!

apt 换源

Debian / Ubuntu 的官方源在国内访问很慢,咱们更换为清华大学 TUNA 的软件源镜像
PS:也可以用阿里云的镜像,我体验了没那么快(可能我姿势不对),就不推荐了。
  • 执行下面命令,备份 apt 安装源:
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  • vim 编辑 sources.list :
$ sudo vim /etc/apt/sources.list
  • 将 sources.list 中的内容替换如下
注意:这里是Ubuntu 20.04 LTS的,
如果是其他版本的ubuntu,自行访问[ 清华大学开源软件镜像站]去查找对应版本的镜像配置
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse ​ # 预发布软件源,不建议启用 # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

更新软件

  • 更新软件源中的所有软件列表,可以看到飞快的在刷屏,哗哗哗的
$ sudo apt-get update
  • 更新软件
$ sudo apt-get upgrade # 更新内容稍多,差不多几分钟,玩会手机吧。。。

配置SSH服务器

咱们用惯了 类似 xshell ,SecureCRT 这种 SSH 工具连接 Linux,所以顺便把 SSH 功能打通吧,用的顺手,毕竟 PowerShell 用的不是太方便!
WSL 上的 SSH 服务器没有自动配置,需要手动重新安装,首先可以运行以下命令来检查
$ sudo service ssh stop $ sudo /usr/sbin/sshd -d
如果输出信息包括以上信息,即找不到 key,重新安装 openssh-server 就可以解决问题
$ sudo apt purge openssh-server $ sudo apt install openssh-server
然后需要配置 /etc/ssh/sshd_config,用 sudo 权限运行 vim 修改如下三个关键字
记得删除 #
Port 22 # 这两行允许了 root 账户和密码登录 PermitRootLogin yes PasswordAuthentication yes
然后记得重启 ssh 服务
$ sudo service ssh restart $ sudo service ssh status
如果需要用密码登录 root 账户,还需要设置密码
$ sudo passwd root
然后就可以使用 SSH 工具进行连接啦,本地直接 localhost 即可
OK,到此,咱们的 WSL 已经配置完毕。
尽情体验,安装 Nginx,Redis,MySQL .... 折腾吧后浪!
这就完了???
对,差不多就完了。
以上内容就是 WSL 安装的全部内容。

客官要体验下 WSL2 吗?

去年Build大会,WSL2 正式推出。
WSL2 附带了一个真实的 Linux 4.19 内核,能够带来完整的系统调用兼容性,并且能够直接借助自动更新进行升级维护,无需更新整个Windows Linux的子系统。
同时,WSL2将比第一代的WSL1版本运行速度更快,提升了文件系统的I/O性能和与Linux的兼容性,且可本机直接运行 Docker 容器等这点我喜欢,嘿嘿)。
那么咱们来查看一下我们上面安装的 WSL 版本,
执行命令 wsl -l -v,如果是这个结果,那么恭喜你呀,WSL 1!
什么?我的结果不是这样???怎么我执行命令控制台提示什么无效的命令选项???? 类似下面这样的结果,没事,我知道你会这样,毕竟我是一步步爬着过来的,跟我一起继续往下看。
那么,咱们接下来说,WSL2 使用是有门槛的
你的系统,需要是满足版本的内部版本,强调一下内部版本,其实就是预览(不稳定)版本。
所以,下面要不要升级到 WSL2,有两方面考虑,
  • 一个是你的 windows 版本能不能跟的上
  • 另一个你能不能承担升级预览版本带来的风险?
如果满足不了,就折腾 WSL 1 也挺好,最起码体验一把 windows 的进步。

先升级到内部预览版本

步骤就不写了 百度找一篇给你
注意:不是你填个信息申请一下立马就可以用到内部预览版了,要等 windows 推送给你,我大概等了三四天,发现有更新了,然后更新后再执行 wsl -l -v,就正常了。
更新后,主界面,右下角,会有一些内部预览版的标识。。。
准备好了吗?下面咱们开始更新到 WSL2 吧,跟我一起不停的重启电脑。。。

更新到 WSL 2

启用“虚拟机平台”可选组件

安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。
以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重新启动计算机,以完成 WSL 安装并更新到 WSL 2。

将 WSL 2 设置为默认版本

在 Powershell 中运行以下命令,将 WSL 2 设置为默认版本:
# 1.WSL 提供了版本转换工具,将 wsl1 转为 wsl2, # 注意转换时间可能较长,耐心等待,如果时间太久没反应,时不时按下 Enter 看看有没有更新 wsl --set-version Ubuntu-20.04 2 # 2.将 WSL2 设置为默认版本 wsl --set-default-version 2
现在我们运行wsl -l -v,看到 VERSION 已经是 2 了!
再次恭喜,我们已经成功将 WSL 1 升级为 WSL 2 了!!!
一个真正的 Linux 内核的系统已经在你的 Windows 里了!

在WSL2子系统Ubuntu中安装Docker-CE

其实我升级WSL 2 的目的,是想体验原版的 Docker 的,哈哈,来吧,既然都跟到这里了,就开始吧!

安装 Docker-CE

$ curl -skSL https://mirror.azure.cn/repo/install-docker-ce.sh | sh -s -- --mirror AzureChinaCloud
mirror.azure.cn/help/do

启动Docker,查看 Docker 版本

$ sudo service docker start $ sudo docker version

跑个应用?

你说你装好了,倒是跑个应用看看呀?
好吧,
像 Docker 官网的安装步骤一样,也会有这么一步,通过运行 hello-world 映像来验证 Docker Engine 是否已正确安装。
$ sudo docker run hello-world
我成功了,你呢?
感兴趣可以跟下来实操哦,毕竟我是一点点坑爬上来的才有这篇文章,为了复原真实步骤,装了两次 WSL。