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
注销原始子系统。