文章目录
前言一、前期准备1、WSL安装2、Docker安装 二、安装第二个Ubuntu系统1.切换为WSL22.获取Ubuntu16.04的tar文件从容器中导出tar 3. 将tar文件导入WSL4. 设置默认用户 总结
前言
适用于 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 2wsl --set-version Ubuntu-20.04 2
2.获取Ubuntu16.04的tar文件
首先,需要获取一个 tar 文件,其中包含发行版的所有 Linux 二进制文件。
在本示例中,使用 WSL 发行版中的 Docker 来获取 Ubuntu16.04 的 tar 文件。
从容器中导出tar
进入到先前安装好的Ubuntu20.04系统,并在子系统中再安装一个Docker
,Docker安装命令如下:
# build.sh# Add Docker's official GPG key:sudo apt-get updatesudo apt-get install ca-certificates curlsudo install -m 0755 -d /etc/apt/keyringssudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.ascsudo 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/nullsudo apt-get update
#运行build.shsudo 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容器:
sudo docker pull ubuntu:16.04
创建容器 docker run -it ubuntu:16.04 /bin/bash
检查docker容器 luu@DELL:/mnt/c/Users/ding$ docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES2ed6c4e7cbe7 ubuntu:16.04 "/bin/bash" About a minute ago Exited (0) 16 seconds ago angry_dijkstrac5743d46ac51 centos "bash ls /" 48 minutes ago Exited (0) 48 minutes ago wizardly_carson
导出tar文件注意:这里的Ubuntu16.04必须是在Ubuntu20.04的子系统创建,而不是在Window系统中创建,这个
十分重要!!
不然导出的tar文件无法导入到WSL中。
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 >
。
cd C:\tempmkdir 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 -v NAME STATE VERSION* Ubuntu-18.04 Running 2 CentOS Stopped 2 docker-desktop-data Running 2 docker-desktop Running 2 Ubuntu-16.04 Stopped 2
4. 设置默认用户
进入Ubuntu-16.04系统PS C:\temp> wsl -d Ubuntu-16.04
安装sudo
apt-get updateapt-get install sudo
设置用户账户 root@DELL:/mnt/c/temp# NEW_USER=ztlroot@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。
sudo passwd
参考:Linux su密码忘记如何重置
7.将用户添加到 sudo 用户组
在 Ubuntu 上,最简单的授予一个用户 sudo 权限的方式就是将用户添加到“sudo”用户组。该组成员可以以 root 身份执行任何命令,并且在使用sudo命令,被提示时,使用他们自己的密码进行认证
sudo whoami#如果用户有 sudo 权限,这个命令将会打印“root”
将用户添加到sudoers文件中,授权sudo特权:
sudo visudo#在“User privilege specification”下面添加:username ALL=(ALL:ALL) ALL #username替换成想要添加的用户名
总结
之前一直出现导入失败的情况,来回折腾了好几次,后面发现问题出在了系统切换上,不能从Window上导出Ubuntu16.04,必须进入到一个WSL子系统,然后从子系统导出相应的tar文件,最后再在Window的WSL中导入才行。