安装 ArchWSL 后需要做的事

最近把 windows 更新到了 2004,切换到了 WSL 2 上。

1. 安装 WSL 2

启用 WSL 和虚拟机控制平台功能(要求管理员权限):

1
2
3
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --set-default-version 2

之后重启电脑。

升级 Linux 内核,然后安装 Arch,参见 ArchWSL

20200922 更新:在新电脑上安装 WSL2 时发现,按照升级内核的提示,打开网页 https://aka.ms/wsl2kernel,但发现并没有对应的链接。原因是中文版的帮助不知道为什么删掉了这一关键的步骤,而英文版的帮助上是有的。这里记录一下 msi 文件的链接,以防丢失。

2. WSL 2 相对于 WSL 1 的优缺点

优点:

  • 本地文件操作更快。之前编译一个 glibc,几个小时都没有编完
  • 解决了 sleep 的问题
  • 支持网络操作,例如 ping
  • 可以使用 docker

缺点:

  • 经常会爆内存,包括安装大软件、长时间运行等
  • 访问 Windows 主机上文件的速度变慢

3. 语言设置

1
2
3
4
sed -i '/zh_CN.UTF-8/s/^#//' /etc/locale.gen
locale-gen
sed -i 's/en_US/zh_CN/' /etc/locale.conf
source /etc/locale.conf

一个非常奇怪的事情是,如果把 LANG 设为 zh_CN.UTF-8,那么在 bash 下,windows 中的中文文件名显示为乱码,而 zsh 则显示正常。
但在默认的 LANG=en_US.UTF-8 下,bashzsh 都能正常显示中文文件名。

20200922更新:上面出错的原因找到了,是没有修改 /etc/locale.gen 以及运行 locale-gen

4. 安装软件包

4.1. 导入密钥(非常重要!!!)

1
2
# 初始化密钥环 && 验证主密钥 && 更新密钥
pacman-key --init && pacman-key --populate archlinux && pacman-key --refresh-keys

4.2. 启用国内的镜像源

1
2
3
4
5
6
echo "Server = https://mirrors.aliyun.com/archlinux/\$repo/os/\$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/\$repo/os/\$arch
Server = https://mirrors.neusoft.edu.cn/archlinux/\$repo/os/\$arch
Server = https://mirrors.cqu.edu.cn/archlinux/\$repo/os/\$arch
Server = https://mirrors.sjtug.sjtu.edu.cn/archlinux/\$repo/os/\$arch
Server = https://mirrors.ustc.edu.cn/archlinux/\$repo/os/\$arch" > /etc/pacman.d/mirrorlist

4.3. 添加 ArchlinuxCN 源

1
2
3
4
echo "
[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/x86_64" >> /etc/pacman.conf
pacman -Sy && pacman -S archlinuxcn-keyring && pacman -S yaourt

这里坚持用 yaourt 的原因有两个,一是在 root 环境下使用不报错(主要是需要彩色显示),二是可以显示版本更新还是编译更新。

4.4. 安装常用软件

4.4.1. 先搭建好常用环境

1
2
pacman -Syu
pacman -S zsh git subversion lua openssh

4.4.2. 安装 zinit(原 zplugin)

1
2
git clone https://github.com/zdharma/zinit.git ~/.zinit/bin
echo "source ~/.zinit/bin/zinit.zsh" > ~/.zshrc

不得不再次吐槽一下 git clone 的速度。。。

4.4.3. 安装 powerlevel10k

1
echo "zinit ice depth=1; zinit light romkatv/powerlevel10k" >> ~/.zshrc

4.4.4. 启用 zsh(终于有了一个好看的终端)

1
zsh

然后就可以导入之前的 .zshrc 了。

4.4.5. 切换默认终端至 zsh

1
chsh -s /bin/zsh

4.4.6. 安装 vim-plug

1
2
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

导入之前的 .vimrc 文件,并执行命令:

1
vim +PlugInstall +qall

4.4.7. 安装常用软件

1
2
3
4
5
6
7
pacman -S base-devel which diffutils man openssh tree p7zip bc wget \
htop strace most \
yarn npm python-pip \
zathura-ps zathura-pdf-poppler \
feh imagemagick mediainfo ffmpeg \
opencc dos2unix jq net-tools bind-tools nload
yarn global add hexo-cli nali-cli http-server

4.4.8. 安装花哨软件

1
pacman -S fd exa bat ripgrep percol

4.4.9. 安装常用字体

1
pacman -S adobe-source-code-pro-fonts adobe-source-sans-pro-fonts adobe-source-serif-pro-fonts adobe-source-han-sans-cn-fonts adobe-source-han-serif-cn-fonts tex-gyre-fonts ttf-dejavu wqy-zenhei wqy-microhei ttf-sarasa-gothic

4.4.10. 安装专业软件

1
2
3
pacman -S texlive-most
pacman -S texlive-langchinese biber asymptote qtikz \
sagemath jupyter

注意:安装 texlive-fontextra 会爆内存!!!
反正我的8G内存被爆了,16G没有问题)

4.4.11. 安装 X 软件

1
pacman -S tk gvim

~/.zshrc 中添加:

1
2
export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0.0
export LIBGL_ALWAYS_INDIRECT=1

注意对于 WSL 2,VcXsrv 启动时需要选中 Disable access control 的选项,或者加上 -ac 的参数。

20200922更新:如果是普通用户而且防火墙开启的话,在打开 VcXsrc 之后会弹出防火墙设置的弹窗。注意这里一定要把【公用网络】勾选上,因为 WSL2 创建 vEthernet(WSL) 默认识别为公用网络。

5. 添加新用户

1
2
3
4
groupadd AAA
useradd XXX -g AAA -G wheel -m -N
pacman -S sudo
echo "wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/wheel

其实我一直是使用 root 账户,只有在需要 makepkg 的时候才切换到普通用户。