当前位置: 首页 > news >正文

WSL使用技巧 / 虚拟机对比

WSL使用技巧 / 虚拟机对比

  • 前言
  • 虚拟机比较
  • VMware使用技巧
  • WSL使用技巧
    • 官方文档
    • 工具
    • 安装WSL
    • 基本命令
    • 运行命令
    • 关闭卸载
    • 磁盘管理
    • 导入导出
    • 指定安装路径

前言

本文介绍了VMware和WSL的区别,并详细介绍了WSL的使用方法和技巧。

虚拟机比较

VMware
比较灵活,拥有图形化界面,另外也可以访问USB设备,大部分VM软件的图形界面性能比Hyper-V好。

WSL 1
WSL 1用的是Windows内核模拟的各种系统接口。虽然可以运行大部分Linux应用,但还是有不少依赖于内核的应用是无法正常运行的——例如Docker。另外WSL 1和Windows共用文件系统、网络,有些时候会比较头疼。

WSL 2
WSL 2/Docker本质上都是Hyper-V。WSL 2是一个轻量级的Hyper-V VM;Docker for Windows如果要跑Linux镜像,会安装运行一台运行Linux的Hyper-V虚拟机。

总结
若不嫌安装软件和配置操作系统麻烦,则可以使用VMware;
若只想熟悉Linux命令,不使用Docker,可以使用WSL 1;
若想使用Docker,且不想安装VMware,可以使用WSL 2。
WSL占用内存很高,且无法自动回收,需要使用wsl --shutdown命令彻底关闭WSL才能释放内存。

VMware使用技巧

略。

WSL使用技巧

官方文档

文档目录:https://learn.microsoft.com/zh-cn/windows/wsl/
安装步骤:https://learn.microsoft.com/zh-cn/windows/wsl/install
基本命令:https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands

工具

Windows Terminal
在Microsoft Store中安装Windows Terminal,如下图:
在这里插入图片描述

此终端软件可以打开多个选项卡,对Windows支持较好。可以使用此终端的PowerShell运行以下WSL命令。

安装WSL

# 安装默认发行版
wsl --install# 安装指定发行版
wsl --install <Distribution Name># 获取发行版名称的有效列表
wsl --list --online

未安装 WSL 时,选项包括:
--inbox:使用 Windows 组件(而不是 Microsoft Store)安装 WSL。 (WSL 更新将通过 Windows 更新接收,而不是通过 Microsoft Store 中推送的可用更新来接收)。
--enable-wsl1:在安装 Microsoft Store 版本的 WSL 的过程中也启用“适用于 Linux 的 Windows 子系统”可选组件,从而启用 WSL 1。
--no-distribution:安装 WSL 时不安装发行版。

安装后选项包括:
--distribution:指定要安装的 Linux 发行版。 可以通过运行 wsl --list --online 来查找可用的发行版。
--no-launch:安装 Linux 发行版,但不自动启动它。
--web-download:通过联机渠道安装,而不是使用 Microsoft Store 安装。

基本命令

列出可用的 Linux 发行版:

wsl --list --online
# or
wsl -l -o

查看可通过在线商店获得的 Linux 发行版列表。


列出已安装的 Linux 发行版:

wsl --list --verbose
# or
wsl -l -v

查看安装在 Windows 计算机上的 Linux 发行版列表,其中包括状态(发行版是正在运行还是已停止)和运行发行版的 WSL 版本(WSL 1 或 WSL 2)。可与 list 命令一起使用的其他选项包括:--all(列出所有发行版)、--running(仅列出当前正在运行的发行版)或 --quiet(仅显示发行版名称)。


将 WSL 版本设置为 1 或 2:

wsl --set-version <distribution name> <versionNumber>

若要指定运行 Linux 发行版的 WSL 版本(1 或 2),请将 替换为发行版的名称,并将 替换为 1 或 2。WSL 2 仅在 Windows 11 或 Windows 10 版本 1903、内部版本 18362 或更高版本中可用。


设置默认 WSL 版本:

wsl --set-default-version <Version>

若要将默认版本设置为 WSL 1 或 WSL 2,请将 替换为数字 1 或 2,表示对于安装新的 Linux 发行版,你希望默认使用哪个版本的 WSL。 例如,wsl --set-default-version 2。 WSL 2 仅在 Windows 11 或 Windows 10 版本 1903、内部版本 18362 或更高版本中可用。


设置默认 Linux 发行版:

wsl --set-default <Distribution Name>
# or
wsl -s <Distribution Name>

若要设置 WSL 命令将用于运行的默认 Linux 发行版,请将 替换为你首选的 Linux 发行版的名称。


更新 WSL:

wsl --update

将 WSL 版本更新到最新版本。 选项包括:
--web-download:从 GitHub 而不是 Microsoft Store 下载最新更新。


检查 WSL 状态:

wsl --status

查看有关 WSL 配置的常规信息,例如默认发行版类型、默认发行版和内核版本。


查看 WSL 版本:

wsl --version

检查有关 WSL 及其组件的版本信息。


Help 命令:

wsl --help

查看 WSL 中可用的选项和命令列表。

运行命令

运行默认的Linux发行版:

# 启动默认Linux发行版,并进入当前目录,即wsl的mnt文件夹
wsl# 启动默认Linux发行版,并进入用户主目录
wsl ~# 在wsl中进入用户主目录
cd ~

运行指定的Linux发行版:

运行指定的Linux发行版,并以指定用户登录
wsl --distribution <Distribution Name> --user <User Name>
# 简写
wsl -d <Distribution Name> -u <User Name># 进入Linux发行版后,若不知道当前用户名,可使用以下命令输出当前用户名
whoami

其中, 为 Linux 发行版的名称, 为用户名称。 若 Linux 发行版中不存在该用户,则会报错。

关闭卸载

关闭WSL,关闭所有发行版,清空内存

wsl --shutdown

立即终止所有正在运行的发行版和 WSL 2 轻量级实用工具虚拟机。 在需要重启 WSL 2 虚拟机环境的情形下,例如更改内存使用限制或更改 .wslconfig 文件,可能必须使用此命令。


关闭指定发行版:

wsl --terminate <Distribution Name>
# or
wsl -t <Distribution Name>

若要终止指定的发行版或阻止其运行,请将 替换为目标发行版的名称。


注销并卸载 WSL 发行版:

wsl --unregister <DistributionName>

如果将 替换为目标 Linux 发行版的名称,则将从 WSL卸载该发行版,与该发行版关联的所有数据、设置和软件将永久丢失。 从 Store 重新安装会安装发行版的干净副本。

例如:wsl --unregister Ubuntu 将从可用于 WSL 的发行版中删除 Ubuntu。 运行 wsl --list 将会显示它不再列出。

还可以像卸载任何其他应用商店应用程序一样卸载 Windows 计算机上的 Linux 发行版应用。 若要重新安装,请在 Microsoft Store 中找到该发行版,然后选择“启动”。

磁盘管理

装载磁盘或设备:

wsl --mount <DiskPath>

通过将 替换为物理磁盘所在的目录\文件路径,在所有 WSL2 发行版中附加和装载该磁盘。 请参阅在 WSL 2 中装载 Linux 磁盘。 选项包括:

--vhd:指定 引用虚拟硬盘。
--name:使用装入点的自定义名称装载磁盘
--bare:将磁盘附加到 WSL2,但不进行装载。
--type <Filesystem>:装载磁盘时使用的文件系统类型默认为 ext4(如果未指定)。 此命令也可输入为:wsl --mount -t <Filesystem>。可以使用 blkid <BlockDevice> 命令检测文件系统类型,例如:blkid <dev/sdb1>
--partition <Partition Number>:要装载的分区的索引号默认为整个磁盘(如果未指定)。
--options <MountOptions>:装载磁盘时,可以包括一些特定于文件系统的选项。 例如,wsl --mount -o "data-ordered"wsl --mount -o "data=writeback" 之类的 ext4 装载选项。 但是,目前仅支持特定于文件系统的选项。 不支持通用选项,例如 ro、rw 或 noatime。


卸载磁盘:

wsl --unmount <DiskPath>

卸载磁盘路径中给定的磁盘,如果未提供磁盘路径,则此命令将卸载并分离所有已装载的磁盘。

导入导出

导入和导出发行版:

# 导入
wsl --import <Distribution Name> <InstallLocation> <FileName>
# 导出
wsl --export <Distribution Name> <FileName>

将指定 tar 文件导入和导出为新的发行版。 在标准输入中,文件名可以是 -。 选项包括:

--vhd:指定导入/导出发行版应为 .vhdx 文件,而不是 tar 文件
--version:(仅导入)指定将发行版导入为 WSL 1 还是 WSL 2 发行版

指定安装路径

可通过导出再导入的方式指定WSL的安装路径,步骤如下:

查看运行子系统:通过wsl -l --running查看正在运行的子系统
终止运行:若有正在运行的子系统,则通过wsl -t <DistributionName>来终止其运行
备份系统:利用wsl --export <DistributionName> <FileName>来备份子系统,结果会得到一个tar归档文件。
假设有名为Ubuntu-20.04的子系统, 想要将结果文件保存为Ubuntu2004.tar
(同时指定其路径即为D:\wsl\Ubuntu2004.tar),则调用的命令为
wsl --export Ubuntu-20.04 D:\wsl\Ubuntu2004.tar
恢复系统:然后利用wsl --import <DistributionName> <InstallLocation> <FileName>来恢复子系统。
例如wsl --import Ubuntu D:\wsl\Ubuntu2004\ D:\wsl\Ubuntu2004.tar(将新恢复的子系统命名为Ubuntu)
修改默认登录用户:Ubuntu config --default-user <UserName>,若使用Ubuntu 20.04,则将Ubuntu替换为ubuntu2004。
注销原系统(可选):使用wsl --unregister Ubuntu-20.04注销原始子系统。

相关文章:

WSL使用技巧 / 虚拟机对比

WSL使用技巧 / 虚拟机对比 前言虚拟机比较VMware使用技巧WSL使用技巧官方文档工具安装WSL基本命令运行命令关闭卸载磁盘管理导入导出指定安装路径 前言 本文介绍了VMware和WSL的区别&#xff0c;并详细介绍了WSL的使用方法和技巧。 虚拟机比较 VMware 比较灵活&#xff0c;拥…...

vuex_cart案例

json-server使用 在目录下新建db文件夹>里面新建index.json index.json {"cart": [{"id": 100001,"name": "低帮城市休闲户外鞋天然牛皮COOLMAX纤维","price": 128,"count": 6,"thumb": "http…...

Linux系统的安装

文章目录 1 Linux介绍1.1 Linux是什么1.2 Linux的特点1.3 Linux的应用1.4 Linux的发行版本1.5 Linux的Shell 2 Linux安装2.1 安装方式2.2 什么是VMware2.3 VMware主要功能2.4 什么是CentOS2.5 VMware与CentOS与Linux的关系2.6 VMware安装CentOS的步骤 1 Linux介绍 1.1 Linux是…...

微服务设计和高并发实践

文章目录 1、微服务的设计原则1.1、服务拆分方法1.2、微服务的设计原则1.3、微服务架构 2、高并发系统的一些优化经验2.1、提高性能2.1.1、数据库优化2.1.2、使用缓存2.1.3、服务调用优化2.1.4、动静分离2.1.5、数据库读写分离 2.2、服务高可用2.2.1、限流和服务降级2.2.2、隔离…...

2023年高教社杯数学建模思路 - 案例:粒子群算法

文章目录 1 什么是粒子群算法&#xff1f;2 举个例子3 还是一个例子算法流程算法实现建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 什么是粒子群算法&#xff1f; 粒子群算法&#xff08;Pa…...

Tomcat 集群介绍

一.Tomcat 集群介绍 在实际生产环境中&#xff0c;单台 Tomcat 服务器的负载能力或者说并发能力在四五百左右。大 部分情况下随着业务增长&#xff0c;访问量的增加(并发量不止四五百)&#xff0c;单台 Tomcat 服务器是 无法承受的。这时就需要将多台 Tomcat 服务器组织起来&a…...

Windows右键添加用 IDEA 打开

1.安装IDEA时 安装时会有个选项来添加&#xff0c;如下&#xff1a; 勾选即可 2.修改注册表 安装时未勾选&#xff0c;可以把下面代码中程序路径改为自己的&#xff0c;保存为对应的 idea.reg文件&#xff0c;双击即可 Windows Registry Editor Version 5.00[HKEY_CLASSES…...

Golang 中return和defer执行先后顺序

先给出最终结论&#xff1a; 执行return语句 -> 执行defer函数 -> 函数返回 这里可能会有一个疑问&#xff0c; 执行return语句和函数返回难道不是一回事? Golang语言中函数的return不是原子操作&#xff0c;而是分为了两步&#xff1a; 返回值赋值真正函数返回 Gol…...

业务数据模拟/采集

业务数据模拟/采集 2.2 业务数据模拟 2.2.1 连接MySQL 通过MySQL可视化客户端连接数据库。2.2.2 建表语句 1&#xff09;通过SQLyog创建数据库2&#xff09;设置数据库名称为gmall&#xff0c;编码为utf-8&#xff0c;排序规则为utf8_general_ci3&#xff09;导入数据库结构脚本…...

qt day 5

实现局域网的网络聊天室功能 1>服务器代码 --------------------------------------------------------------- widget.h --------------------------------------------------------------- #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMes…...

Java设计模式之适配器模式

适配器模式&#xff08;Adapter Pattern&#xff09;是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式&#xff0c;它结合了两个独立接口的功能。 这种模式涉及到一个单一的类&#xff0c;该类负责加入独立的或不兼容的接口功能。举个真实的例子&#xff0…...

每天一个工业通信协议(3)2023.8.29 (DAP接口)

文章目录 参考文献1.DAP接口介绍2.DAP接口的2/3pin3.一种DAP接口方案应用的说明,通过两步初始化把JTAG接口变成DAP接口使用4.DAP接口的协议4.1 DAP电报的分类(只用JTAG类电报)4.2 电报格式4.3 DAP有限状态机参考文献 李婧. DAP模块验证组件系统级开发和实现[D]. 陕西:西安电…...

如何将Word转成PDF?试一下这个转换方法

Word转成PDF是现代办公中常见的需求&#xff0c;它可以确保文件的格式和内容在不同平台上保持一致&#xff0c;并且更加方便共享和打印。在这个数字化时代&#xff0c;我们经常需要将Word文档转换为PDF格式&#xff0c;无论是个人用户还是商务用户都会遇到这样的需求。那么如何…...

成都睿趣科技:现在开一家抖音小店还来得及吗

随着社交媒体的迅猛发展&#xff0c;抖音已经成为了一个全球范围内广受欢迎的社交平台。在这个短视频应用上&#xff0c;人们分享着各种各样的内容&#xff0c;从搞笑段子到美食教程&#xff0c;再到时尚搭配和手工艺品制作。随着用户数量的不断增长&#xff0c;很多人都在思考…...

原型链中:为什么Function.proto==Function.prototype?

背景: 在 JavaScript 中&#xff0c;每个函数&#xff08;包括构造函数&#xff09;都是一个对象&#xff0c;而对象都有一个 __proto__ 属性&#xff0c;指向它们的原型。当你创建一个函数时&#xff0c;JavaScript 引擎会自动为该函数创建一个原型对象&#xff0c;并将其关联…...

原生js实现轮播图及无缝滚动

我这里主要说轮播图和无缝滚动的实现思路&#xff0c;就采用最简单的轮播图了&#xff0c;当然实现的思路有很多种&#xff0c;我这也只是其中一种。 简单轮播图的大概结构是这样的&#xff0c;中间是图片&#xff0c;二边是箭头可以用来切换图片&#xff0c;下面的小圆点也可以…...

MP中的字段还可以利用函数来查询拼接sql

//根据value查询GetMapping("getTest")public List<HashMap> getTest() {QueryWrapper<TTest> queryWrapper new QueryWrapper<>();queryWrapper.eq("substr(name,1,2)","99999");List<TTest> list1 testService.list…...

【python爬虫】中央气象局预报—静态网页图像爬取练习

静态网页爬取练习 中央气象局预报简介前期准备步骤Python爬取每日预报结果—以降水为例 中央气象局预报简介 中央气象台是中国气象局&#xff08;中央气象台&#xff09;发布的七天降水预报页面。这个页面提供了未来一周内各地区的降水预报情况&#xff0c;帮助人们了解即将到来…...

数字孪生城市总体架构进一步迭代更新

经过五年来发展&#xff0c;数字孪生城市基本形成“三横四纵”的总体架构&#xff0c;“三横”为新型基础设施、智能运行中枢、孪生应用体系&#xff0c;“四纵”为组织保障体系、标准规范体系、网络安全防线、运营保障体系&#xff0c;具体如下。 数字孪生城市总体架构-来源&a…...

通过 Jetbrains GateWay实现Remote Development

本次环境准备 环境准备&#xff1a;win10、一台安装有树莓派系统的树莓派&#xff08;也可以是其他的服务器&#xff09; 第一步&#xff1a;通过官网下载JetBrains Gateway 官网地址&#xff1a;https://www.jetbrains.com/remote-development/gateway/ 第二步&#xff1a;安装…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...