【Win11配置wsl2构建跨平台开发环境】

Win11配置wsl2构建跨平台开发环境

摘要

本篇博客记录了Windows 11 OS配置wsl2,创建Ubuntu子系统,并通过Docker和一些IDE构建跨平台开发环境,以便加深理解和记忆。

跨平台开发的方式

通常情况下,对于服务端应用程序,我们开发的本地系统多使用Windows操作系统,而服务端程序通常部署于Linux类的操作系统。针对这种开发环境和部署环境操作系统不同的现实情况,通常采取以下几种方式:

  • 方式一
    • 开发环境:本地Windows版本的编译器/解释器 + 本地Windows版本的中间件 + 本地Windows系统的IDE、开发工具
    • 部署/测试环境:Linux系统的软件包和解释器或Linux系统的源码和编译器 + Linux版本的中间件
    • 缺点:一些依赖和中间件对于不同操作系统版本的表现有差异,且两系统间的一些依赖项不同,可能会造成适配问题
  • 方式二
    • 开发环境:本地Linux系统的编译器/解释器 + 本地Linux系统的中间件 + 本地Linux系统的IDE、开发工具
    • 部署环境:Linux系统的软件包和解释器或Linux系统的源码和编译器 + Linux系统的中间件
    • 缺点:通常本地日用系统是Windows/Mac,要想本地用Linux系统,则需要:
      • 不使用虚拟化
        • 装Linux系统:不太方便日常使用
        • 装双系统:安装和配置过程较为繁琐
      • 使用虚拟化:虚拟机
        • 以VMWare等为代表的重量级虚拟化程序
        • 以Docker等为代表的轻量级虚拟化程序
  • 方式三
    • 开发环境:本地虚拟化的Linux系统的编译器/解释器+ 本地虚拟化的Linux系统的中间件 + 本地Windows系统的IDE、开发工具
    • 部署环境: Linux系统的软件包和解释器或Linux系统的源码和编译器 + Linux系统的中间件
    • 结合了方式一和方式二的优点,克服了其缺点。

开发方式演变的思考

从上述方式一以及方式二的演变中,可以发现:针对开发环境和部署环境通常不同的情况,我们最希望的开发方式在于:开发调试环境和部署环境保持一致,开发环境和日用系统保持一致。

"使开发调试环境和部署环境一致",是为了减少由开发环境和部署环境不一致导致的迁移问题,使得开发环境下编写的程序能够直接迁移到部署环境中,且能够正常部署和运行;"保持开发环境和日用环境一致",则是希望我们的开发环境仍然是在日用的操作系统,软件生态更好,且不会专门为了和某一系列的部署环境相一致而放弃系统通用、易用的属性。

为了达到上述矛盾的目标,边端的嵌入式系统通常使用针对不同MCU的专用IDE和编译器,采用交叉编译的方式来实现;而服务端的系统,则通过虚拟化技术,在宿主系统保持日用操作系统的基础上,创建各种与部署环境一致的虚拟化子系统,在虚拟化子系统中使用方式二进行开发。

对于今天重点讨论的服务端程序的跨平台开发中,在虚拟化方向中从VMware到Docker的转变,传达了虚拟化方式的发展方向,从部署上,环境移植越来越容易(不仅可以虚拟跨平台还可以环境打包、发布与拉取);从使用上,软件的配置越来越简单、方便。这就是结合了方式一和方式二的优点,克服了其缺点的方式三的思想。

方式三的一个实例和具体体现,就是今天要介绍的方法:"Win11配置wsl2构建Ubuntu开发环境配合Pycharm IDE"。

  • 其中Win11通过原生自带的wsl服务,实现了Windows内置的虚拟化程序,使得用户无需再专门下载和配置第三方的虚拟化应用,wsl服务使得在windows系统中的虚拟化应用更为简单、方便,且和Windows系统的兼容性更好,如简单地进行虚拟机和宿主机的网络配置以及宿主机和虚拟机之间的文件传输。
  • 新版的Pycharm等IDE也对wsl进行了友好的支持,其根本原因在于wsl服务使得Windows宿主机和其虚拟机之间的文件系统非常互通,这就使得我们可以使用日用系统的开发工具,程序的调试和编译/解释以及运行时依赖的相关环境可以直接使用程序部署时操作系统的编译器/解释器和中间件等。
  • Windows版的Docker Desktop也对wsl进行了支持,使得在wsl虚拟机中可以直接使用Windows安装的Docker服务,Windows宿主机又可以像访问本地服务一样,直接管理和监测虚拟机中的docker容器。

具体方法

Windows11专业版配置wsl2

首先,这里先强调,为什么说是Windows11专业版操作系统,而不是其他版本的呢? 因为对wsl2很多功能的支持是Windows11 专业版 OS进行的,Windows 10等操作系统虽然也支持wsl功能,但是一些wsl2的特色功能,如方便地设置虚拟机与宿主机的网络属性保持一致等只有Windows11 专业版系统支持,未来wsl2新推出的一些功能,Windows10等OS可能也将不会支持。

  • Windows开启虚拟化功能

可参考我写的这篇Windows安装Docker Desktop博客中,前置工作的部分。

这里需要强调的是:

1)在Win10 2004之前,wsl --install默认安装的是WSL 1版本,它是不需要Hyper-V的支持的,它是一个转换层,将Linux系统调用实时转换成Windows能够理解的系统调用

2)在Win 10 2004发行版之后,wsl --install默认安装的是WSL 2版本,它需要Hyper-V开启,是一个高度优化的轻量级实用工具;

3)Hyper-V是底层的、完整的虚拟化架构,给上层虚拟化程序提供底座和支持

安装具体的虚拟机(Ubuntu)

安装Docker Desktop【可选】

当WSL虚拟机中需要使用Docker时,可在宿主机下载Docker Desktop,内外互通】:参考我的博客Windows安装Docker Desktop

在WSL虚拟机中配置开发环境

git + 编译器/解释器(如python,python虚拟环境conda)+ 中间件等通过docker拉取启动

使用本地IDE配置虚拟机的编译/解释器

相关推荐
菜鸟别浪7 天前
内存管理-第1章-Linux 内核内存管理概述
linux·运维·云计算·虚拟化·内存管理
中草药z19 天前
【Linux】拆解 Linux 容器化核心:Namespace 隔离 + cgroups 资源控制,附 LXC 容器生命周期实战
运维·docker·容器·虚拟化·namespace·lxc·cgroups
vortex520 天前
虚拟机工具选择指北
linux·虚拟化
予枫的编程笔记20 天前
【Linux高级篇】想入门云原生?先掌握Docker底层:Cgroups与Namespace极简解析
docker·虚拟化·容器化·namespace·cgroups·云原生入门·docker实操教程
njsgcs22 天前
wsl 可以直接打开windows的应用 /mnt/d/blender/blender.exe
wsl
shimly12345622 天前
windows11 WSL 安装 Ubuntu 24.04
wsl
fireworkseasycold23 天前
windows与WSL 端口转发(保留 NAT,如果不切换到 Mirrored 网络模式(需要重启 WSL,可能改变子网行为))
wsl·代理
人间打气筒(Ada)24 天前
GlusterFS实现KVM高可用及热迁移
分布式·虚拟化·kvm·高可用·glusterfs·热迁移
三雷科技1 个月前
WSL 命令大全(完全指南)
虚拟化·wsl·windows虚拟机
凉、介1 个月前
ACRN Hypervisor 简介
笔记·学习·虚拟化