做儿童方面的网站,向总部建设网站申请书,高端大气的网站模板,网站的域名解析怎么做文章目录 前言WSL2安装#xff08;手动安装#xff09;WSL2基础使用VS Code与WSL2配合使用连接USB设备WSL2中使用GPU#xff08;RTX5060Ti 16G#xff09;与虚拟机兼容使用#xff08;Virtual Box#xff09;图形与桌面环境WSL消失#xff08;灾难性故障#xff09;问题… 文章目录 前言WSL2安装手动安装WSL2基础使用VS Code与WSL2配合使用连接USB设备WSL2中使用GPURTX5060Ti 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功能
接下来下载并安装合适的内核包并进行安装 x64https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi arm64https://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]
# defaultuser_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 --busidBUSID
# 后面如果attach有问题这里绑定时可能需要在加--force
# usbipd unbind --busidbusid接下来需要启动WSL2然后将USB设备连接过去这里文档说是不需要管理员方式去连接但是有可能失败可以再换管理员账户试试
usbipd attach --wsl --busidBUSID
# usbipd detach --busidBUSID
# 需要注意的是如果要拔出USB设备一定要先用命令断开连接不然有可能之后再连会连不上需要重启电脑或者说重启下服务连接后可以在Linux中看到USB设备
# sudo apt install usbutils
lsusbUSB设备在Linux中使用可能还会又别的问题可以参考下面情况 https://blog.csdn.net/G_C_H/article/details/125939941
WSL2中使用GPURTX5060Ti 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功能 WinR输入 OptionalFeatures 回车中相关功能。在从项目地址 https://github.com/microsoft/WSL 下载完整的WSL组件进行安装。安装完成后重新打开 Windows功能 中相关功能。这样一套下来就可以恢复正常使用了。
相关内容也可以参考https://blog.csdn.net/m0_62815143/article/details/141285504
后记
目前来说WSL2使用起来已经比较方便了虽然也存在很多问题但是毕竟在原生系统和虚拟机之间提供了更多的可能性对于很多应用场景下这个确实是比较合适的方案。