• 使用 WSLg 的 vGPU 硬件加速新特性创建重度混合生产环境


    使用 WSLg 的 vGPU 硬件加速新特性创建重度混合生产环境

    本文首发于:白泽阁-使用 WSLg 的 vGPU 硬件加速新特性创建重度混合生产环境

    一、不同版本的WSL

    Windows Subsystem for Linux(简称WSL)是一个在 Windows 10\11 上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。

    到目前为止 WSL 可分为 WSL1 和 WSL2 两代,其中 WSL1 代类似 Cygwin,是使用Windows 的 API 重写了一份 Linux 的 API,没有关机概念,无法使用 systemd、docker 等运行常驻服务;而 WSL2 是基于 Hyper-V 的完整虚拟机,支持 systemd、docker 等在内的常驻服务运行;最新的 WSLg 是 Windows Subsystem for Linux GUI 的缩写,该项目的目的是支持在 Windows 上以完全集成的桌面体验运行 Linux GUI 应用程序(X11 和 Wayland)。
    WSLg 的 Firefox 和 Windows 下的 Firefox简单的来说 WSLg 可以让你直接在 Windows 的桌面环境下直接运行 Linux 下的 GUI 应用,共享 Windows 的桌面,只到这一步的话,WSL 系可能还是偏向玩具+轻量级的混合生产环境,但是,最最最最新的更新,WSLg(WSL2)已支持 vGPU,可以直接调用物理宿主机的显卡。这下性质真的变了,你可以在主操作系统为 Windows 的情况下,使用 WSL2 来跑 Linux 下的重度生产环境。属实是工作生活双平衡了(bushi)。

    二、WSL2 安装 + 桌面环境部署

    WSL2 的安装方法和 WSL1 一致,使用 控制面板→程序和功能→启用或关闭 Windows 功能,按下图勾选 Hyper-V、适用于 Linux 的 Windows 子系统、虚拟机平台 三个选项(Hyper-V 在列表上方图没截进去)。
    安装 WSL
    安装完毕后按要求进行重启,之后先以管理员身份运行以下命令:

    # 设定WSL版本为WSL2
    wsl --set-default-version 2
    # 升级WSL组件
    wsl --update
    # 安装 Ubuntu-20.04 发行版
    wsl --install -d Ubuntu-20.04
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    至此 WSL2 已安装完毕,在开始菜单中找到 Ubuntu20 启动或者在任何 CMD、Powershell中键入 bash 命令即可进入 WSL2 的 Ubuntu20 环境。接下来使用以下命令安装 Ubuntu 的桌面环境:

    sudo apt-get update
    sudo apt-get install ubuntu-desktop
    
    • 1
    • 2

    安装完毕后会发现开始菜单中多了很多图标带有 Linux 小企鹅标志的的程序快捷方式,名字也带有 “(Ubuntu 20)” 的标记,这些就是 WSLg 的启动方式了。

    WSLg 快捷方式

    三、vGPU 的使用

    其实在 WSLg 之前,可以使用 Hyper-V 的 DDA 功能将物理机的 GPU 直接分配给虚拟机使用,来实现虚拟化的生产环境。但是使用 DDA 也存在几个问题:

    1. 无论是通过 DDA 挂载还是释放,都需要非常复杂的纯命令行设置,需要手动计算、分配内存的可用大小
    2. 通过 DDA 分配给虚拟机时,宿主机必须断开与 GPU 的访问,即宿主机和虚拟机无法同时访问 GPU

    而现在可就方便多了,首先确定 Windows 10/11 的系统版本已为最新,同时安装最新的显卡驱动,vGPU 的配置就已经自动完成了。在 Linux 的环境下可以直接使用 nvidia-smi 命令来查看 GPU 状态,非常丝滑和离谱。CUDA is Ready!

    在 WSL 中查看 GPU 状态
    实测此时直接使用 Firefox 等浏览器还无法直接播放视频,但是使用 sudo apt-get install vlc 命令安装完 vlc 播放器和相关的解码依赖后,就可以愉快地直接在 Firefox 中使用硬件解码来播放4K视频了。

    使用 WSLg 的Firefox 播放 4K 视频
    至此相关配置全部完成,按照正常的 Linux 环境来用即可。当然,也许有人要问,那我直接用 Linux 不就好啦。但是实际生产过程中,总是会遇到 “如果我用的是 Windows/Linux 系统就好了” 这种情况。混合生产环境的最大优势就是在于,可以同时使用 Windows 和 Linux 系统下最好的工具,互相配合,甚至可以在 Windows 环境下通过先调用 cmd 再启动 bash 然后通过标准输入输出来整合两个环境的工具,形成工作流。

    个人觉得,很多时候,决定工具上限的不是工具本身,而是使用者的技术上限和技术边界。

  • 相关阅读:
    Docker添加软链接,解决c盘占用问题
    计算机架构史上的一次伟大失败,多数人都不知道
    大语言模型系列-Transformer
    关于电脑卡死如何开机、F8、安全模式
    15 HTTPS协议详解
    MySQL-----多表查询(一)
    在JavaScript中利用代码来实现ATM的效果,具有存钱,取钱,查看余额,退出功能
    manim边学边做--MathTex
    Chain-Of-Note:解决噪声数据、不相关文档和域外场景来改进RAG的表现
    C++生化危机1.5源码
  • 原文地址:https://blog.csdn.net/chaoshengze/article/details/132943002