WSL2安装与使用(USB、GPU、虚拟机、图形界面)

文章目录

  • 前言
  • WSL2安装(手动安装)
  • WSL2基础使用
  • VS Code与WSL2配合使用
  • 连接USB设备
  • WSL2中使用GPU(RTX5060Ti 16G)
  • 与虚拟机兼容使用(Virtual Box)
  • 图形与桌面环境
  • WSL消失(灾难性故障)问题
  • 后记

前言

因为学习需要配了一台电脑,需要在Ubuntu下调用显卡,但是平时很多时候又都需要使用Windows。有一种做法是装双系统,需要用哪个就在启动时选哪个。还有一种做法是使用使用Windows自带的WSL(目前新版本叫做WSL2),它可以在Windows计算机上运行Linux环境。

WSL这种方式相比VMware和VirtualBox虚拟机来说轻量些,并且还有一个比较大的优势是可以调用显卡。

Windows Subsystem for Linux 文档
在这里插入图片描述

WSL2安装(手动安装)

WSL2安装对系统版本和硬件功能开启有一定要求,系统版本通常新一点就可以,硬件的话通常配置不是太差就行。下图是我这里的用的系统和硬件信息:
在这里插入图片描述

理论上如果系统版本和网络没有问题的话用管理员方式运行PowerShell或者CMD,使用 官方方法 一个命令就可以安装:

# 安装默认Linux发行版
wsl --install# 列出可用的Linux发行版
# wsl --list --online 
# 列表中Ubuntu通常指的是最新的Ubuntu版本
# 安装指定Linux发行版
# wsl --install <Distribution Name>

不过我这边安装Ubuntu24.04一直卡着没有进度,就用下面方法进行手动安装:
https://learn.microsoft.com/zh-cn/windows/wsl/install-manual

首先用管理员方式运行PowerShell,启用下面功能:

# 启用适用于 Linux 的 Windows 子系统
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 启用虚拟机功能
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

在这里插入图片描述

另外还需要启动Hyper-V功能:
在这里插入图片描述

接下来下载并安装合适的内核包并进行安装:
x64:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
arm64:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.msi

然后PowerShell中使用命令将WSL2设置为默认版本:

wsl --set-default-version 2

接下来可以去商店下载安装合适的Linux发行版包,不过我就是因为这里下载慢才选择手动安装的,所以这个发行版包也选择手动下载发行版的AppxBundle包。浏览器直接下载慢的话可以用下载工具进行下载,比如用 Motrix 进行下载。我这里用的Ubuntu2404-240425版本,其他版本也可以在前面官方文档中找到:
https://wslstorestorage.blob.core.windows.net/wslblob/Ubuntu2404-240425.AppxBundle

下载完成后双击 .AppxBundle 格式文件就会弹出提示进行安装(这需要有Microsoft Store,可能还需要打开开发者选项):
在这里插入图片描述

安装完成后就和普通Linux系统一样,第一次进入时需要设置用户名密码:
在这里插入图片描述

按照上面流程安装后可以在开始菜单的应用中找到相关内容:
在这里插入图片描述

Ubuntu 24.04LTS就是刚安装的Linux了。WSL Settings是WSL的管理界面(这里可以设置分配给Linux的核心数、内存大小、运行保留时间等):
在这里插入图片描述

前面是直接双击 .AppxBundle 进行安装的,其实也可以把这个文件重命名为 .zip 文件,然后选择其中合适的 .appx 文件双击进行安装。这两种方式没有太本质上的区别,默认都是安装到用户目录下的。

更进一步的可以把 .appx 再命名为 .zip ,在把它解压到某个目录下,然后双击其中的 ubuntu.exe 进行安装,这样安装好后的系统就在该目录下。默认情况下WSL一个版本的Linux只能安装一个,这里使用22.04版本进行演示。安装完成后 ext4.vhdx 文件就是系统文件了:
在这里插入图片描述

另外有个工具 LxRunOffline 可以让你安装多个同样系统的WSL:
https://github.com/DDoSolitary/LxRunOffline

WSL2基础使用

WSL2一定程度上也是一个虚拟机,其资源管理等可以在前面的 WSL Settings 中进行设置。

WSL2中Linux实例本身使用有比较多的方式,最灵活的是在PowerShell或者CMD中通过命令来使用,一些常见的命令如下

# 帮助信息
wsl --help# 列出已安装的Linux发行版和运行状态
wsl --list --verbose 
wsl -l -v# 设置默认WSL版本 1 或 2
wsl --set-default-version <Version>
# 设置默认Linux发行版
wsl --set-default <Distribution Name>
# 检查WSL状态
wsl --status# 运行默认的Linux发行版并打开当home目录
wsl ~
# 运行默认的Linux发行版并打开当前目录
wsl
# 运行默认Linux发行版
wsl -d <Distribution Name>
# 关闭所有正在运行的Linux发行版
wsl --shutdown
# 关闭指定的Linux发行版
wsl --terminate <Distribution Name># 更新WSL
wsl --update

在这里插入图片描述

在虚拟机中可以用 logout 退出,或者用 sudo shutdown now关闭当前虚拟机。当然只是退出不关闭,在没有一些特殊的处理的情况下,WSL也会在VM空闲超时后关闭虚拟机。这在一些场景下是不合适的,可以使用下面工具开启虚拟的终端来处理这个问题:
《Linux笔记:终端复用与管理工具screen和tmux》
实际使用时可能在WSL2中只有tmux有用。

虚拟机运行时会挂载Windows的盘,通常是 /mnt/c ,反过来可以在Windows中访问虚拟机的文件系统,在Windows文件系统中访问 \\wsl$ 即可:
在这里插入图片描述

虚拟机的网络在 WSL Settings 中默认配置为NAT模式,可以使用 wsl hostname -I 查看虚拟IP,在虚拟机中可以使用 ip route show | grep -i default | awk '{ print $3}' 来查看Windows的IP。Windows访问虚拟机中的网络应用可以使用 localhost ,虚拟机访问Windows中的网络应用可以使用前面虚拟机中查看的Windows的IP。

WSL安装的虚拟机默认是在用户目录下的,可以使用下面的命令导出导入以及移动位置等:

# 导出为 .tar 文件
wsl --export <Distribution Name> <FileName># 导入 .tar 文件为新的发行版
wsl --import <Distribution Name> <InstallLocation> <FileName>
# 导出再导入后可能默认就变成了root用户,可以修改/etc/wsl.conf文件来设置为原来的用户
# [user]
# default=user_name# 注销卸载Linux发行版
wsl --unregister <DistributionName>
# 用上面命令卸载后会有残留,需要去开始菜单所有应用中右键再进行卸载# 移动到指定位置
wsl  --manage <Distribution Name> --move <Location>

除了上面一些内容,安装的一个个Linux发行版本身的一些使用是Linux自身的事情,比如使用下面命令来更新系统:

sudo apt update && sudo apt upgrade
# 需要正式使用前通常上面是必须的

另外提一嘴,也微软商店中安装Windows Terminal,可以在里面方便的打开虚拟机终端:
在这里插入图片描述

VS Code与WSL2配合使用

用WSL2很多时候都是为了开发,开发的话目前比较流行编辑器是 VS Code 。WSL2下使用VS Code方式比较多,这里最方便的应该是Windows上安装VS Code,然后安装 Remote Development 扩展。这样在虚拟机中就可以直接用 code .
在这里插入图片描述
在这里插入图片描述

连接USB设备

WSL2中连接主机的USB设备目前依赖一个开源工具:
https://learn.microsoft.com/zh-cn/windows/wsl/connect-usb
https://github.com/dorssel/usbipd-win

下载安装工具,然后用管理员权限用下面命令查看USB设备总线ID,选择和USBIP共享:

# usbipd --help
usbipd list
usbipd bind --busid=<BUSID>
# 后面如果attach有问题这里绑定时可能需要在加--force
# usbipd unbind --busid=<busid>

在这里插入图片描述

接下来需要启动WSL2,然后将USB设备连接过去,这里文档说是不需要管理员方式去连接,但是有可能失败,可以再换管理员账户试试:

usbipd attach --wsl --busid=<BUSID>
# usbipd detach --busid=<BUSID>
# 需要注意的是如果要拔出USB设备,一定要先用命令断开连接,不然有可能之后再连会连不上,需要重启电脑(或者说重启下服务)

连接后可以在Linux中看到USB设备:

# sudo apt install usbutils
lsusb

在这里插入图片描述

USB设备在Linux中使用可能还会又别的问题,可以参考下面情况:
https://blog.csdn.net/G_C_H/article/details/125939941

WSL2中使用GPU(RTX5060Ti 16G)

本来这个是要花点时间的,不过当前版本下按照前面方式安装好Linux,应该直接就可以看到显卡,使用 nvidia-smi 命令进行查看:
在这里插入图片描述

如果有问题可以尝试更新显卡驱动或是参考下面链接:

https://docs.nvidia.com/cuda/wsl-user-guide/index.html
https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/gpu-compute

与虚拟机兼容使用(Virtual Box)

这个以前也是个大问题,现在(VirtualBox-7.1.10)就没什么困扰了,不需要特别的设置直接可以共存:

Oracle VirtualBox can be used on a Windows host where Hyper-V is running. This is an experimental feature.
No configuration is required. Oracle VirtualBox detects Hyper-V automatically and uses Hyper-V as the virtualization engine for the host system. The CPU icon in the VM window status bar indicates that Hyper-V is being used.

https://www.virtualbox.org/manual/topics/AdvancedTopics.html#hyperv-support

在这里插入图片描述
在这里插入图片描述

以前6.x版本时还是实验功能,需要手动启动,并且微软一会开发接口,一会又不开放了:

#指定vbox下的虚拟系统开启这个功能
./VBoxManage.exe setextradata "<虚拟机名字>" "VBoxInternal/NEM/UseRing0Runloop" 0#或指定vbox所有虚拟系统开启
./VBoxManage.exe setextradata global "VBoxInternal/NEM/UseRing0Runloop" 0

图形与桌面环境

使用Linux有些特定的场景下会有需要用图形界面的需求,以前的话通常安装桌面环境,然后通过远程方式去访问。不过现在来说WSL2已经可以不安装桌面环境就用使用这些带图形界面的软件了:
https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/gui-apps

软件可以通过Linux中命令打开,也可以在开始菜单应用中打开:
在这里插入图片描述

如果还需要桌面环境的话可以通过下面方式安装(这里只是简单测试,还有很多问题没有处理):

sudo apt update & sudo apt upgrade# 安装桌面环境
sudo apt install ubuntu-desktop -y
# sudo apt install gnome-software
# sudo apt install gnome-tweaks
# sudo apt install gnome-shell-extensions# 安装远程桌面服务
sudo apt install xrdp -y# 修改远程桌面服务端口号(默认:3389需要改成其他的,比如3390)
vim /etc/xrdp/xrdp.ini# sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp
# sudo systemctl status xrdp
# 重启Linux后可能需要重启xrdp# 配置防火墙
# sudo apt install ufw
# sudo ufw allow 3389# 需要注意的是远程桌面连接可能需要Linux新建一个用户进行连接,不然可能会闪退

打开Windows自带的远程桌面工具可以远程操作了( localhost:3389 ):
在这里插入图片描述
在这里插入图片描述

WSL消失(灾难性故障)问题

WSL2用着用着某一天突然间发现不见了。重新走安装流程或者提示安装完成,但没用;或者提示灾难性故障。目前猜测可能是WSL组件自动失败引起的。

尝试了可以在 设置>应用 中完全卸载所安装的Linux虚拟机以及WSL组件。关闭 Windows功能Win+R,输入 OptionalFeatures 回车)中相关功能。在从项目地址( https://github.com/microsoft/WSL )下载完整的WSL组件进行安装。安装完成后重新打开 Windows功能 中相关功能。这样一套下来就可以恢复正常使用了。

相关内容也可以参考:https://blog.csdn.net/m0_62815143/article/details/141285504

后记

目前来说WSL2使用起来已经比较方便了,虽然也存在很多问题,但是毕竟在原生系统和虚拟机之间提供了更多的可能性,对于很多应用场景下这个确实是比较合适的方案。

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

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

相关文章

uni-app项目实战笔记16--实现头部导航栏效果

先来看效果&#xff1a; 要求&#xff1a;顶部导航栏要始终固定在上方&#xff0c;不随页面上下拖动而消失。 代码实现&#xff1a; 1.定义一个自定义导航栏组件&#xff1a;custom-nav-bar.vue&#xff0c;并写入如下代码&#xff1a; <template><view class"…

web3.js 核心包及子模块

. 核心包 (web3) 功能:提供基础连接、工具函数和核心功能。 包含子模块: web3.eth - 以太坊区块链交互 web3.utils - 辅助工具函数 web3.shh - Whisper 协议(已废弃) web3.bzz - Swarm 去中心化存储(已废弃) web3.net - 网络相关功能 web3.contract - 智能合约交互 web3.…

训练检测之前的视频抽帧

接下来安装pytorch Previous PyTorch Versions 视频抽帧 import cv2def extract_frames(video_path, output_folder, frame_rate1):"""从视频中抽取帧。:param video_path: 视频文件的路径:param output_folder: 存储帧的文件夹路径:param frame_rate: 抽取的…

智能家居HA篇 二、配置Home Assistant并实现外部访问

智能家居HA篇 一、Win10 VM虚拟机安装 Home Assistant 手把手教学 二、通过Cpolar配置Home Assistant并实现外部访问 文章目录 智能家居HA篇前言一、内网穿透工具&#xff08;cpolar&#xff09;二、映射HA端口1.访问cpolar仪表2.创建账号并登录3.创建隧道 三、HA设置及公网访…

day09——Java基础项目(ATM系统)

文章目录 Java项目实战&#xff1a;手把手开发ATM银行系统&#xff08;附完整源码&#xff09;一、系统架构设计1. 三层架构模型2. 核心数据结构 二、核心功能实现1. 开户功能&#xff08;含唯一卡号生成&#xff09;2. 登录安全验证3. 存取款业务4. 安全转账实现 三、账户安全…

计算机网络:(五)信道复用技术,数字传输系统,宽带接入技术

计算机网络&#xff1a;&#xff08;五&#xff09;信道复用技术&#xff0c;数字传输系统&#xff0c;宽带接入技术 前言一、信道复用技术1. 为什么需要复用技术&#xff1f;2. 频分复用&#xff08;FDM&#xff09;3. 时分复用&#xff08;TDM&#xff09;4. 统计时分复用&am…

【期末总结】计算机网络

【期末总结】计算机网络 参考链接&#xff1a;计算机网络知识点全面总结&#xff08;有这一篇就够了&#xff01;&#xff01;&#xff01;&#xff09;-CSDN博客 一.概述 1.1 计算机网络的分类 按照网络的作用范围&#xff1a;广域网&#xff08;WAN&#xff09;、城域网&a…

React学习001-创建 React 应用

React学习001-创建 React 应用 1、安装node.js2、安装构建工具2.1 核心特性2.2 性能对比​​2.3 适用场景​​ 3、创建应用4、项目启动参考文章 1、安装node.js 这里建议安装nvm多版本管理node.js&#xff0c;想用哪个版本&#xff0c;一条命令即可~ 多版本管理node.js 2、安…

(cvpr2025) Adaptive Rectangular Convolution for Remote Sensing Pansharpening

论文&#xff1a;(cvpr2025) Adaptive Rectangular Convolution for Remote Sensing Pansharpening 代码&#xff1a;https://github.com/WangXueyang-uestc/ARConv.git 这个论文研究的是全色与多光谱图像的融合。作者认为现有的基于CNN的方法中&#xff0c;传统的卷积存在两个…

【图像处理入门】7. 特征描述子:从LBP到HOG的特征提取之道

摘要 特征描述子是图像处理中提取图像本质信息的关键工具。本文将深入讲解局部二值模式(LBP)与方向梯度直方图(HOG)两种经典特征描述子的原理、实现方法及应用场景。结合OpenCV代码示例,展示如何利用LBP提取纹理特征、使用HOG进行目标检测,帮助读者掌握从图像中提取有效…

AI 应用开发的‘核心枢纽’:Dify、Coze、n8n、FastGPT、MaxKB、RAGFlow 等六大平台全面对决

在人工智能与自动化流程日益普及的当下&#xff0c;各类平台如雨后春笋般涌现&#xff0c;成为构建智能应用与自动化工作流的 “核心枢纽”。其中&#xff0c;Dify、Coze、n8n、FastGPT、MaxKB、RAGFlow 备受瞩目&#xff0c;它们各自具备独特的功能与优势&#xff0c;适用于不…

RV1126+OPENCV对视频流单独进行视频膨胀/腐蚀操作

一.RV1126OPENCV对视频流进行视频膨胀操作的大体流程图 思路&#xff1a;初始化VI与VENC模块&#xff0c;之后开启两个线程&#xff0c;一个线程从VI模块获取视频流数据&#xff0c;用Opencv的Mat将其转成Mat矩阵之后进行用dilate膨胀&#xff0c;将膨胀之后的视频数据用send函…

Cordova + Vue 移动端视频播放组件(支持 HLS + 原生播放器兜底)

在混合 App 中&#xff0c;移动端使用 标签播放视频经常踩坑&#xff0c;尤其是格式兼容、跨域限制、WebView 差异等问题。 本文介绍一个通用的 Cordova 视频播放组件&#xff1a;优先 HTML5 播放&#xff0c;播放失败自动提示用户使用系统播放器&#xff0c;并支持原生插件兜底…

【Linux】掌握vim编译器使用——详细教程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、Vim的三种核心模式解析 二、高效编辑核心命令大全 1. 光标快速导航 2. 文本编辑四连击 3. 高效搜索替换 三、Vim神技&#xff1a;批量注释与多文件编辑 1. 批量…

Oracle迁移瀚高,如何做表等对象与文件名一对一的文件脚本(APP)

文章目录 环境文档用途详细信息 环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7 版本&#xff1a;4.5 文档用途 Oracle迁移到瀚高后&#xff0c;需要整理一张表对应一个与表同名的脚本&#xff0c;一个函数对应一个与函数同名的脚本 详细信息 一、整理…

洞察分享 | 在万物互联的时代,如何强化网络安全,更有效地保护工业基础设施?

2025年&#xff0c;物联网&#xff08;IoT&#xff09;与互联系统已深度融入工业4.0的发展之中&#xff0c;同时也带来了前所未有的网络安全挑战。随着工业系统的互联互通不断加深&#xff0c;网络攻击的范围和类型不断增加&#xff0c;关键基础设施因此面临更高的网络风险暴露…

k8s 1.23.6版本apiserver list-watch原理机制

Kubernetes 1.23.6 版本中&#xff0c;API Server 的 **List-Watch 机制** 是集群状态同步的核心机制&#xff0c;其设计目标是高效、实时地将资源变更通知到各组件&#xff08;如 kubelet、controller-manager等&#xff09;。以下是其详细原理和工作机制&#xff1a; 1. 核心…

Linux基本指令篇 —— mkdir指令

mkdir是Linux和Unix-like系统中用于创建目录的基本命令&#xff0c;全称为"make directory"。下面将详细介绍这个命令的用法、选项和实际应用。 目录 一、基本语法 二、基本用法 创建单个目录 创建多个目录 三、常用选项 -p 或 --parents -m 或 --mode -v 或 …

聊聊GPIO 工作模式

嵌入式开发中&#xff0c;GPIO&#xff08;General-Purpose Input/Output&#xff09;是最基础也最常用的功能模块之一。你可以把它想象成微控制器伸出来的无数根“手脚”&#xff1a;既可以用它输出信号去点亮LED、驱动外设&#xff0c;也可以用它输入信号来检测按键、读取传感…