在WSL2中安装多个Ubuntu教程

文章目录

  • 前言
  • 一、前期准备
    • 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安装命令如下:

  1. 新建一个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
  1. 安装Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. 测试
sudo docker run hello-world

Docker安装完成之后,我们需要在Ubuntu20.04中再启动一个Ubuntu16.04的Docker容器:

  1. 拉取Docker镜像
sudo docker pull ubuntu:16.04
  1. 创建容器
 docker run -it ubuntu:16.04 /bin/bash
  1. 检查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中。

  1. 导出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 >

  1. 打开 PowerShell,并确保已创建一个要存储发行版的文件夹。
cd C:\temp
mkdir E:\wslDistroStorage\ubuntu1604
  1. 使用命令 wsl --import < DistroName> < InstallLocation> < InstallTarFile> 导入 tar 文件。
 wsl --import Ubuntu-16.04 E:\wslDistroStorage\ubuntu1604 .\ubuntu1604.tar
  1. 检查结果
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. 设置默认用户

  1. 进入Ubuntu-16.04系统
PS C:\temp> wsl -d Ubuntu-16.04

安装sudo

apt-get update
apt-get install sudo
  1. 设置用户账户
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
  1. 设定默认用户,将 Ubuntu 实例默认登录用户从 root 用户替换为新创建的用户
tee /etc/wsl.conf <<_EOF
[user]
default=${NEW_USER}
_EOF

在这里插入图片描述

  1. 使用新用户登录

在这里插入图片描述
红框部分为关键操作,重启Ubuntu-16.04,实现用户从root切换到ztl。

  1. 设置su密码
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中导入才行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/452272.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

指针篇章-(5)+最终思维导图

sizeof和strlen的对比 sizeof不是函数 侧面证明sizeof不是函数 如果是函数 应该需要有括号 不能落下来 strlen 只针对字符串 包含头文件 string.h 并且这个是个函数 随机数值 sizeof里面有表达式的话 表达式里面是不参与计算的 下面的s求出的是4 就是因为是不参与计算的 不…

03_渲染进程调用node

我们先创建一个文件夹及文件&#xff0c;并且在 html 引入 JS 文件。 在 render.js 里面输入以下内容&#xff1a; let fs require(fs) // let是在当前代码块有效console.log(fs) // 将fs对象的内容打印到控制台供调试和查看 fs 模块&#xff1a;对文件系统进行操作&#xf…

七月论文审稿GPT第3.1版和第3.2版:通过paper-review数据集分别微调Mistral、gemma

前言 我司第二项目组一直在迭代论文审稿GPT(对应的第二项目组成员除我之外&#xff0c;包括&#xff1a;阿荀、阿李、鸿飞、文弱等人)&#xff0c;比如 七月论文审稿GPT第1版&#xff1a;通过3万多篇paper和10多万的review数据微调RWKV七月论文审稿GPT第2版&#xff1a;用一万…

使用Flask快速搭建轻量级Web应用【第127篇—Flask】

使用Flask快速搭建轻量级Web应用 在Web开发领域&#xff0c;选择适合项目需求的框架至关重要。Flask&#xff0c;一个轻量级的Python Web框架&#xff0c;以其简洁、灵活和易扩展的特性而备受开发者青睐。本文将介绍如何使用Flask迅速搭建一个轻量级的Web应用&#xff0c;并通过…

FreeRTOS学习笔记-基于stm32(5)列表和列表项

一、列表与列表项简介 列表是FreeRTOS中的一种数据结构&#xff0c;类似双向循环链表。用来跟踪FreeRTOS中的任务。列表项就是存放在列表中的项目。 二、列表 列表结构体&#xff1a; typedef struct xLIST {listFIRST_LIST_INTEGRITY_CHECK_VALUE //校验值c…

Unity 显示MeshRenderer的渲染层级

Unity 显示MeshRenderer的渲染层级 前言源码MeshRendererInspectorSkinnedMeshRendererInspector 参考 前言 Mesh Renderer和Skinned Mesh Renderer组件默认不显示Order&#xff0c;找了个工具显示一下。 源码 下面两个代码放入Editor文件夹中 MeshRendererInspector Me…

ChatGPT Prompt 的原理总结

ChatGPT Prompt 的原理总结 ChatGPT Prompt 是 OpenAI 开发的大型语言模型 ChatGPT 的一种使用方式。通过 Prompt&#xff0c;用户可以引导 ChatGPT 生成特定内容&#xff0c;例如回答问题、写故事、写代码等等。 Prompt 的原理 Prompt 本质上是一段文本&#xff0c;它告诉 C…

人工智能在增强数据安全方面的作用

近年来&#xff0c;人工智能&#xff08;AI&#xff09;的力量已被证明是无与伦比的。它不再是我们想象的主题。人工智能已经成为现实&#xff0c;并且越来越清楚地表明它可以让世界变得更美好。但人工智能能帮助我们增强数据安全吗&#xff1f; 由于技术的日益普及&#xff0…

Java JUC 笔记(2)

Java JUC 笔记&#xff08;2&#xff09; 锁框架 JDK5以后增加了Lock接口用来实现锁功能&#xff0c;其提供了与synchronized类似的同步功能&#xff0c;但是在使用时手动的获取和释放锁 Lock和Condition锁 这里的锁与synchronized锁不太一样&#xff0c;我们可以认为是Loc…

递归与递推

递归 92. 递归实现指数型枚举 - AcWing题库 import java.util.*;public class Main{static int N 16, n;static int[] st new int[N];//st[x] 等于0表示还没考虑到它&#xff0c;等于1表示选它&#xff0c;等于2表示不选它public static void dfs(int u){if(u > n){for…

蓝桥·算法双周赛|第七场分级赛——小白入门赛

&#x1f525;博客介绍&#xff1a; 27dCnc &#x1f3a5;系列专栏&#xff1a; <<数据结构与算法>> << 算法入门>> << C项目>> &#x1f3a5; 当前专栏: << 算法入门>> 专题 : 数据结构帮助小白快速入门算法 &#x1f4…

蓝鲸作业平台升级openssh执行方案分享

本文来自腾讯蓝鲸智云社区用户&#xff1a;AK47 蓝鲸的运维系统在我们单位使用已经快四个年头了&#xff0c;从刚开始的5到现在最新的7.1都有部署、测试、验证和使用。在实际的使用过程中&#xff0c;给我们运维提供了非常大的帮助。其中有一个场景分享给大家。这个场景是关于o…

NVidia NX 中 ROS serial软件包的安装

自己装的ROS是noetic版本&#xff0c;受限于网络&#xff0c;直接用命令安装串口包不行。于是手动安装了一次。 1 下载源码 git clone https://github.com/wjwwood/serial.git 或者直接在浏览器里面输入 https://github.com/wjwwood/serial.git 2 解压 然后在serial&#xf…

LeetCode108题:将有序数组转换为二叉搜索树(python3)

一个容易想到的思路&#xff1a;使用 nums 中最靠近中心的位置作为整棵 BST 的根节点&#xff0c;确保左右子树节点数量平衡。随后递归构造 nums 中下标范围为 [0,mid−1]作为左子树&#xff0c;递归构造 nums 中下标范围为 [mid1,n−1]作为右子树。 # Definition for a binar…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的田间杂草检测系统(深度学习模型+UI界面+Python代码+训练数据集)

摘要&#xff1a;开发用于田间杂草识别的系统对提高农业运营效率和提升作物产出至关重要。本篇文章详尽阐述了如何应用深度学习技术开发一个用于田间杂草识别的系统&#xff0c;并附上了完备的代码实现。该系统基于先进的YOLOv8算法&#xff0c;并对比了YOLOv7、YOLOv6、YOLOv5…

保护数字前沿:有效的威胁暴露管理

人工智能技术正在从根本上改变网络安全领域的方向。仅 2023 年&#xff0c;全球企业预计将在人工智能上花费 1027.8 亿美元&#xff0c;以阻止网络安全威胁。 人工智能 (AI)在增强网络安全措施方面发挥着关键作用&#xff0c;因为它能够快速分析大量数据并识别可能表明潜在威胁…

Weblogic 常规渗透测试环境

测试环境 本环境模拟了一个真实的weblogic环境&#xff0c;其后台存在一个弱口令&#xff0c;并且前台存在任意文件读取漏洞。分别通过这两种漏洞&#xff0c;模拟对weblogic场景的渗透。 Weblogic版本&#xff1a;10.3.6(11g) Java版本&#xff1a;1.6 弱口令 环境启动后…

读取Excel的封装方法

步骤&#xff1a; 1、我们需要将得到的结果存储到list集合中&#xff0c;所以实例化一个ArrayList类 List<CaseInfo> list new ArrayList<CaseInfo>();//实例化一个类 常规下在list里添加内容即可 不再是字符串类&#xff0c;是caseinfo用例 list.add里添加casei…

【位运算】【脑筋急转弯】2749. 得到整数零需要执行的最少操作数

作者推荐 视频算法专题 本文涉及知识点 2749. 得到整数零需要执行的最少操作数 给你两个整数&#xff1a;num1 和 num2 。 在一步操作中&#xff0c;你需要从范围 [0, 60] 中选出一个整数 i &#xff0c;并从 num1 减去 2i num2 。 请你计算&#xff0c;要想使 num1 等于 …

常用的gpt网站

ChatGPT是一款基于人工智能技术的对话型AI助手&#xff0c;能够进行自然语言交互并提供个性化的对话服务。通过先进的深度学习模型&#xff0c;ChatGPT能够理解用户输入的文本&#xff0c;并生成有逻辑、连贯性的回复。它可以回答各种问题、提供建议、分享知识&#xff0c;还能…