最近把 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
下,bash 和 zsh 都能正常显示中文文件名。
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.confpacman -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(终于有了一个好看的终端)
然后就可以导入之前的 .zshrc
了。
4.4.5. 切换默认终端至 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
文件,并执行命令:
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 软件
向 ~/.zshrc
中添加:
1 2 export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0.0export 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 的时候才切换到普通用户。