文章目录
- 前言
- 一、前期准备
- 1、WSL安装
- 2、Docker安装
- 二、安装第二个Ubuntu系统
- 1.切换为WSL2
- 2.获取Ubuntu16.04的tar文件
- 从容器中导出tar
- 3. 将tar文件导入WSL
- 4. 设置默认用户
- 总结
前言
适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 的一项功能,可用于在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双引导。通常WSL默认仅安装一个默认的Ubuntu系统,但是在实际使用过程中,我们经常需要多个Ubuntu系统
,因此本教程将详细介绍在WSL2中安装多个Ubuntu,希望对大家有所帮助。
一、前期准备
1、WSL安装
wsl --install -d Ubuntu-18.04
详细安装过程请参考:WSL install官方链接
wsl --set-version Ubuntu-18.04 2
2、Docker安装
建议直接安装Docker-Desktop
,不需要命令行操作,一步到位。
详细安装教程参考:Docker官网
Docker测试:
docker --version
二、安装第二个Ubuntu系统
下面介绍通过使用tar文件
导入Ubuntu16.04系统
1.切换为WSL2
#将 WSL 2 设置为默认版本
wsl --set-default-version 2
#将 Ubuntu 20.04 发行版设置为使用 WSL 2
wsl --set-version Ubuntu-20.04 2
2.获取Ubuntu16.04的tar文件
首先,需要获取一个 tar 文件,其中包含发行版的所有 Linux 二进制文件。
在本示例中,使用 WSL 发行版中的 Docker 来获取 Ubuntu16.04 的 tar 文件。
从容器中导出tar
进入到先前安装好的Ubuntu20.04系统,并在子系统中再安装一个Docker
,Docker安装命令如下:
- 新建一个build.sh,设置 Docker 的apt存储库
# build.sh
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc# Add the repository to Apt sources:
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
#运行build.sh
sudo sh ./build.sh
- 安装Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 测试
sudo docker run hello-world
Docker安装完成之后,我们需要在Ubuntu20.04中再启动
一个Ubuntu16.04的Docker容器:
- 拉取Docker镜像
sudo docker pull ubuntu:16.04
- 创建容器
docker run -it ubuntu:16.04 /bin/bash
- 检查docker容器
luu@DELL:/mnt/c/Users/ding$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2ed6c4e7cbe7 ubuntu:16.04 "/bin/bash" About a minute ago Exited (0) 16 seconds ago angry_dijkstra
c5743d46ac51 centos "bash ls /" 48 minutes ago Exited (0) 48 minutes ago wizardly_carson
注意:这里的Ubuntu16.04必须是在Ubuntu20.04的子系统创建,而不是在Window系统中创建,这个
十分重要!!
不然导出的tar文件无法导入到WSL中。
- 导出tar文件
luu@DELL:/mnt/c/Users/ding$ dockerContainerID=$(docker container ls -a | grep -i ubuntu:16.04 | awk '{print $1}')
luu@DELL:/mnt/c/Users/ding$ docker export $dockerContainerID > /mnt/c/temp/ubuntu1604.tar
注意:需要在C盘新建一个空的temp/**.tar文件。
3. 将tar文件导入WSL
准备好 tar 文件后,可使用以下命令导入它:wsl --import < Distro > < InstallLocation > < FileName >
。
- 打开 PowerShell,并确保已创建一个要存储发行版的文件夹。
cd C:\temp
mkdir E:\wslDistroStorage\ubuntu1604
- 使用命令 wsl --import < DistroName> < InstallLocation> < InstallTarFile> 导入 tar 文件。
wsl --import Ubuntu-16.04 E:\wslDistroStorage\ubuntu1604 .\ubuntu1604.tar
- 检查结果
PS C:\temp> wsl --import Ubuntu-16.04 E:\wslDistroStorage\ubuntu1604 .\ubuntu1604.tar
正在导入,这可能需要几分钟时间。
操作成功完成。
PS C:\temp> wsl -l -vNAME STATE VERSION
* Ubuntu-18.04 Running 2CentOS Stopped 2docker-desktop-data Running 2docker-desktop Running 2Ubuntu-16.04 Stopped 2
4. 设置默认用户
- 进入Ubuntu-16.04系统
PS C:\temp> wsl -d Ubuntu-16.04
- 设置用户账户
root@DELL:/mnt/c/temp# NEW_USER=ztl
root@DELL:/mnt/c/temp# useradd -m -G sudo -s /bin/bash "$NEW_USER"
root@DELL:/mnt/c/temp# passwd "$NEW_USER"
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
- 设定默认用户,将 Ubuntu 实例默认登录用户从 root 用户替换为新创建的用户
tee /etc/wsl.conf <<_EOF
[user]
default=${NEW_USER}
_EOF
- 使用新用户登录
红框部分为关键操作,重启Ubuntu-16.04,实现用户从root切换到ztl。
总结
之前一直出现导入失败的情况,来回折腾了好几次,后面发现问题出在了系统切换上,不能从Window上导出Ubuntu16.04,必须进入到一个WSL子系统,然后从子系统导出相应的tar文件,最后再在Window的WSL中导入才行。