WSL实操笔记 | 青训营笔记

373 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

为了在我的 windows 本上愉快的进行 kitex代码生成,完成青训大项目任务,我需要安装 WSL。

什么是WSL?

WSL 是 Windows Subsystem for Linux 的缩写,意思是 linux 版的 window 子系统。

简单的说就是,Linux 的 Windows 子系统让开发人员无需虚拟机就可以直接在 Windows 上运行 Linux 环境,包括大多数命令行工具、程序和应用。

使用 WSL 的好处是:

  1. 与在虚拟机下使用 Linux 相比,WSL 占用资源更少,更加流畅;
  2. WSL 可以对 Windows 文件系统下的文件直接进行读写,文件传输更方便;
  3. 剪贴板互通,可以直接在 Windows 下其它地方复制文本内容,粘贴到 WSL;

开搞

1. 开启 WSL 支持

使用管理员权限的 Shell 才能安装 WSL。

在 Windows PowerShell (管理员) 中复制执行命令。

$ Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

以上命令会激活 WSL 服务,然后需要重启系统。

2. 安装 WSL 发行版

在 Windows 应用商店搜索 ubuntu ,选择自己喜欢的版本,安装即可。

这里我选择的是 Ubuntu 20.04 LTS,之后的所有内容也是基于 WSL Ubuntu 编写。

image-20230120220817309

下载,安装之后,打开直接报错。

image-20230120231112601

尝试用指令下载:

$ wsl.exe --install Ubuntu-20.04

还是一样的报错。(一样的效果再做一遍当然还是报错)

image-20230120232225328

看了很多文档,说的都是虚拟化技术没开巴拉巴拉,问题是我都开了,最后还是有一句中肯的,要先用WSL 1,执行下面这个指令,把 WSL 版本改为1。

$ wsl --set-default-version 1

然后设置下用户名和密码,我这尝试了一下,密码不能为空。

image-20230120234627036

到这里, WSL 就安装好了,但我想要配 docker 还是跑不起来,错误码还是0x80370102。

查看自己系统的体系结构

$ uname -a
# Linux LAPTOP-N7JGIRHR 5.15.79.1-microsoft-standard-WSL2 #1 SMP Wed Nov 23 01:01:46 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

3. 升级到 WSL2

这里碰了很多壁,不知道看了多少文档,可能里面有几句命令是有效的,可惜并没有立刻展现出效果(我隐约感觉是我以前安装了安卓模拟器改了我的系统配置的原因),在我走投无路之际我重启了电脑,最后居然成功了!!

如果实在不知道怎么办,尝试运行下面这两行代码:

# 以管理员身份运行
$ bcdedit /set hypervisorlaunchtype off
$ bcdedit /set hypervisorlaunchtype auto

升级 WSL2

# 先看看有哪些 WSL
$ wsl -l -v
#  NAME            STATE           VERSION
#* Ubuntu-20.04    Stopped         1$ wsl --set-version Ubuntu-20.04 2

4. apt 换源

更换为清华大学 TUNA 的软件源镜像

  • 执行下面命令,备份 apt 安装源:
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  • vim 编辑 sources.list :
$ sudo vim /etc/apt/sources.list 

将 sources.list 中的内容替换如下 :

# 默认注释了源码镜像以提高 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

5. 配置 SSH 服务器

WSL 上的 SSH 服务器没有自动配置,需要手动重新安装,首先可以运行以下命令来安装:

$ sudo apt install openssh-server

image-20230121001110928

报错,经查阅相关资料,需要 openssh-client=1:8.2p1-4ubuntu0.5 这么个玩意。

$ sudo apt-get install openssh-client=1:8.2p1-4ubuntu0.5
# 一顿下载后...
$ sudo apt install openssh-server

然后配置 /etc/ssh/sshd_config

$ sudo vim /etc/ssh/sshd_config

修改如下三个关键字:

Port 22
PermitRootLogin yes
PasswordAuthentication yes

重启 ssh 服务:

$ sudo service ssh restart
$ sudo service ssh status

设置 root 账户密码:

$ sudo passwd root

这样就可以顺利 ssh 连上了。

然后配置公钥

$ mkdir .ssh
$ vim ~/.ssh/authorized_keys

把自己的公钥放上去就行了。