【Ubuntu】使用WSL安装Ubuntu

WSL

适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 的一项功能,可用于在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双引导。 WSL 旨在为希望同时使用 Windows 和 Linux 的开发人员提供无缝高效的体验。
安装 Linux 发行版时,WSL 2 是默认发行版类型。 WSL 2 使用虚拟化技术在轻量级实用工具虚拟机 (VM) 中运行 Linux 内核。 Linux 发行版作为独立的容器在 WSL 2 托管 VM 内运行。 通过 WSL 2 运行的 Linux 发行版将共享同一网络命名空间、设备树(而非 /dev/pts)、CPU/内核/内存/交换空间、/init 二进制文件,但有自己的 PID 命名空间、装载命名空间、用户命名空间、Cgroup 命名空间和 init 进程。

安装

必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用以下命令。

  1. 安装WSL

现在,可以使用单个命令安装运行 WSL 所需的一切内容。 在管理员模式下打开 PowerShell 或 Windows 命令提示符,方法是右键单击并选择“以管理员身份运行”,输入wsl --install命令,然后重启计算机。
image.png
image.png

使用默认的命令安装WSL时,会按默认的发行版本进行安装。
如果需要安装其他版本的Linux系统,可执行wsl --install -d <DistroName>DistroName为发行版本的名称。

如果需要查看所有支持的发行版本,可以执行wsl --list --online
image.png
若需要安装其他的版本,也可执行wsl --install -d <DistroName>进行安装。
当安装了多个版本的Linux后,可通过wsl -l -v命令来查看当前已有的Linux系统,
image.png
启动时,可通过执行wsl -d <DistroName>命令或开始菜单中对应的图标直接启动。

若执行wsl则会启动默认的版本。
通过图标启动的版本会随着对话框的关闭而自动停止,所以若想虚拟机一直运行,可以通过命令行启动

需要停止虚拟机时,可以使用wsl --shutdown停止所有正在运行的服务,或使用wsl --terminate <DistroName>结束特定的版本。
需要删除虚拟机时,可以使用wsl --unregister <Distro>删除指定的服务

更新和升级

建议使用发行版的首选包管理器定期更新和升级包。 对于 Ubuntu 或 Debian,请使用以下命令:

sudo apt update 
sudo apt upgrade

Windows 不会自动更新或升级 Linux 分发版。 大多数 Linux 用户往往倾向于自行控制此任务。

磁盘挂载

标识磁盘

执行以下命令

GET-CimInstance -query "SELECT * from Win32_DiskDrive"

image.png
可获得磁盘路径DeviceID
执行以下命令挂载磁盘,

wsl --mount <DiskPath> --bare

--bare:将磁盘附加到WSL2,但不装载它。

DiskPath为第一步查询到的DeviceID

附加后,可以通过在 WSL 2 中运行以下命令来列出分区:

lsblk

标识文件系统类型

如果不知道磁盘或分区的文件系统类型,可以使用以下命令:

blkid <BlockDevice>

挂载分区

执行以下命令,挂载分区

wsl --mount <DiskPath> --partition <PartitionNumber> --type <Filesystem>

如果希望将整个磁盘装载为单个卷(即如果磁盘未分区),则可以省略 --partition。
如果省略,则默认文件系统类型为“ext4”。

访问磁盘内容

装载后,可以通过配置值指向路径的磁盘,automount.root,默认值为/mnt/wsl

卸载磁盘

执行以下命令卸载磁盘,

wsl --unmount <DiskPath>

系统的创建会自动将所有磁盘进行挂载,并存放在/mnt文件夹下。

导入、导出版本

导入

通过使用 tar 文件导入任何 Linux 发行版,可在适用于 Linux 的 Windows 子系统 (WSL) 中使用该发行版(即使它不在 Microsoft Store 中提供)。
首先需要一个tar格式的镜像文件,官方提供了两种方式获取:

  1. 下载提供的 tar 文件。 可在 Alpine Linux 下载站点的“微型根文件系统”部分找到 Alpine 的示例。
  2. 查找 Linux 发行版容器,将实例导出为 tar 文件。 以下示例将使用 CentOS 容器演示此过程。

获取Centos的tar文件

首先需要具备两个条件:

  1. 必须在安装了运行 WSL 2 的 Linux 发行版的情况下启用 WSL。
  2. 必须安装了适用于 Windows 的 Docker Desktop,启用了 WSL 2 引擎并选中了集成,请参阅 Docker Desktop 许可协议,了解使用条款的更新。

打开发行版的命令行,按以下步骤操作:

  1. 在Docker中运行Centos容器
docker run -t centos bash ls /
  1. 使用 grep 和 awk 获取 CentOS 容器 ID:
dockerContainerID=$(docker container ls -a | grep -i centos | awk '{print $1}')
  1. 将容器 ID 导出到装载的 C 盘上的 tar 文件:
docker export $dockerContainerID > /mnt/c/temp/centos.tar

image.png
这样我们就得到了一个Centos.tar的镜像文件。

导出的目录要提前创建好,否则会找不到路径。

  1. 创建一个目录用于存放导入的系统资源,
cd C:\temp
mkdir E:\wslDistroStorage\CentOS
  1. 通过--import命令,导入镜像文件
wsl --import CentOS E:\wslDistroStorage\CentOS .\centos.tar

Distribution Name:发行版名称
InstallLocation:安装位置
FileName:镜像文件名称
该命令还有两个可选项
--version:指定用于新分发的版本
--vhd:指定所提供的文件为.vhdx文件,而不是.tar文件

  1. 执行wsl -l -v查看可用的版本

image.png

从Github上获得

除了通过以上方式获得tar格式的镜像包,还可以直接从Github上获得已做好的包

  • https://github.com/wsldl-pg/CentWSL/releases

下载完成对应版本后,解压,执行centos.exe文件即可导入该版本。

导出

执行以下命令导出版本为tar镜像

wsl --export <Distribution Name> <FileName>

使用开源 WSL 示例生成适用于 Microsoft Store 的 WSL 发行版包和/或创建用于旁加载的自定义 Linux 发行版包。 可在 GitHub 上查找发行版启动器存储库。

此项目可实现以下目的:

  • 使 Linux 发行版维护人员能够打包并提交一个在 WSL 上运行的作为 appx 的 Linux 发行版
  • 使开发人员能够创建可在其开发计算机上旁加载的自定义 Linux 发行版

参考:https://learn.microsoft.com/zh-cn/windows/wsl/

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

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

相关文章

喝多少瓶汽水

喝多少瓶汽水 题目描述&#xff1a;解法思路&#xff1a;解法代码&#xff1a;运行结果: 题目描述&#xff1a; 水已知1瓶汽水1元&#xff0c;2个空瓶可以换⼀瓶汽水&#xff0c;输入整数n&#xff08;n>0&#xff09;&#xff0c;表示n元钱&#xff0c;计算可以多少汽水&a…

Unity(第四部)新手组件

暴力解释就是官方给你的功能&#xff1b;作用的对象上面如&#xff1a; 创建一个球体&#xff0c;给这个球体加上重力 所有物体都是一个空物体&#xff0c;加上一些组件才形成了所需要的GameObject。 这是一个空物体&#xff0c;在Scene场景中没有任何外在表现&#xff0c;因为…

通过Colab部署Google最新发布的Gemma模型

Gemma的简单介绍 Gemma 是一系列轻量级、最先进的开放式模型&#xff0c;采用与创建 Gemini 模型相同的研究和技术而构建。 Gemma 由 Google DeepMind 和 Google 的其他团队开发&#xff0c;其灵感来自 Gemini&#xff0c;其名称反映了拉丁语 gemma&#xff0c;意思是“宝石”…

RT-Thread-快速入门-3-内存管理

内存管理 定义与作用 内存池管理 基础定义 内存池是一种管理固定大小内存块的机制&#xff0c;主要用于减少碎片化&#xff0c;提高内存分配效率。在 RT-Thread 中&#xff0c;内存池允许用户预分配一定数量的具有相同大小的内存块&#xff0c;应用程序可以从中快速分配和释放内…

【Java程序设计】【C00287】基于Springboot的疫情防控期间某村外出务工人员管理系统(有论文)

基于Springboot的疫情防控期间某村外出务工人员管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的疫情防控期间某村外出务工人员信息管理系统 本系统分为系统功能模块、管理员功能模块、用户功能模块、采集…

第三百六十五回

文章目录 1. 概念介绍2. 方法与信息2.1 获取方法2.2 详细信息 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取设备信息"相关的内容&#xff0c;本章回中将介绍如何获取App自身的信息.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本…

C++的vector容器->基本概念、构造函数、赋值操作、容量和大小、插入和删除、数据存取、互换容器、预留空间

#include<iostream> using namespace std; #include <vector> //vector容器构造 void printVector(vector<int>& v) { for (vector<int>::iterator it v.begin(); it ! v.end(); it) { cout << *it << " "…

Redis中的rdb和aof

Redis中的rdb和aof 持久化流程RDB机制redis.conf中rdb的配置save bgsave 自动化 rdb触发的三种方式save 命令bgsave命令自动触发 rdb的优势劣势 AOFaof原理aof配置文件重写原理aof的三种触发机制 appendfsyncaof fix工具 redis-check-aof练习aofaof的优缺点 redis是一个内存数据…

GEE必须会教程—Map工具的使用

一个星期的时间&#xff0c;跟着小编的角度&#xff0c;我们已经学习了数值、字符串、字典、列表、日期、矩阵等基本的编程数据类型&#xff0c;这些是学习任何一门编程语言都需要掌握的知识&#xff0c;还有不懂得赶紧关注小编&#xff0c;进行主页查看过往文章&#xff01;! …

[rust] 11 所有权

文章目录 一 背景二 Stack 和 Heap2.1 Stack2.2 Heap2.3 性能区别2.4 所有权和堆栈 三 所有权原则3.1 变量作用域3.2 String 类型示例 四 变量绑定背后的数据交互4.1 所有权转移4.1.1 基本类型: 拷贝, 不转移所有权4.1.2 分配在 Heap 的类型: 转移所有权 4.2 Clone(深拷贝)4.3 …

可变参数、Collections类

一、可变参数 定义&#xff1a;是一种特殊的形参&#xff0c;定义在方法、构造器的形参列表里 格式&#xff1a;数据类型...参数名称 特点&#xff1a;可以不传数据&#xff0c;也可以传一个或者多个数据给它&#xff0c;也可以传一个数组 好处&#xff1a;可以灵活接收数据…

牛客网 HJ34 图片整理

思路&#xff1a; 题目总共涉及三种类型的字符&#xff1a;大写字母&#xff0c;小写字母&#xff0c;数字 我们可以简单归纳为两类&#xff1a;字母类和数字类&#xff08;采用isalpha和isdigit来判断&#xff09;&#xff0c;创建两个数组来保存这两类字符 因为题目要求按…

图片Base64编码解码的优缺点及应用场景分析

title: 图片Base64编码解码的优缺点及应用场景分析 date: 2024/2/24 14:24:37 updated: 2024/2/24 14:24:37 tags: 图片Base64编码解码HTTP请求优化网页性能加载速度安全性缓存机制 随着互联网的迅猛发展&#xff0c;图片在网页和移动应用中的使用越来越广泛。而图片的传输和加…

【新手易错点】golang中byte和rune

1 总体区别 在Golang中&#xff0c;byte和rune是两种不同类型的数据。简单来说&#xff0c;byte是一个8位的无符号整数类型&#xff0c;而rune则是一个32位的Unicode字符类型。 Byte: 在Golang中&#xff0c;byte类型实际上是uint8的别名&#xff0c;它用来表示8位的无符号整…

【MySQL】连接查询和自连接的学习和总结

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-x4sPmqTXA4yupW1n {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

【Linux】C语言实现超级简单进度条!你不会还不知道吧?

目录 1. 基础准备&#x1f38d; 1.1 \r&&\n 1.2 缓冲区 2. 进度条1.0&#x1f940; 2.1 Process.h 2.2 Process.c 2.3 Main.c 2.4 Makefile 3.进度条 2.0&#x1faba; 3.1 Process.h 3.2 Process.c 3.3 Main.c 1. 基础准备&#x1f38d; 1.1 \r&&…

MobaXterm连接VirtualBox虚拟机

目录 1.下载MobaXterm 2.获取连接配置 3.mobaXterm连接虚拟机 4.更好的方案 1.下载MobaXterm 据说MobaXtrem是远程终端的超级全能神器,官网下载地址&#xff1a;MobaXterm free Xserver and tabbed SSH client for Windows 选择适合你的版本&#xff1a;一个是Home Editi…

apidoc接口文档的自动更新与发布

文章目录 一、概述二、环境准备三、接口文档生成1. 下载源码2. 初始化3.执行 四、文档发布五&#xff0c;配置定时运行六&#xff0c;docker运行 一、概述 最近忙于某开源项目的接口文档整理&#xff0c;采用了apidoc来整理生成接口文档。 apidoc是一个可以将源代码中的注释直…

数据结构D4作业

1.实现单向循环链表的功能 loop.c #include "loop.h" loop_p create_loop() { loop_p H(loop_p)malloc(sizeof(loop)); if(HNULL) { printf("创建失败\n"); return NULL; } H->len0; H->nextH; ret…

Android进阶之旅(第5天)

充实的一天又过去了&#xff0c;今天真的好冷啊&#xff0c;我们这里雪很大&#xff0c;早上最傻逼的决定就是穿了一个短的棉袜出来&#xff0c;漏脚踝&#xff0c;冷成傻子 接下来老规矩&#xff0c;看下昨天计划的完成情况&#xff1a; 今日计划&#xff1a; 1.过bug 2.看…
最新文章