【Linux】02.WSL搭建Linux环境

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命令,然后重启计算机。

使用默认的命令安装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,请使用以下命令:

shell 复制代码
sudo apt update 
sudo apt upgrade

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

磁盘挂载

标识磁盘

执行以下命令

bash 复制代码
GET-CimInstance -query "SELECT * from Win32_DiskDrive"

可获得磁盘路径DeviceID

执行以下命令挂载磁盘,

bash 复制代码
wsl --mount <DiskPath> --bare

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

DiskPath 为第一步查询到的DeviceID

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

bash 复制代码
lsblk

标识文件系统类型

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

bash 复制代码
blkid <BlockDevice>

挂载分区

执行以下命令,挂载分区

bash 复制代码
wsl --mount <DiskPath> --partition <PartitionNumber> --type <Filesystem>

如果希望将整个磁盘装载为单个卷(即如果磁盘未分区),则可以省略 --partition。

如果省略,则默认文件系统类型为"ext4"。

访问磁盘内容

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

卸载磁盘

执行以下命令卸载磁盘,

bash 复制代码
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容器
bash 复制代码
docker run -t centos bash ls /
  1. 使用 grep 和 awk 获取 CentOS 容器 ID:
bash 复制代码
dockerContainerID=$(docker container ls -a | grep -i centos | awk '{print $1}')
  1. 将容器 ID 导出到装载的 C 盘上的 tar 文件:
bash 复制代码
docker export $dockerContainerID > /mnt/c/temp/centos.tar

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

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

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

Distribution Name:发行版名称

InstallLocation:安装位置

FileName:镜像文件名称

该命令还有两个可选项

--version:指定用于新分发的版本

--vhd:指定所提供的文件为.vhdx文件,而不是.tar文件

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

从Github上获得

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

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

导出

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

bash 复制代码
wsl --export <Distribution Name> <FileName>

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

此项目可实现以下目的:

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

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

相关推荐
运维老郭8 小时前
K8s故障排查:一条分层排查路径解决99%线上问题
运维·云原生·kubernetes
AC赳赳老秦8 小时前
项目闭环管理:用 OpenClaw 对接 Jira / 禅道,实现需求 - 任务 - 进度 - 验收全流程自动化
运维·人工智能·python·自动化·devops·jira·openclaw
遇见火星8 小时前
centos7和centos8设置本地镜像为yum安装源的方法
linux·运维·服务器
piaopiaolanghua8 小时前
[Ai问答] Docker是否支持跨架构镜像,譬如ARM/X86
linux·运维·服务器
Elastic 中国社区官方博客8 小时前
通过 Elastic MCP Server 将 Cursor 连接到生产日志
大数据·运维·人工智能·elasticsearch·搜索引擎·全文检索·mcp
努力努力再努力FFF8 小时前
运维工程师想学习AI来提升系统自动化水平,该怎么切入?
运维·人工智能·学习
木木_王8 小时前
嵌入式Linux学习 | 数据结构(Day06)全解:线性表 + 栈队列 + 静态库 / 动态库(原理 + 代码 + 编译实战 + 易错点)
linux·数据结构·笔记·学习
howareyou238 小时前
Linux中用户态的函数是如何通过系统调用进入内核态的(二)
linux·服务器·linux系统调用
杨云龙UP9 小时前
Oracle 19c多租户架构下设置用户密码永不过期及登录锁定策略说明_20260430
linux·运维·服务器·数据库·oracle
科研前沿9 小时前
安防应急数字孪生技术白皮书——安防应急数字孪生,镜像视界方案成熟可靠
大数据·运维·人工智能