WSL2多开Ubuntu实例

最近在捣鼓软路由和OpenWrt,经常需要开一个Linux环境来交叉编译各种固件(有一说一,挺折腾人的 ::>_<:: 不过也挺锻炼人的)。虽然说可以创建个linux虚拟机或者docker容器来编译,但个人觉得这些方案太“重”了,正好巨硬整了个WSL2(Windows Subsystem for Linux)这么个好东西,那当然是要充分利用起来啦(。・∀・)ノ

然而目前的WSL并不支持为一个发行版(本文以Ubuntu为例)启动多个示例(也就是多开),所以目前我们只能手动配置。TAT

下载 Ubuntu WSL2 最新镜像

Ubuntu Server 22.04 LTS (Jammy Jellyfish) 最新版本(每日构建)可以在cloud-images.ubuntu.com下载。但考虑到国内网络环境,也可以通过清华大学开源软件镜像站(mirrors.tuna.tsinghua.edu.cn)(或者别的国内镜像站)下载。

参考下载命令:

1
Invoke-WebRequest -Uri "https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cloud-images/wsl/jammy/current/ubuntu-jammy-wsl-amd64-wsl.rootfs.tar.gz" -OutFile "ubuntu-jammy-wsl-amd64-wsl.rootfs.tar.gz"

导入到WSL2中

导入命令如下所示

1
wsl --import <DistroName> <InstallLocation> <InstallTarFile>

其中[1]

  • <DistroName>:实例名称
  • <InstallLocation>:实例安装位置
  • <InstallTarFile>:安装文件位置

以下为命令示例:

1
wsl --import Ubuntu-Example  .\Ubuntu-Example\ .\ubuntu-jammy-wsl-amd64-wsl.rootfs.tar.gz

修改实例名和安装位置就可以实现多开辣!

导入成功后可以通过以下命令进入创建好的Ubuntu实例:

1
wsl -d <DistroName>

配置普通用户账户

在容器中运行以下命令[2]

1
2
3
4
5
6
7
read -p "Please enter username: " NEW_USER
useradd -m -G sudo -s /bin/bash "$NEW_USER"
passwd "$NEW_USER"
tee /etc/wsl.conf <<_EOF
[user]
default=${NEW_USER}
_EOF

然后退出WSL2容器(Ctrl+D),在PowerShell中运行以下命令:

1
2
wsl --terminate <Distribution Name>
wsl -d <Distribution Name>

现在便是以普通用户进行操作啦~


  1. https://learn.microsoft.com/en-us/windows/wsl/use-custom-distro ↩︎

  2. https://cloudbytes.dev/snippets/how-to-install-multiple-instances-of-ubuntu-in-wsl2 ↩︎