通过 wsl2 安装 Arch Linux

📄官方文档 👉 links

准备

  • bios 打开 virtu

  • windows 功能打开 虚拟机平台

    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

安装

wsl -l -o # 查询可以安装的发行版
# wsl --install -d Ubuntu-20.04 # 安装 Ubuntu

由于 wsl -l -o 没有输出 Arch 发行版,因此需要在微软商店中下载,本文下载的是 WSL Arch Linux

安装完成后,点击开始菜单中新增的 Linux 图标,或者在终端中输入 wsl,即可进入。

sudo passwd # 设置管理员密码
wsl --set-default-version 2 # 使用 wsl2

下载 WSL2 内核,解决报错:WslRegisterDistribution failed with error: 0x800701bc


安装成功后,使用 neofetch 展示一波 🎉
neofetch 安装命令为 sudo pacman -S neofetch

开启 SSH

打开 SSH 配置文件,修改以下内容

# /etc/ssh/sshd_config
Port 10022 # 为了和宿主机22端口区分
PasswordAuthentication yes
PermitRootLogin yes

重启 SSH 服务

sudo systemctl enable ssh
sudo systemctl restart ssh

开启 SSH 服务后,可以通过 ssh user@localhost -p 10022 登录,localhost 也可替换为 wsl 的 ip。

安装 zsh

sudo pacman -S zsh

使用 chsh -lcat /etc/shells 查看可使用的 shell

$ chsh -l
/bin/bash
/bin/rbash
/usr/bin/git-shell
/bin/zsh
/usr/bin/zsh

切换 shell

chsh -s /bin/zsh

重新登录 wsl ,使用 echo $SHELL 查看当前 shell

安装 oh-my-zsh

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

端口转发

目前 WSL2 已经支持原生自定义网卡,该方案需要 23H2 版本的 Windows 系统才能使用。
不满足系统要求的话,则继续使用端口转发的方案。

在宿主机与 WSL 之间添加端口转发,让局域网中的其他设备可以 SSH 到 WSL。

设置端口转发

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=11122 connectaddress=172.29.20.46 connectport=10022

listenport 为宿主机监听端口,也是局域网内其他主机访问 WSL 的端口
connectaddress 为 WSL 的 IP
connectport 为 WSL 的 ssh 端口

查看端口转发配置

netsh interface portproxy show all

开放防火墙入站端口

netsh advfirewall firewall add rule name="WSL2" dir=in action=allow protocol=TCP localport=11122

完成这一步后,局域网内的设备就可以通过 11122 端口访问了。

ssh user@<宿主机ip> -p 11122

设置静态 IP

WSL2每次启动的时候会检查创建一个WSL交换机,随机分配 IP。
为了获得静态 IP ,需要修改以下配置。

# /etc/resolv.conf
nameserver 172.29.16.1 # WSL 交换机ip,可在宿主机终端使用 ipconfig 获得
nameserver 114.114.114.114
# /etc/wsl.conf
[boot]
systemd=true

[network]
generateResolvConf = false

开发环境

使用 VSCode 配合 Remote - SSH 插件可以很方便的连接 WSL,借助强大的 VSCode,你可以轻松地在 WSL 中开发你的项目。

谈谈感受

ArchWSL 啥都好,就是不能搞深度学习。

References

[1] hez2010, 给 WSL2 设置静态 IP 地址
[2] 你们EE出了个傻子, 局域网ssh连接wsl2配置与问题一站式解决(connection refused)
[3] Ryan Shang, WSL2设置静态IP


通过 wsl2 安装 Arch Linux
http://guoguo.host/blog/p/7fb27f81.html
作者
Guoguo
发布于
2022年7月25日
许可协议