Windows系统借助WSL2可使用Linux系统开发

2023-05-16

一、起源

       Windows 10 2004 发布后,WSL2 也可以在正式版 Windows 10 中使用,相比于 macOS,WSL2 是一个原生 Linux 环境而非类 unix 环境,甚至可以在 App 商店中选择所需要的发行版。而相比于 WSL1,WSL2 采用了 HyperV 虚拟机的方式,解决了 WSL1 不能安装 Docker 等问题。
      相比于 WSL1,WSL2 通过虚拟机的方式带来了更完整的 Linux 内核,但这种方式也引入了一些问题;
在这里插入图片描述

      WSL2 不能和 VMWarework Station、VirtualBox 同时运行这一条已经过时了,VirtualBox 和 VMWare Workstation 都发布了支持 WSL2 和 Hyper-V 的新版。WSL2 跨 OS 的磁盘性能的确低的令人发指,尤其是小文件,安装一个 Python 依赖可能需要等几分钟,安装一个 NodeJS 依赖…当我没说…相关 ISSUE 底下有无数吐槽,不过目前还没有人出来解决,在这里:https://github.com/microsoft/WSL/issues/4197)。不过微软在文档里也说了,有很多方式可以避免跨 OS 使用文件系统,比如使用 VSCode 的 remote deployment 功能,我认为这也是更好的实践,并且也这么做了。当然,如果你必须跨 OS 使用文件系统,还是乖乖留在 WSL1 吧(WSL1 太渣了,还是留在 VirtualBox 吧)。
      除了表格里说的,我认为 WSL2 最大的问题在于…资源占用太大了我是一台 16G 内存的电脑,使用 WSL2 后开机就要吃掉 11G 的内存,虽然可以使用 wsl --shutdown 关闭虚拟机释放资源,但是相比于 VirtualBox 和 WSL1,WSL2 的资源占用可以说翻倍了。

二、升级WSL2教程

1、升级 Windows 10 到 2004

      升级到 Windows 10 2004 有多种方法,最靠谱的还是从设置 - 更新和安全里进行 OTA 升级,另一种更快速的方法是从官方地址下载镜像升级,访问这个地址下载运行就可以升级到最新的版本 https://www.microsoft.com/software-download/windows10,

2、启用 WSL2 并安装 Linux

      升级 Windows 10 的过程不会碰到太多问题,升级后还需要进行一些配置才可以使用 WSL2,首先要启用 Windows 子系统功能,使用管理员权限打开一个 PowerShell 窗口,输入以下命令,并重启系统:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

重启后,Windows 默认启用的是 WSL1,还需要再启用虚拟机平台功能,在 PowerShell 中输入以下命令,并再次重启系统:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重启后,在 PowerShell 中输入以下命令,将 WSL 默认版本改为 WSL2:

wsl --set-default-version 2

接下来在 Microsoft Store 中找一个 Linux 发行版进行安装,单击以下链接会打开每个分发版的 Microsoft Store 页面:https://aka.ms/wslstore

  • Ubuntu 18.04 LTS
  • Ubuntu 20.04 LTS
  • openSUSE Leap 15.1
  • SUSE Linux Enterprise Server 12 SP5
  • SUSE Linux Enterprise Server 15 SP1
  • Kali Linux
  • Debian GNU/Linux
  • Fedora Remix for WSL
  • Pengwin
  • Pengwin Enterprise
  • Alpine WSL
  • Raft(免费试用版)

      安装后在 PowerShell 中执行 wsl -l -v 可以看到当前的发行版是否跑在 WSL2 中,如果显示版本是1…请重复上面的安装步骤。

祝贺你! 现已成功安装并设置了与 Windows 操作系统完全集成的 Linux 分发!

以下是一些最佳实践:

3、网络互通

      Windows 访问 WSL2 启动的网络服务,可以直接使用 localhost,但是 Linux 访问 Windows 启动的网络服务这种方式就不行了,可以使用如下脚本获取 Windows 的 IP,并使用 IP 访问 Windows:

4、文件系统互通

      WSL2 访问 Windows 文件系统依然通过挂载分区的方式,Windows 下的磁盘会被挂载在 /mnt 下,例如 /mnt/c。
更加方便的一个方式是,在 Terminal 中,使用 explorer.exe . 可以直接调用资源管理器打开当前目录,有点类似 Mac 下的 open 。

5、使用 Docker

      WSL2 带来了完整的 Linux 内核,所以可以参照 Docker 在 Linux 上安装的过程安装 Docker,并且可以正常使用。使用 Docker Desktop,2.3.0.2 以上版本已经支持 WSL2 和 Hyper-V,免去一些折腾。

GPU 支持

      Build 2020 发出消息说 WSL2 要支持 GPU,Nvidia 也发出了 CUDA on WSL2 的预览版,在这里:https://developer.nvidia.com/cuda/wsl。这意味着以后可以直接在 Windows 上使用 GPU 加速训练模型了,虽然支持成都还很有限,但是相比于 Mac 可领先了一个身位都不只了。

三、总结:

      使用 Windows + WSL2 来构建开发环境已经可以满足大部分的需求。其本质就是一台跑在 Hyper-V 上的虚拟机,你可以使用 VMWare Workstation 或 VirtualBox,经过简单的配置实现其 100% 的功能,并且会有更高的性能,更少的资源占用,但是毕竟 WSL2 是一项原生功能,其配置上的便利性和兼容性,大大减少了使用者花在配置上的精力,最大程度的实现开箱即用,

参考文章:
https://docs.microsoft.com/zh-cn/windows/wsl/install-manual#step-5—set-wsl-2-as-your-default-version

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows系统借助WSL2可使用Linux系统开发 的相关文章

随机推荐

  • 基于springboot的简单restful服务demo

    这篇文章主要是本人学习springboot时一个简单的测试demo xff0c 仅供参考 springboot的介绍 xff1a 由Pivotal团队提供的全新框架 xff0c 设计的目的是简化spring新应用搭建的过程 xff0c 使用
  • leetcode刷题 Day23(LRU缓存机制)

    题目 xff1a 思路 xff1a java用LinkHashMap解决 xff0c 在LRUCache中获取缓存容量 xff0c 在put方法中 xff0c 难点在于怎么进行判断最新数据和最不常用的数据 xff0c 这里采取这种办法 xf
  • python实现markdown编辑器-5

    python实现markdown编辑器 前言开始代码片 前言 开始 代码片 因为前面示例里的代码片示例效果不明显 xff0c 所以我换了一个 1号标题 2号标题 3号标题 4号标题 5号标题 6号标题 无序列表第一种 无序列表第二种 43
  • ionic4 + Angular7 使用echarts创建日历图,并添加点击事件

    1 安装echarts npm install echarts save npm install ngx echarts save 2 angular json引入 echarts min js 34 build 34 34 options
  • python脚本环境搭建问题总结

    问题 xff1a Command 34 usr bin python3 u c 34 import setuptools Command usr bin python3 u c import setuptools tokenize file
  • S905L电视机顶盒刷armbian实现

    中兴B860AV2 1 U EMMC版本 xff0c 理论上所有的这个CPU并且是EMMC版本都可以刷 准备 一条USB双公头刷机线 xff1b HDMI显示器 xff1b 16GB左右的U盘 xff0c 最好是接口USB2 0 或者 一张
  • Uncaught DOMException: Blocked a frame with origin - 跨域数据问题及解决

    遇到需要使用窗口的功能 xff0c 是这样的 xff0c A站点的a1页面为主要显示页面 xff0c 但是需要调用B站点的b1界面用来保存数据到B站点上 xff0c 然后再将b1页面获取的地址体现到a1页面上 xff0c 在调用页面的关闭事
  • System.DllNotFoundException: 无法加载 DLL“XX.dll”: 找不到指定的模块,通过Dependency Walker来解决

    depends可以从网上下载 xff1a http www dependencywalker com c 调用DLL的时候经常会出现调用失败的问题 xff0c 但是只会报给说 xff1a xxxxDLL找不到指定的模块 xff0c 不给确切
  • 使用 SPDK 技术优化虚拟机本地存储的 IO 性能

    SPDK Storage performance development kit 是由 Intel 发起 xff0c 用于使用 NVMe SSD 作为后端存储的应用软件加速库 该软件库的核心是实现了用户态 异步 无锁 轮询方式的 NVMe
  • 【nest.js_01】nest.js初识-项目初始化

    记录学习 nest js 开发的过程 演示环境 Windows 10 mysql v8 0 12 Redis3 v 2 100 node v14 16 1 npm v6 14 12 nestjs v8 1 1 链接 node 下载安装地址
  • 树莓派系统安装及使用(详细步骤)

    1 安装系统 1 1 下载系统镜像 下载地址https www raspberrypi org downloads 可以看到有 NOOBS和Raspbian xff08 1 xff09 NOOBS为傻瓜式安装 xff0c 使用NOOBS安装
  • VS断点调试技巧

    条件断点 xff1a 条件断点就是当满足某种条件时才会触发的断点 例如在循环体中 xff0c 我们想查看第一万次循环的结果 xff0c 显然不能一步一步运行程序 xff0c 而应当在断点处设置条件 使用流程 xff1a 1 首先需要打一个断
  • 使用VS远程连接linux并进行开发

    此功能需要vs2015及以上 xff0c 此处以VS2019为例 在安装VS时需要把linux支持选上 xff0c 已经安装了的可以通过修改VS进行安装 具体流程 xff1a 首先新建项目 选择Linux的控制台应用程序 选择好位置 名称后
  • OpenCV轮廓相关操作 C++

    参考 参考 轮廓的基本概念 在OpenCV中 xff0c 可以通过cv findContours 函数 xff0c 在灰度图中寻找轮廓 函数原型 xff1a span class token keyword void span span c
  • OpenCV绘图相关操作 C++

    绘制相关知识 lineType线条风格介绍 opencv的线条风格由枚举值描述 xff1a span class token comment type of line span span class token keyword enum s
  • C++单例模式的几种实现

    单例模式 Singleton Pattern 的概念 模式定义 保证一个类仅有一个实例 xff0c 并提供一个访问它的全局访问点 饿汉单例和懒汉单例 常见的单例模式有两个分支 xff0c 饿汉单例和懒汉单例 饿汉单例是指在程序初始化时就把单
  • OpenCV深度图转点云

    需要先进行畸变校正 xff0c 再通过深度图转点云 相机的相关参数需要事先通过标定获得 span class token macro property span class token directive hash span span cl
  • 贝叶斯分类器,什么是朴素贝叶斯,后续为使用贝叶斯实现海量数据的邮件筛选。带源码数据集和解决思路

    朴素贝叶斯分类器 任务 xff1a 理解朴素贝叶斯分类器 实现我们的第一个贝叶斯分类器 使用朴素贝叶斯分类器分类邮件 概率论基础 xff1a 随机变量 xff1a 这个变量的值依赖于概率 抛硬币 xff08 其结果可能是正面 xff0c 也
  • [jetson]jetpack5.1的ubuntu20.04更换为清华源

    为使后续下载安装顺利 xff0c 需要给 Ubuntu 系统进行换源 Ctrl 43 Alt 43 T 打开终端 xff0c 输入如下命令 sudo gedit etc apt sources list 删除原文件内容 xff0c 添加如下
  • Windows系统借助WSL2可使用Linux系统开发

    一 起源 Windows 10 2004 发布后 xff0c WSL2 也可以在正式版 Windows 10 中使用 xff0c 相比于 macOS xff0c WSL2 是一个原生 Linux 环境而非类 unix 环境 xff0c 甚至