window11使用wsl2安装Ubuntu22.04

目录

1、快速了解wsl2 安装子系统linux流程(B站视频)

2、wsl2常用命令

3、windows与子系统Linux文件访问方法

4、子系统linux使用windows网络代理、网络配置(镜像网络,非NAT)

5、wsl2 Ubuntu miniconda 安装

6、wsl2 docker安装

7、wsl2 cuda 安装

8、wsl2 子系统可视化


重要提示:本教程仅仅针对最新版本的win11系统,其他版本的系统暂无测试

1、快速了解wsl2 安装子系统linux流程(B站视频)

【windows 安装适用于linux的子系统,安装 docker 并开启局域网访问

2、wsl2常用命令

WSL 的基本命令

#升级下子系统
wsl --update # 查看支持内核版本 wsl版本是2.x
wsl -v
WSL 版本: 2.2.4.0
内核版本: 5.15.153.1-2# 如果wsl不是2.x, 将WSL2设置为默认版本
wsl --set-default-version 2# 查看已经安装的子系统
wsl -l -v#查看可安装的linux版本
wsl --list --online#安装Ubuntu-22.04 发行版本
wsl --install -d ubuntu-22.04# 启动子系统
wsl -d Ubuntu-22.04    # 这里启动Ubuntu 22.04使用的命令和配置
设置wsl版本:wsl --set-default-version 2
查看可以安装的发行版:wsl --list --online
安装ununtu:wsl --install -d Ubuntu-22.04
关闭wsl:wsl --shutdown.wslconfig配置文件在这个位置
%UserProfile%
C:\Users\<UserName>\.wslconfig查看子系统ip:hostname -I
端口转发:netsh interface portproxy add v4tov4 listenport=5244 listenaddress=0.0.0.0 connectport=5244 connectaddress=172.27.14.63
查看转发的端口:netsh interface portproxy show all
删除:netsh interface portproxy delete v4tov4 listenport=5244 listenaddress=0.0.0.0.wslconfig配置
[wsl2]
networkingMode=mirrored
hostAddressLoopback=true
3、windows与子系统Linux文件访问方法

WSL 的文件权限 | Microsoft Learn

4、子系统linux使用windows网络代理、网络配置(镜像网络,非NAT)

使用 WSL 访问网络应用程序

步骤: 

下面配置仅限为win11系统,配置子系统Ubuntu网络为镜像网络,方便使用windows的网络代理

1) windows资源管理器输入:%UserProfile%后,跳转至用户目录:

2) 找到.wslconfig文件,没有则创建一个该文件即可

写入下面内容

# Settings apply across all Linux distros running on WSL 2
[wsl2]# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
# memory=8GB# Sets the VM to use two virtual processors
processors=10[experimental]
autoMemoryReclaim=gradual # 开启自动回收内存,可在 gradual, dropcache, disabled 之间选择
networkingMode=mirrored # 开启镜像网络
dnsTunneling=true # 开启 DNS Tunneling
firewall=true # 开启 Windows 防火墙
autoProxy=true # 开启自动同步代理
sparseVhd=true # 开启自动释放 WSL2 虚拟硬盘空间

3) PowerShell中输入  wsl --shutdown 关闭所有的子系统,注意不是关闭终端(重要

4)再次启动,使.wslconfig 配置生效

wsl -d Ubuntu-22.04

5)验证子系统是否使用windows代理成功

windows的代理需要开启Tun模式,如果未开启Tun模式,可能需要在Ubuntu终端使用export 开启环境变量(临时生效,永久生效需要更改配置文件),命令为:

# 如果是镜像网络

export https_proxy=http://127.0.0.1:7890

export http_proxy=http://127.0.0.1:7890

# 如果是NAT网络,需要在配置文件里加入:
# wsl http proxy
# 动态获得主机ip地址
HOST_IP=$(ip route show | grep -i default | awk '{ print $3}')
export https_proxy=$HOST_IP:7890
export http_proxy=$HOST_IP:7890

# 对于非镜像网络,如果需要局域网互通,可能还得需要一个端口映射

# 这里使用curl来验证,不用ping,因为ping默认不支持http代理curl -I https://www.baidu.com# 结果:
HTTP/1.1 200 Connection establishedHTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: keep-alive
Content-Length: 277
Content-Type: text/html
Date: Wed, 30 Oct 2024 05:55:33 GMT
Etag: "575e1f71-115"
Last-Modified: Mon, 13 Jun 2016 02:50:25 GMT
Pragma: no-cache
Server: bfe/1.0.8.18
# 这里使用curl来验证,不用ping,因为ping默认不支持http代理
curl -I https://www.google.com# 结果为下面代表成功,如果什么未出现卡住代表失败:
HTTP/1.1 200 Connection establishedHTTP/2 200
content-type: text/html; charset=ISO-8859-1
content-security-policy-report-only: object-src 'none';base-uri 'self';script-src 'nonce-V1HCEWjM22NLtR0v_UYszA' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp
accept-ch: Sec-CH-Prefers-Color-Scheme
p3p: CP="This is not a P3P policy! See g.co/p3phelp for more info."
date: Wed, 30 Oct 2024 05:55:47 GMT
server: gws
x-xss-protection: 0
x-frame-options: SAMEORIGIN
expires: Wed, 30 Oct 2024 05:55:47 GMT
cache-control: private
set-cookie: AEC=AVYB7co_o4i9i6JponI0fUy0GPIrYVSoGc5rdk2IyBuVdZQF5ljfIn8euNo; expires=Mon, 28-Apr-2025 05:55:47 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax
set-cookie: NID=518=dQebAMHHJPU9hSZIshAFzUHWMPFEZObPIMl6ZMjmay5duwQLkum7Hd44ikEgyVDZVMRlNWAWsOs5sNB2eSsrGTzms7iByOR11e3ZfvyODGfhEId-r6KzJ80y5Fhxvt7C-ecSOoCrBIUgsREJ6ZNFauGHkwwgob-61jKhK81iz5Y7UXQYGpH5Jamb74rLKrpw; expires=Thu, 01-May-2025 05:55:47 GMT; path=/; domain=.google.com; HttpOnly
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
5、wsl2 Ubuntu miniconda 安装
安装:
mkdir -p ~/miniconda3wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.shbash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3rm ~/miniconda3/miniconda.sh

安装完成后激活:

source ~/miniconda3/bin/activate

环境变量初始化:

conda init --all
6、wsl2 docker安装

WSL 上的 Docker 容器入门 | Microsoft Learn

在windows/wsl 安装docker(官方文档)

7、wsl2 cuda 安装

CUDA on WSL 用户指南(nvidia官方文档)

win11 使用 wsl2 安装子linux系统,使用 nvidia-smi 是可以打印东西的,即使 nvidia-smi 可用,CUDA 工具包可能尚未安装或未正确配置。例如 nvcc -V 命令不可用、安装flash-atten 要用到CUDA 编译(pip install flash-attn==2.6.3 --no-build-isolation ) 会报错

需要注意的:

  • Nvidia 图形驱动只需要装到windows机器上, wsl 子系统中不要安装任何图形驱动,仅需要安装cuda toolkit 即可。From this point you should be able to run any existing Linux application which requires CUDA. Do not install any driver within the WSL environment. For building a CUDA application, you will need CUDA Toolkit. Read the next section for further information.
  • 最新的 NVIDIA Windows GPU 驱动程序将完全支持 WSL 2。通过驱动程序中的 CUDA 支持,现有应用程序(在其他 Linux 系统上为相同目标 GPU 编译)可以在 WSL 环境中无需修改即可运行。要编译新的 CUDA 应用程序,需要 Linux x86 的 CUDA Toolkit。CUDA Toolkit 对 WSL 的支持仍处于预览阶段,因为诸如分析器等开发工具尚不可用。但是,在 WSL2 环境中完全支持 CUDA 应用程序开发,因此用户应该能够使用适用于 x86 Linux 的最新 CUDA Toolkit 编译新的 CUDA Linux 应用程序。
  • 在系统上安装 Windows NVIDIA GPU 驱动程序后,CUDA 就可以在 WSL 2 中使用。安装在 Windows 主机上的 CUDA 驱动程序将在 WSL 2 中被存根为 libcuda.so ,因此用户不得在 WSL 2 中安装任何 NVIDIA GPU Linux 驱动程序。这里需要非常小心,因为默认的 CUDA Toolkit 附带有一个驱动程序,很容易用默认安装覆盖 WSL 2 的 NVIDIA 驱动程序。我们建议开发人员使用来自 CUDA Toolkit 下载页面的单独 WSL 2 (Ubuntu) CUDA Toolkit,以避免这种覆盖。有一个叫 WSL-Ubuntu CUDA 工具包安装程序不会覆盖已映射到 WSL 2 环境的 NVIDIA 驱动程序。

以下是在 WSL 中安装 CUDA 工具包的步骤:Linux WSL-Ubuntu 2.0 x86_64

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.6.2/local_installers/cuda-repo-wsl-ubuntu-12-6-local_12.6.2-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-12-6-local_12.6.2-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-12-6-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-6

正常来说,如果可以顺利安装上 torch GPU版、deepspeed、flash-atten,CUDA基本算是安装完成了,尤其是后两个包,flash-atten需要用到CUDA编译,如果没有安装或安装出错大概率是安装不成功的 

测试代码:

import torch
import flash_attn
import deepspeed
import xformers
print(deepspeed.__version__)
print(xformers.__version__)
print(flash_attn.__version__)
print(torch.__version__)
print(torch.cuda.is_available())
print(torch.cuda.device_count())
print(torch.cuda.get_device_name(0))
print(torch.cuda.current_device())# 结果
0.14.0
0.0.27
2.6.3
2.3.1+cu121
True
1
NVIDIA GeForce RTX 3090
0

一些问题:

经上述py脚本测试,CUDA已经安装成功了,但是nvcc -V命令依旧用不了,原因为CUDA的安装路径通常需要添加到系统的PATHLD_LIBRARY_PATH中。如果这些环境变量未正确配置,系统将无法找到nvcc命令。

1)验证CUDA Toolkit是否正确安装 ,检查CUDA Toolkit的安装目录。默认情况下,CUDA通常安装在/usr/local/cuda-12.6(根据您安装的版本不同,路径可能有所变化),查看nvcc是否存在

ls /usr/local/cuda-12.6/bin/nvcc

我的是存在的,证明CUDA虽然安装成功,但需要加入环境变量

2)配置环境变量 

编辑shell配置文件(如~/.bashrc~/.zshrc),添加以下内容:

export PATH=/usr/local/cuda-12.6/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

3)保存文件后,重新加载配置

source ~/.bashrc

4)测试是否配置成功

which nvcc
# 应该输出类似于/usr/local/cuda-12.6/bin/nvcc的路径。如果没有输出,说明PATH未正确配置。nvcc -V# 输出:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Thu_Sep_12_02:18:05_PDT_2024
Cuda compilation tools, release 12.6, V12.6.77
Build cuda_12.6.r12.6/compiler.34841621_0

 至此,CUDA完整安装成功

8、wsl2 子系统可视化

1)安装之前,

2)wsl 子系统需要的操作

# 安装xfce4
sudo apt install xfce4           # 失败重新安装 sudo apt reinstall xfce4# 再bashrc最后一行添加如下内容并保存,把其中的172.30.16.1换成自己的ipv4地址即可,可以在windows 终端中输入 ipconfig 进行查看
sudo vim  ~/.bashrc 
# 需要加入的内容
export DISPLAY=172.30.16.1:0
# 重载配置文件激活
source ~/.bashrc#重启一下wsl子系统,具体方法是,在windows终端里运行以下指令,再重新打开
wsl --shutdown         # 关闭wsl
wsl -d Ubuntu-22.04    # 再启动#使用sudo 启动 Xfce 会话:
sudo startxfce4

3)安装 VcXsrv X Server 并启动它,地址为:VcXsrv - Open-Source X Server for Windows

一键安装后启动时需要进行配置:

参考资料:

CUDA on WSL User Guide

win11安装WSL2并配置Ubuntu环境

使用 WSL 访问网络应用程序

wsl2使用宿主机网络代理

WSL2的镜像网络模式:带来更流畅的Linux开发体验

新版 WSL2 2.0 设置 Windows 和 WSL 镜像网络教程

Windows 10 安装配置WSL2(ubuntu20.04)教程 超详细

WSL默认安装目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/460908.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【K8S系列】Kubernetes 中 NodePort 类型的 Service 无法访问的问题【已解决】

在 Kubernetes 中&#xff0c;NodePort 类型的 Service 允许用户通过每个节点的 IP 地址和指定的端口访问应用程序。如果 NodePort 类型的 Service 无法通过节点的 IP 地址和指定端口进行访问&#xff0c;可能会导致用户无法访问应用。本文将详细分析该问题的常见原因及其解决方…

Cyber​​Panel filemanager/upload 远程命令执行漏洞复现

0x01 产品简介 CyberPanel是一个开源的Web控制面板,它提供了一个用户友好的界面,用于管理网站、电子邮件、数据库、FTP账户等。CyberPanel旨在简化网站管理任务,使非技术用户也能轻松管理自己的在线资源。 0x02 漏洞概述 该漏洞源于filemanager/upload接口未做身份验证和…

(C#面向初学者的 .NET 的生成 AI) 第 2 部分-什么是 AI 和 ML?

从本部分开始Luis Quintanilla介绍AI和机器学习&#xff0c;需要学习的一些东西是什么是AI和ML&#xff1f;作为一名.net开发人员如何学习使用AI和ML。 1、首先什么是AI 和 ML&#xff1f; 你可以把它看作是基本相同事物的不同层次。 在顶层的是AI&#xff08;人工智能&#xf…

Swarm-LIO: Decentralized Swarm LiDAR-inertial Odometry论文翻译

文章目录 前言一、介绍二、相关工作三、方法A. 问题表述B. 框架概述C. 群体系统的初始化D. 去中心化激光雷达-惯性状态估计 四. 实验A. 室内飞行B. 退化环境飞行C. 去中心化部署 五. 结论和未来工作 前言 原文&#xff1a;原文 准确的自我状态和相对状态估计是完成群体任务的关…

wsl 使用docker 部署oracle11g数据库

wsl 使用docker 部署oracle11g数据库 1. 下载oracle11g sudo docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g2. 运行oracle11g容器&#xff08;docker-compose&#xff09; services:oracle-1.0:container_name: oracle11gimage: oracle11g:1.0restart:…

IDEA集成JProfiler

目录 下载并安装JProfiler下载安装包管理员身份运行配置许可证邮箱复制注册码配置永久许可证选择IDE集成 在IDEA中下载并安装JProfiler插件启动并使用JProfiler进行性能分析启动Java应用程序&#xff1a;自动运行JProfiler 知识扩充功能 下载并安装JProfiler 下载安装包 官网…

Tomcat 和 Docker部署Java项目的区别

在 Java 项目部署中&#xff0c;Tomcat 和 Docker 是两种常见的选择。虽然它们都可以用来运行 Java 应用&#xff0c;但它们在定位、部署方式、依赖环境、资源隔离、扩展性和适用场景等方面有显著区别。 1. 功能定位 1.1 Tomcat Apache Tomcat 是一种轻量级的 Java 应用服务器…

AI-基本概念-多层感知器模型/CNN/RNN/自注意力模型

1 需求 神经网络 …… 深度学习 …… 深度学习包含哪些神经网络&#xff1a; 全连接神经网络卷积神经网络循环神经网络基于注意力机制的神经网络 2 接口 3 CNN 在这个示例中&#xff1a; 首先定义了一个简单的卷积神经网络SimpleCNN&#xff0c;它包含两个卷积层、两个池…

Leaflet查询矢量瓦片偏移的问题

1、问题现象 使用Leaflet绘制工具查询出来的结果有偏移 2、问题排查 1&#xff09;Leaflet中latLngToContainerPoint和latLngToLayerPoint的区别 2&#xff09;使用Leaflet查询需要使用像素坐标 3&#xff09;经排查发现&#xff0c;container获取的坐标是地图容器坐标&…

Vue生成名片二维码带logo并支持下载

一、需求 生成一张名片&#xff0c;名片上有用户信息以及二维码&#xff0c;名片支持下载功能&#xff08;背景样式可更换&#xff0c;忽略本文章样图样式&#xff09;。 二、参考文章 这不是我自己找官网自己摸索出来的&#xff0c;是借鉴各位前辈的&#xff0c;学以致用&am…

如何利用网站进行仿牌运营?

对于很多人来说&#xff0c;仿牌网站的运营是一项充满挑战的任务&#xff0c;很多初学者对如何开始感到困惑&#xff0c;甚至不清楚仿牌网站的运作机制。此外&#xff0c;搜索引擎对新网站的审核期也使得许多站长倍感压力。那么&#xff0c;如何才能在这一过程中有效地进行SEO优…

数字IC开发:布局布线

数字IC开发&#xff1a;布局布线 前端经过DFT&#xff0c;综合后输出网表文件给后端&#xff0c;由后端通过布局布线&#xff0c;将网表转换为GDSII文件&#xff1b;网表文件只包含单元器件及其连接等信息&#xff0c;GDS文件则包含其物理位置&#xff0c;具体的走线&#xff1…

传智杯 第六届-复赛-C

题目描述&#xff1a; 小红有一个数组&#xff0c;她每次可以选择数组的一个元素 xxx &#xff0c;将这个元素分成两个元素 aaa 和 bbb &#xff0c;使得 abxabxabx。请问小红最少需要操作多少次才可以使得数组的所有元素都相等。 输入描述: 第一行输入一个整数 n(1≤n≤10^5)…

华为配置 之 GVRP协议

目录 简介&#xff1a; 配置GVRP&#xff1a; 总结&#xff1a; 简介&#xff1a; GVRP&#xff08;GARP VLAN Registration Protocol&#xff09;&#xff0c;称为VLAN注册协议&#xff0c;是用来维护交换机中的VLAN动态注册信息&#xff0c;并传播该信息到其他交换机中&…

外包干了7天,技术明显退步。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;22年通过校招进入南京某软件公司&#xff0c;干了接近2年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了2年的功能测试&…

openGauss开源数据库实战十

文章目录 任务十 openGauss逻辑结构:数据库管理任务目标实施步骤一、登录到openGauss二、创建数据库三、查看数据库集群中有哪些数据库四、查看数据库默认表空间的信息五、查看数据库下有哪些模式六、查看数据库下有哪些表七、修改数据库的默认表空间八、重命名数据库九、删除数…

H3C OSPF配置

OSPF配置实验 实验拓扑图 实验需求 1.配置IP地址 2.分区域配置OSPF&#xff0c;实现全网互通 3.为了路由结构稳定&#xff0c;要求路由器使用环回口作为Router-id&#xff0c;ABR的环回口宣告进骨干区域 实验配置 1.配置IP地址 R1&#xff1a; <H3C>system-view …

飞桨首创 FlashMask :加速大模型灵活注意力掩码计算,长序列训练的利器

在 Transformer 类大模型训练任务中&#xff0c;注意力掩码&#xff08;Attention Mask&#xff09;一方面带来了大量的冗余计算&#xff0c;另一方面因其 O ( N 2 ) O(N^2) O(N2)巨大的存储占用导致难以实现长序列场景的高效训练&#xff08;其中 N N N为序列长度&#xff09;…

乘云而上,OceanBase再越山峰

一座山峰都是一个挑战&#xff0c;每一次攀登都是一次超越。 商业数据库时代&#xff0c;面对国外数据库巨头这座大山&#xff0c;实现市场突破一直都是中国数据库产业多年夙愿&#xff0c;而OceanBase在金融核心系统等领域的攻坚克难&#xff0c;为产业突破交出一副令人信服的…

为什么要使用Golang以及如何入门

什么是golang&#xff1f; Go是一种开放源代码的编程语言&#xff0c;于2009年首次发布&#xff0c;由Google的Rob Pike&#xff0c;Robert Griesemer和Ken Thompson开发。基于C的语法&#xff0c;它进行了一些更改和改进&#xff0c;以安全地管理内存使用&#xff0c;管理对象…