WSL2 使用笔记

前言

今年 5 月换了台电脑,升了 Win 11.

由于不堪 MSYS2 的慢,于是选择了一直没用过的 WSL 2.

先放一张图来饱大家眼福:

是不是跟我【深入学习 Linux】那一篇文章长得差不多???

那么接下来就开始我们今天的笔记吧!

正文

Step 1. 安装

根据 Microsoft 官网,安装过程如下:

  1. 设置默认安装 WSL Version 为 2(若你的电脑为 Win 11, 请略过此步)
PS C:\Users\JackMerryYoung> wsl --set-default-version 2
有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
操作成功完成。
  1. 查看当前可安装发行版
PS C:\Users\JackMerryYoung> wsl --list --online
以下是可安装的有效分发的列表。
请使用“wsl --install -d <分发>”安装。
NAME            FRIENDLY NAME
Ubuntu          Ubuntu
Debian          Debian GNU/Linux
kali-linux      Kali Linux Rolling
openSUSE-42     openSUSE Leap 42
SLES-12         SUSE Linux Enterprise Server v12
Ubuntu-16.04    Ubuntu 16.04 LTS
Ubuntu-18.04    Ubuntu 18.04 LTS
Ubuntu-20.04    Ubuntu 20.04 LTS
  1. 安装你所需的发行版

这里以 GNU/Debian 为例。

PS C:\Users\JackMerryYoung> wsl --install -d Debian
正在下载: Debian GNU/Linux
正在安装: Debian GNU/Linux
已安装 Debian GNU/Linux。
正在启动 Debian GNU/Linux…
  1. 创建新用户

接下来会跳出一个窗口,让你设置用户。

  1. 安装完毕

输入完密码后,我们就安装完了。

此外你还可以安装最新出来的 Ubuntu 22.04, 在 Microsoft Store 上搜索即可。

Step 2. 设置

此处以 Ubuntu 20.04 为例。(若是 Ubuntu 22.04, 请将 focal 换成 jammy 即可)

Step 2.1 基础设置

首先是换源,这里推荐中科大源

/etc/apt/sources.list 中换源,写入:

deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse

然后键入:

sudo apt update && sudo apt upgrade

以更新所有软件。

安装必须的软件:

sudo apt install g++ gcc python3 python3-pip

安装完毕之后,我们的基础设置就完成了。

Step 2.2 美化设置

众所周知,一个开发效率高的程序猿,必须将他的 Env 变得十分美观。

古语有云:工欲善其事,必先利其器。

下面我就带大家配置一个好看的 WSL 2.

Step 2.2.1 从终端入手

你还在用 CMD?

下面为您推荐一款 Fluent Design 的终端:Fluent Terminal.

它是一款现代化的 Terminal. 而且这个软件还完全免费,安装也十分便捷,只需在 Microsoft Store 上安装即可。

安装完后你就得到了:

Step 2.2.2 对 WSL 下手

众所周知, Zsh 是一款强大的 Shell, 它的插件生态非常的 NB.

安装 Zsh:

sudo apt install zsh

不过由于配置极其复杂,一开始也只有一些 Geek 使用。

终于,有一个叫 Robby Russell 的大佬看不下去了,他搞了一个终极配置 Oh-my-zsh,让大家都用上了 Zsh.

官网链接:Link here

快速安装(Gitee):

sh -c "$(wget https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh -O -)"

安装完毕。若有乱码,请下载 Nerd 字体,这里推荐一款目前看到图标支持最好的字体:Hack Nerd Font.

接下来,安装你所需的插件:

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k
wget https://github.com/Peltoche/lsd/releases/download/0.21.0/lsd-musl_0.21.0_amd64.deb
sudo dpkg -i lsd-musl_0.21.0_amd64.deb
sudo apt install tldr neofetch
tldr tldr

此时您应该可以进行配置了,打开 ~/.zshrc。这里提供我的版本:

clear
export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME="powerlevel10k/powerlevel10k"
plugins=(git zsh-syntax-highlighting zsh-autosuggestions)
source $ZSH/oh-my-zsh.sh
alias zshconf="vim ~/.zshrc"
alias omz="source ~/.zshrc"
alias fetch="neofetch"
alias ls="lsd"
alias la="lsd -a"
alias ll="lsd -l"
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

配置完后在终端内键入:

source ~/.zshrc

这句话刷新了整个 Zsh, 启用了刚刚安装的自动补全插件与高亮提示插件,还定义了一些别名(Alias),指定了一个强大且有效率的主题 PowerLevel 10k.

在 PowerLevel 10k 的配置界面中进行选择。你可以自定义自己的 Shell. 配置完成之后,您应该收获了一个这样的界面:

此时,您的 WSL 被配置成了一个高度美观的 OS! 请您为自己鼓掌!

Step 2.2.3 高级配置

PowerLevel 10k 的图标如此之多,不能弃用了呀!

打开 ~/.p10k.zsh,找到 POWERLEVEL9K_LEFT_PROMPT_ELEMENTSPOWERLEVEL9K_RIGHT_PROMPT_ELEMENTS,加入一些元素,比如 Battery, RAM, CPU, Disk, Time.

这里提供本人的配置:云剪贴板。配置完后长成这样:

是不是很美观???


关于 Powershell 的配置,本人也曾感到过愤恨。为了一个统一风格的工作环境,不应该添点料吗???

于是我搞了好久,找到了一个东西叫做 Oh-my-posh. 是的,你没听错,它叫做 Oh My Powershell!!!

在你惊呼 Oh, my, posh!!! 之前,先配置好再说吧。在你的 Windows Powershell / Powershell 中键入 notepad $PROFILE,以查看您的配置文件。

将配置文件改为:

Import-Module oh-my-posh
oh-my-posh init pwsh --config 'C:/Users/JackMerryYoung/AppData/Local/Programs/oh-my-posh/themes/<your_theme_name>.omp.json' | Invoke-Expression

安装必要的环境:

Set-ExecutionPolicy Bypass
winget install oh-my-posh
Install-Module oh-my-posh -Scope CurrentUser
Install-Module posh-git -Scope CurrentUser

启用 oh-my-posh

. $PROFILE

此时你应该获得了(此处以 iTerm 2 主题为例):

那么恭喜您,一整套的配置完成了!终于可以惊呼了!

Step 3 《真正的 容易 出问题的 地方》

前文的内容都是傻瓜式配置,接下来的配置就不太简单。一直在终端里面好无聊,我们再折腾一下,整个 GUI!!!

本部分内容针对 Windows 10 用户。

若您已经不想搞一些卡的要死的玩意或者是 Win 11 用户,请结束阅读该部分,直接跳到下一部分。


首先在你那漂亮极了的 WSL 2 中键入如下一堆玩意:

sudo apt install xfce4 gnome firefox xrdp

此过程将会异常漫长,不过比在 WSL 1 时代好多了。安装完毕之后,在 Win 10 中安装一个叫做 gWSL 的软件。

此处强调一下,不要在 Microsoft Store 中国境内上买!!!Github 有免费版!!!

安装完后启动:

右键托盘图标,点 XServer Profile,确保模式为 Multi Window Mode。键入 zshconf 进行配置,键入:

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }'):0

键入 omz 启用配置。输入 xfce4-terminal,此时出现:

那么你就成功了。(注:字体是我自己配置的,如果有乱码不要慌)

当然,不要尝试跑 gnome-session. WSL 会 Crash.

此刻,您的 GUI 环境就安装完成了。不过正如开头所说的,这玩意很卡。

所以有能力的童鞋们还是升 Windows 10 Insider Preview 或 Windows 11 去玩 WSLg 吧。

Step 4 Geek 内容

警告:下文内容实验性极高,不想前功尽弃的童鞋强烈建议不要搞。

本节所需的工具:

Step 4.1 安装工具

scoop install lxrunoffline

Step 4.2 将你的 WSL 移动至其他盘

WSL 什么都好,就是安装位置不好。占空间过大,会导致 C 盘没空间。

但是,LxRunOffline 能解决这个问题!想要将你的 Linux Distro 从 C 盘移走,只需要键入:

LxRunOffline move -n <your_WSL_distro> -d <your_WSL_new_dir>

等待一下,你要移动的 Distro 就被移走了。C 盘解放了!

Step 4.3 安装非官方 WSL

这里以 Fedora 35 为例。如果你习惯了 DNF/Yum 包管理器,不太喜欢 Debian 的 APT,那么这部分内容将对你有帮助。

下载 Fedora 的 Docker 镜像。快捷链接:Fedora 35.

下载完后在 Powershell 中键入并回车:

LxRunOffline install -n Fedora -d <your_Fedora_dir> -f <your_Fedora_docker_image> -s

这句话的意思是安装 Fedora 的 Docker 镜像至特定文件夹,并创建桌面快捷方式。

安装完成后点击桌面图标,就可以开心的启动 Fedora 了!然鹅后来发现 DNF 卡死,记得换源。

注意,此方法适用于所有 Linux Distro.

Step 4.4 VSCode WSL Remote

作为一个以 VSC 为主要生产环境的人,感觉在 VSC 与 Fluent Terminal 之间切换太麻烦,想要集成一下。

如果您跟我情况相似,那么 WSL Remote 插件绝对是您的不二选择。

安装插件之后,点一下左下方的一个长得像 >< 的图标,启动 WSL Remote. 连接到 WSL 后,您就获得了一个完全集成的环境。

注意,若你的 WSL 安装了 PowerLevel 10k, 请更改你的终端字体。

Step 4.6 升级你的 Ubuntu 20.04

话说都 2022 年了,该不会还有人在用 Ubuntu 20.04 吧?不过我不想重新安装,怎么办呢?

解决方案(作者捣鼓了半天):

Step 4.6.1 升级至 Ubuntu 21.10

do-release-upgrade -d 竟然不能直接让人更新至 Ubuntu 22.04, 于是只好先强制升级次新版本。

先将你的 source.list 中的 focal 都改成 impish, 然后执行 sudo apt update && sudo apt upgrade.

此过程异常漫长,需要更新大约 2000 个软件。之后解决一下依赖并清理:sudo apt dist-upgrade && sudo apt autoremove

此时你的系统应该升级到了 Ubuntu 21.10。

Step 4.6.2 升级至 Ubuntu 22.04

运行 do-release-upgrade -d, 进行一次正常更新... 之后再解决一次依赖问题,此时你就升级到了 Ubuntu 22.04!

请为自己的大胆鼓掌!

Step 4.7 换个新点的内核

Ubuntu 过了两年还不换内核,真是离谱,现在还在用 5.10 的内核。

5.17 版本的内核对于 GPU 支持更好, I/O 速度也有了提升(?)于是笔者很不满,因为有 LFS 的编译经验,决定自己编译一个内核。

首先下载内核并解压,这里下载的是 5.17.5 版。

wget https://mirrors.ustc.edu.cn/kernel.org/linux/kernel/v5.x/linux-5.17.5.tar.gz
tar xvzf ./linux-5.17.5.tar.gz

然后进入构建目录,输入:

wget https://raw.githubusercontent.com/xieyubo/WSL2-Linux-Kernel/wsl-xyb-port-5.11.y/Microsoft/config-wsl
mv config-wsl .config
vim ./.config

你可以在配置文件里更改你所编译的内核的名称:

之后编译(此过程约耗费 5~15 分钟,线程数可以自己调,比如我就用了 make -j8):

make -j4
make modules -j4
make modules_install -j4
make install -j4

编译后会发现一条信息提示你: Kernel: arch/x86/boot/bzImage is ready, 这个就是编译出来的内核。

接下来,在 Powershell 中输入 wsl --shutdown, 以关闭 WSL 2.

我们打开文件资源管理器,访问 C:\Windows\System32\lxss\tools, 将目录下的 kernel 重命名为 kernel.old, 然后把你生成的 bzImage 放在下面,并重命名为 kernel.

重新打开 WSL 2, 输入 neofetch:

此时,您应该发现了,你编译的内核成功的运行了!

恭喜,您将您的 WSL 2 的内核更新至了 5.17.5! 体验一下快速启动的畅感!

posted @ 2022-09-10 12:40  JackMerryYoung  阅读(706)  评论(0编辑  收藏  举报