【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 才能使用以下命令。
- 安装WSL
现在,可以使用单个命令安装运行 WSL 所需的一切内容。 在管理员模式下打开 PowerShell 或 Windows 命令提示符,方法是右键单击并选择“以管理员身份运行”,输入wsl --install
命令,然后重启计算机。
使用默认的命令安装WSL时,会按默认的发行版本进行安装。
如果需要安装其他版本的Linux系统,可执行wsl --install -d <DistroName>
,DistroName
为发行版本的名称。
如果需要查看所有支持的发行版本,可以执行wsl --list --online
若需要安装其他的版本,也可执行wsl --install -d <DistroName>
进行安装。
当安装了多个版本的Linux后,可通过wsl -l -v
命令来查看当前已有的Linux系统,
启动时,可通过执行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"
可获得磁盘路径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格式的镜像文件,官方提供了两种方式获取:
- 下载提供的 tar 文件。 可在 Alpine Linux 下载站点的“微型根文件系统”部分找到 Alpine 的示例。
- 查找 Linux 发行版容器,将实例导出为 tar 文件。 以下示例将使用 CentOS 容器演示此过程。
获取Centos的tar文件
首先需要具备两个条件:
- 必须在安装了运行 WSL 2 的 Linux 发行版的情况下启用 WSL。
- 必须安装了适用于 Windows 的 Docker Desktop,启用了 WSL 2 引擎并选中了集成,请参阅 Docker Desktop 许可协议,了解使用条款的更新。
打开发行版的命令行,按以下步骤操作:
- 在Docker中运行Centos容器
docker run -t centos bash ls /
- 使用 grep 和 awk 获取 CentOS 容器 ID:
dockerContainerID=$(docker container ls -a | grep -i centos | awk '{print $1}')
- 将容器 ID 导出到装载的 C 盘上的 tar 文件:
docker export $dockerContainerID > /mnt/c/temp/centos.tar
这样我们就得到了一个Centos.tar的镜像文件。
导出的目录要提前创建好,否则会找不到路径。
- 创建一个目录用于存放导入的系统资源,
cd C:\temp
mkdir E:\wslDistroStorage\CentOS
- 通过
--import
命令,导入镜像文件
wsl --import CentOS E:\wslDistroStorage\CentOS .\centos.tar
Distribution Name
:发行版名称InstallLocation
:安装位置FileName
:镜像文件名称
该命令还有两个可选项--version
:指定用于新分发的版本--vhd
:指定所提供的文件为.vhdx
文件,而不是.tar
文件
- 执行
wsl -l -v
查看可用的版本
从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/
相关文章:

【Ubuntu】使用WSL安装Ubuntu
WSL 适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 的一项功能,可用于在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双引导。 WSL 旨在为希望同时使用 Windows 和 Linux 的开发人员提供无缝高效的体验。安装 Linux 发行版时,…...

【Node.js】自动生成 API 文档
目录 1、直接使用swagger-ui-express 2、配合swagger-jsdoc 如何在Node.js项目中使用 Swagger 来自动生成 API接口文档,使用生成方式有很多种。本文基于swagger-jsdocswagger-ui-express快速实现 1、直接使用swagger-ui-express // 方便来浏览和测试api npm i sw…...

小红书3C家电行业种草营销策略打法,纯干货
小红书作为国内种草营销的鼻祖,拥有庞大的年轻用户群体,特别是在3C家电行业,小红书的种草营销效应更是明显。据相关数据显示,小红书3C家电行业的用户关注度持续攀升,尤其是90后和00后,他们对新鲜事物的接受…...

防火墙的内容安全
目录 1. 内容安全 1.1 IAE引擎 DPI---深度包检测技术 DFI---深度流检测技术 结论(优缺点): 1.2 入侵防御(检测)(IPS) IPS的优势: 入侵检测的方法: 入侵检测的流程 签名 查看预定义签名的内容 新建自定义签名 入侵防御的检测…...

Redis 管道详解
Redis 管道 关键词:Pipeline Pipeline 简介 Redis 是一种基于 C/S 模型以及请求/响应协议的 TCP 服务。通常情况下,一个 Redis 命令的请求、响应遵循以下步骤: 客户端向服务端发送一个查询请求,并监听 Socket 返回(…...

【Redis】理论进阶篇------浅谈Redis的缓存穿透和雪崩原理
一、缓存穿透 1、概念 缓存穿透(查不到数据),是指当用户想要查询数据的时候,会先去Redis中取命中,如果Redis中没有该数据,那么就会向数据库中去查找数据。如果数据库中也没有,则该次查询结果失…...

Rocky Linux安装部署Elasticsearch(ELK日志服务器)
一、Elasticsearch的简介 Elasticsearch是一个强大的开源搜索和分析引擎,可用于实时处理和查询大量数据。它具有高性能、可扩展性和分布式特性,支持全文搜索、聚合分析、地理空间搜索等功能,是构建实时应用和大规模数据分析平台的首选工具。 …...

Linux浅学笔记04
目录 Linux实用操作 Linux系统下载软件 yum命令 apt systemctl命令 ln命令 日期和时区 IP地址 主机名 网络传输-下载和网络请求 ping命令 wget命令 curl命令 网络传输-端口 进程 ps 命令 关闭进程命令: 主机状态监控命令 磁盘信息监控:…...

【Day59】代码随想录之动态规划_647回文子串_516最长回文子序列
文章目录 动态规划理论基础动规五部曲:出现结果不正确: 1. 647回文子串2. 516最长回文子序列 动态规划理论基础 动规五部曲: 确定dp数组 下标及dp[i] 的含义。递推公式:比如斐波那契数列 dp[i] dp[i-1] dp[i-2]。初始化dp数组…...

ECLIP
denote the representation of the positive prompt produced by the momentum model as h ξ i h_{\xi}^{i} hξi 辅助信息 作者未提供代码...

STM32 +合宙1.54“ 电子墨水屏(e-paper)驱动显示示例
STM32 合宙1.54“ 电子墨水屏(e-paper)驱动显示示例 📍相关篇《Arduino框架下ESP32/ESP8266合宙1.54“ 电子墨水屏(e-paper)驱动显示示例》🔖程序是从GooDisplay品牌和微雪电子下同型号规格墨水屏的示例程序…...

使用Postman和JMeter进行signature签名
一、前言 有些接口的请求会带上sign(签名)进行请求,各接口对sign的签名内容、方式可能不一样,但一般都是从接口的入参中选择部分内容组成一个字符串,然后再进行签名操作, 将结果赋值给sign; 完整规范的接口文档都会…...

uni-app nvue vue3 setup中实现加载webview,解决nvue中获取不到webview实例的问题
注意下面的方法只能在app端使用, let wv plus.webview.create("","custom-webview",{plusrequire:"none", uni-app: none, width: 300,height:400,top:uni.getSystemInfoSync().statusBarHeight44 }) wv.loadURL("https://ww…...

IPD(集成产品开发)—核心思想
企业发展到一定阶段就会遇到管理瓶颈,IPD流程是一种高度结构化的产品开发流程,它集成了业界很多优秀的产品开发方法论,像搭积木一样的组合成一种非常有效的流程。如果我们能根据企业的规模和行业特点,对全流程的IPD进行合适的裁剪…...

uniapp android 原生插件开发-测试流程
前言 最近公司要求研究一下 uniapp 的 android 原生插件的开发,为以后的工作做准备。这篇文章记录一下自己的学习过程,也帮助一下有同样需求的同学们 : ) 一、下载安装Hbuilder X , Android studio(相关的安装配置过程网上有很多,…...
MyCAT从入门到实战(配置文件介绍)
用户(user) 配置文件位置mycat/conf/user/root.user.json。这个配置文件主要是用来配置MyCAT的登录用户 的,也就是我们连接8066这个端口的用户信息。 [rootservice bin]# cat /usr/local/mycat/conf/users/root.user.json {"dialect&q…...
【LeetCode-300】最长递增子序列(动归)
目录 题目描述 解法1:动态规划 代码实现 题目链接 题目描述 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例…...

Mysterious-GIF-攻防世界-MISC
题目简介: 下载得到gif文件,十六进制编辑器查看,发现末尾有50 4B 03 04文件头。提取后保存为zip文件。 解压该zip文件,得到temp.zip。十六进制编辑器查看temp.zip,会发现有多个文件头和文件尾。 用binwalk分离temp.zi…...

【数据结构和算法初阶(C语言)】链表-单链表(手撕详讲单链表增删查改)
目录 1.前言:顺序表回顾: 1.1顺序表的优缺点 2.主角----链表 2.1链表的概念 2.2定义一个单链表的具体实现代码方式 3.单链表对数据的管理----增删查改 3.1单链表的创建 3.2单链表的遍历实现 3.2.1利用遍历实现一个打印我们链表内容的函数的函数…...

【Go语言】Go语言中的切片
Go语言中的切片 1.切片的定义 Go语言中,切片是一个新的数据类型数据类型,与数组最大的区别在于,切片的类型中只有数据元素的类型,而没有长度: var slice []string []string{"a", "b", "c…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...