Skip to content

WSL 2

安装

参考官方文档的 旧版 WSL 的手动安装步骤。 这样可以选择需要安装的组件和 linux 版本,同时出现安装问题的可能性也更低。

导入和导出

将当前的发行版导出到 tar 文件

wsl --export <Distribution Name> <FileName>

将备份的 tar 文件恢复到发行版,会在 InstallLocation 位置生成硬盘映像文件。

wsl --import <Distribution Name> <InstallLocation> <FileName>

设置过程

记录设置 wsl 的过程, 然后导出为镜像, 方便一键导入.

  1. 更新软件 sudo apt update && sudo apt upgrade -y
  2. 安装 oh my zsh
  3. 使用 vscode 打开 wsl
  4. 删除 bash 和无关内容 rm .bash* .profile .zshrc.pre-oh-my-zsh .motd_shown
  5. git 设置
    • ssh key 生成 ssh-keygen -t ed25519 -C "hi@hyoban.cc" 记得加到需要登入的位置(如果已有直接复制,修改权限即可)
    • git config --global user.name "hyoban"
    • git config --global user.email "hi@hyoban.cc"
    • git config --global init.defaultBranch main
    • git config --global core.autocrlf true
    • 安装 GitHub cli 便于参与开源项目
    • gh auth login(也可以复制此前的 .config/gh)
  6. node 环境
    • nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
      • nvm install --lts
      • corepack enable
      • npm i --location=global @antfu/ni
    • npm login 登录 npm(也可以复制此前的 .npmrc)
  7. golang 环境
    • 访问 golang 官网 了解最新版本
    • wget https://go.dev/dl/go1.19.5.linux-amd64.tar.gz
    • sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.19.5.linux-amd64.tar.gz
    • echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.zshrc
    • source ~/.zshrc
    • sudo apt install -y gcc
    • 在 vscode 中安装 Go 插件

wsl 配置

默认登录用户

导入的发行版会以 root 用户作为登录名,这不是我们想要的。 具体讨论请看 Impossible to set default user of distribution installed via wsl --import on 1903。 我们不能以对导入的发行版以名称作为命令,再参考官方文档中更改发行版的默认用户的方式进行配置。

解决办法如下,以 root 用户登录之后,新建 /etc/wsl.conf 文件,填入以下内容就可以以指定的用户名登录。

[user]
default=hyoban

wsl.conf 配置文件针对单一分发版,如果想要创建通用的配置文件,请在用户目录下创建 .wslconfig 文件。 不过需要注意,它仅仅适用于 wsl2 版本。

systemd

参考 Systemd support is now available in WSL!,在 /etc/wsl.conf 中填上如下内容:

[boot]
systemd=true

如此,像 nginx 之类的服务可以在 wsl 开启时自动启动,安装使用 docker 的体验也变得更加友好。

WARNING

在安装完,请务必使用 wsl --update 更新到最新版本,否则 systemd 还未支持。

Docker

你可以参照官方说明直接安装。

sh
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

# Got permission denied ... /var/run/docker.sock: connect: permission denied
sudo usermod -aG docker $USER

对于 Docker Desktop 的使用,我们完全可以使用 WSL 的环境。 只是对于 128G 主硬盘的我,时刻需要关系硬盘空间的问题,参考 将 Docker Desktop(WSL 2 方式)文件存储移出系统盘

阅读更多