WSL2 使用笔记
前言
今年 5 月换了台电脑,升了 Win 11.
由于不堪 MSYS2 的慢,于是选择了一直没用过的 WSL 2.
先放一张图来饱大家眼福:
是不是跟我【深入学习 Linux】那一篇文章长得差不多???
那么接下来就开始我们今天的笔记吧!
正文
Step 1. 安装
根据 Microsoft 官网,安装过程如下:
- 设置默认安装 WSL Version 为 2(若你的电脑为 Win 11, 请略过此步)
PS C:\Users\JackMerryYoung> wsl --set-default-version 2
有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
操作成功完成。
- 查看当前可安装发行版
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
- 安装你所需的发行版
这里以 GNU/Debian 为例。
PS C:\Users\JackMerryYoung> wsl --install -d Debian
正在下载: Debian GNU/Linux
正在安装: Debian GNU/Linux
已安装 Debian GNU/Linux。
正在启动 Debian GNU/Linux…
- 创建新用户
接下来会跳出一个窗口,让你设置用户。
- 安装完毕
输入完密码后,我们就安装完了。
此外你还可以安装最新出来的 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_ELEMENTS
与 POWERLEVEL9K_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! 体验一下快速启动的畅感!
WA 有情应识我,日日相见在机房。
四个暴力拿省一,两个标算也不行。
本文来自博客园。 作者: JackMerryYoung, 转载请注明原文链接: https://www.cnblogs.com/JackMerryYoung/p/wsl2-notes.html
兴罢了,今天就写到这吧。何时才能为所欲为?!