Skip to main content

安装 WSL

WSL 是Windows 自带的 Linux 子系统,不需要安装第三方虚拟机,可以直接控制计算机硬件,并且支持各种Linux 发行版(比如 UbuntuCentOS),这里安装的是Ubuntu-24.04。比如 Linux 系统比Windows更适合做 AI,但是Vmware 里的虚拟机 无法直接连接到显卡,而 WSL 可以直接控制显卡。

步骤一:启动子系统以及虚拟化

以管理员方式打开power shell

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

然后

  • 打开 控制面版

  • 访问 程序和功能 子菜单 打开或关闭Windows功能

  • 选择 适用于Linux的Windows子系统虚拟机平台与 `Hyper-V"

  • 点击“确定”

image-20250307114111924

注:因为我们使用命令行已经执行,所以下边的打勾了,但hyper-v没有,

所以我们要手动打勾,然后点击确定,

以上步骤重启电脑后生效



步骤二:安装内核

接下来安装内核, 直接下载:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

直接点击安装


升及到最新版

wsl --update

将 WSL 默认版本设置为 WSL 2

wsl --set-default-version 2

确认没有安装其他WSL系统

wsl -l -v

image-20250307125619527


查看分发系统

wsl -l -o  # wsl --list --online

image-20250307125723129


安装我们需要的系统

wsl --install -d Ubuntu-24.04

完事就全部安装在c盘,安装过程也会有要求输入用户名和密码的环节

image-20250307125801751

输入一个用户名,注意不能用大写的

最后安装成功

image-20250307125824980

需要打开时,直接从 开始 窗口找即可

image-20250307125845765



步骤三:修改密码

接下来要修改默认的 root密码

进入root账号, 修改root账号的密码

sudo su
passwd


步骤四:检查系统

查看系统版本

sudo apt update
sudo apt install neofetch
neofetch

image-20250307130233366


查看系统架构

uname -m

x86_64 表示你在运行 64 位系统

i686 或 i386 表示你在运行 32 位系统


查看为 WSL 分配的内存总量

free -h

查看 WSL 分区的硬盘使用情况

df -h

image-20250307130431576


如果主机安装了英伟达显卡,可以检查一下是否成功连接

nvidia-smi

image-20250307130542947

danger

注意

  • WSL里面不需要再重新安装显卡驱动!只要主机里有显卡驱动 而且支持WSL即可

  • 况且现在Nvidia的 最新显卡驱动里都已经集成了 对WSL的支持

  • 这个显卡驱动是装在 unix user的环境里的,所以使用 root 是连不上显卡的

  • 主机的c,d盘 挂载在 /mnt 目录下



步骤五:开启 SSH

WSL本质上也是一种虚拟机,只是可以直接控制主机硬件

所以其 IP 地址和 主机是不一样的,因此不会出现端口冲突问题


检查 SSH 服务的状态

sudo apt update
sudo service ssh status

WSL中 SSH 默认未安装,如果未安装,则如下安装

sudo apt install openssh-server
sudo service ssh start
sudo systemctl enable ssh

再次 检查SSH 服务的状态

sudo service ssh status

此时,SSH还是默认root用户不可以远程登录的,因此可以如下修改

vim /etc/ssh/sshd_config

加上这一行(或取消注释) PermitRootLogin yes

然后重启 SSH

sudo service ssh restart


步骤六:开启 FRP 远程连接(可选)

由于 WSL 是在本地运行的,只能在局域网内访问或连接。

如果想在异地远程连接 WSL,需要使用 FRP 内网穿透工具,这里使用的是 Sakura FRP

sudo bash -c ". <(curl -sSL https://doc.natfrp.com/launcher.sh)"

这段指令会去运行一个由 Sakura FRP 官方维护的在线脚本

这会安装Docker,并在创建名为 natfrp-service 的容器

同时创建 /etc/natfrp 文件夹用于存储启动器配置文件

需要输入 SakuraFrp 的 访问密钥 和 远程管理密码, 请前往官网获取: SakuraFrp


Docker 模式安装成功后, 你可使用下面的命令管理服务:

  • 查看日志 docker logs natfrp-service

  • 停止服务 docker stop natfrp-service

  • 启动服务 docker start natfrp-service

通过远程面板启动这个隧道就可以了

danger

在通过 SSH 连接到 WSL (Windows Subsystem for Linux) 环境时,某些环境变量(特别是 PATH 环境变量)可能没有被正确传递或设置,导致系统找不到 nvidia-smi 命令。比如下图中,上面的是ssh连接,下面的是本地终端:

image-20250307131727718


要确保通过 SSH 连接时的 PATH 环境变量与本地终端相同,你可以在你的用户的 .bashrc 文件中设置一个更全面的 PATH。这样,不论是直接登录还是通过 SSH 连接,环境变量都将保持一致。

vim ~/.bashrc

在文件的末尾,添加以下行来设置 PATH。这里包括了你在本地终端中显示的所有路径:

export PATH="$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Program Files/Eclipse Adoptium/jre-21.0.5.11-hotspot/bin:/mnt/c/Program Files (x86)/VMware/VMware Workstation/bin/:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0/:/mnt/c/Windows/System32/OpenSSH/:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Program Files/NVIDIA Corporation/NVIDIA app/NvDLISR:/mnt/c/Program Files/NVIDIA Corporation/NVIDIA NvDLISR:/mnt/c/Program Files/Git/cmd:/mnt/c/Users/HeiheServer/AppData/Local/Programs/Python/Python313/Scripts/:/mnt/c/Users/HeiheServer/AppData/Local/Programs/Python/Python313/:/mnt/c/Users/HeiheServer/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/HeiheServer/AppData/Local/Programs/Microsoft VS Code/bin:/snap/bin"

注意:路径中包含空格的部分需要用反斜杠 \ 进行转义。


重新加载 .bashrc:

source ~/.bashrc

重新通过 SSH 连接到你的服务器,然后检查 PATH 是否如预期设置

echo $PATH


至此, WSL 已经安装完毕