极简 WSL2 教程:开发、部署大模型必备

WSL 是什么?

Windows Subsystem for Linux (WSL)1,WSL = Windows Subsystem for Linux。Windows 里的 Linux 子系统。能在 Windows 系统中直接运行完整的 Linux 环境,无需安装虚拟机或配置双系统,且运行流畅无明显卡顿。Windows 的 C 盘 D 盘在 WSL 里路径是:/mnt/c/、/mnt/d/。

它和虚拟机有什么区别?

  • 虚拟机:笨重、占内存、开机慢、文件互通麻烦
  • WSL:轻量、秒开、和 Windows 深度融合、几乎无性能损耗
  • Windows11 现在默认就是 WSL2,非常成熟。
  • 运行各种开源项目更顺畅,不会遇到 Windows 特有的奇葩问题。

安装 WSL 的前提

WSL 只能安装在 Windows 10 和 Windows 11 上面。Windows 10 的版本号必须大于等于 2004,且内部编译版本必须大于等于 19041。

查看你的 Windows 版本

按键盘的Win + R,然后输入winver,点击确定按钮。

查看上面截图中的版本号,如果你是 Windows10 且版本号大于等于 2004,OS 内部版本大于等于 19041,就可以安装 WSL。

Windows 的版本号命名规则

版本 2004:前两位代表 2020 年,04 代表 2020 年的 4 月份。

版本: 23H2: 前两位 23 代表 2023 年,H2 代表 2023 年的下半年。H1 代表 2023 年的上半年。

OS 内部版本:OS Build 代表 Windows 的内核编译版本。

安装 WSL

注意不要通过命令行的方式安装 WSL

不要通过wsl --install命令行的方式去安装 WSL,会出现安装进度卡在 0.0%的情况。微软官方自己都说了。

查看 WSL 的版本

cmd 复制代码
wsl --version
wsl --status

设置 WSL 的默认版本为 WSL2

如果你的 WSL 版本不是以 2 开头的,请务必执行如下命令,将你的 WSL 版本设置为 WSL2。这是微软官方的建议。

csharp 复制代码
# 设置 WSL2 为默认版本
wsl --set-default-version 2

查看可用的安装列表

css 复制代码
wsl --list --online

上图中前面带*号是默认的 Linux 发行版本。很多人不知道 Linux 发行版本是什么意思,Linux 本身并不是一个完整的操作系统。Linux 只是一个操作系统的内核,就像安卓系统一样。如果你的安卓手机是原生的安卓系统,那基本上没法正常使用。Linux 发行版,就相当于小米公司的手机操作系统一样。小米手机的操作系统是基于开源的安卓系统开发的。WSL 默认的 Ubuntu(乌班图)就是开源社区基于 Linux 内核开发出的一个更易使用的 Linux 操作系统。

手工安装 WSL

由于 wsl --install 命令安装 WSL 极易出现进程卡死问题,因此本文采用手动方式安装。首先需通过以下命令确保 Windows 系统已开启 WSL 相关功能:

启用 WSL 功能

bash 复制代码
# 启用 WSL 功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

查看 WSL 功能是否已启用

bash 复制代码
# 检查 WSL 功能状态
dism.exe /online /get-featureinfo /featurename:Microsoft-Windows-Subsystem-Linux

启用虚拟机平台(WSL2 必需)

bash 复制代码
# 启用虚拟机平台(WSL2 必需)
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

查看虚拟机平台是否已启用

bash 复制代码
# 检查虚拟机平台状态
dism.exe /online /get-featureinfo /featurename:VirtualMachinePlatform

下载并安装 WSL2 内核更新包

下载 WSL2 的内核安装包: [wsl_update_x64.msi]。下载地址为: WSL2 内核更新包下载地址2 。

WSL2 内核(Kernel)是运行 WSL2 的 "底层驱动 / 核心程序"(实际文件)。WSL2 架构是 Windows 系统 "支持" 运行 WSL2 的模式(软件逻辑)。「WSL2 架构」和「WSL2 内核」是两回事。虽然你电脑能支持 wsl 命令,但是依然需要安装 WSL2 的内核更新包。

WSL 的内核安装成功后,我们还需要安装 Ubuntu 这个 Linux 操作系统。

下载 Ubuntu 22.04 离线安装包(微软官方)

Ubuntu 下载地址:Ubuntu 22.04 安装包下载地址3。

下载完成后,在 PowerShell 中切换到安装包的下载目录,执行以下 Add-AppxPackage 命令解压 Ubuntu 安装包:

bash 复制代码
# 解压Ubuntu安装包
Add-AppxPackage .\Ubuntu2204-221101.AppxBundle
vbnet 复制代码
# 找到解压后的ubuntu的可执行命令
Get-Command *ubuntu* | Select-Object Name, Source

下载的 .AppxBundle 是 Ubuntu 的 "安装包文件",执行 Add-AppxPackage 仅把文件解压到系统目录,但 Ubuntu 作为 WSL 分发版,需要手动执行一次启动程序完成:

makefile 复制代码
# 执行系统里的 ubuntu.exe 完成初始化注册
C:\Users\yourname\AppData\Local\Microsoft\WindowsApps\ubuntu.exe

请务必记录好安装过程中设置的用户名和密码(后续操作需频繁使用)。

安装成功了

查看 WSL 的状态

在PowerShell命令行窗口里面执行如下命令,查看 WSL 的状态:

bash 复制代码
# 查看wsl的状态
wsl --status

查看已安装的 Linux 发行版及对应的 WSL 版本

bash 复制代码
# 查看wsl的已安装的Linux发行版本
wsl --list --verbose
# 简写版(效果一样)
wsl -l -v

使用 WSL

WSL Settings-设置 WSL

打开 WSL

通过 PowerShell 命令启动 Ubuntu

bash 复制代码
#通过 WSL 命令启动
wsl -d Ubuntu

直接以 root 用户启动 Ubuntu

bash 复制代码
# 直接以root用户启动Ubuntu
wsl -u root

切换到 root 用户 sudo -i

bash 复制代码
# 切换到root用户,需要输入普通用户的密码
sudo -i

给 root 用户设置密码 sudo passwd root

bash 复制代码
# 给root用户设置密码,一定要记好你设置的密码
sudo passwd root

su 命令切换到 root 用户

bash 复制代码
#切换到root用户
su

WSL 的官方文档

WSL 的官方文档4

常见问题

常见问题5

结尾

关注我,下篇文章分享通过 WSL 的方式安装 OpenCode。这是 OpenCode 官方建议的在 Windows 上面的安装方式。通过 WSL 安装 OpenCode 可以得到更好的兼容性和更高的性能。

最重要的是:通过 WSL 安装ollama更加方便,也不容易出现 Windows 独有的兼容性问题。

尤为重要的是:后续我们将通过 WSL 基于 ollama 部署本地大模型,相比直接在 Windows 系统部署,WSL 方式不仅操作更便捷,大模型的运行性能也更优。

本地大模型部署好之后,就不用花钱买Token了。关注我,(❁´◡`❁)。

参考资料 1

Windows Subsystem for Linux (WSL): learn.microsoft.com/en-us/windo...

2

wsl_update_x64.msi]`。下载地址为: [WSL2 内核更新包下载地址: wslstorestorage.blob.core.windows.net/wslblob/wsl...

3

Ubuntu 22.04 安装包下载地址: aka.ms/wslubuntu22...

4

WSL 的官方文档: learn.microsoft.com/zh-cn/windo...

5

常见问题: learn.microsoft.com/en-us/windo...

相关推荐
蜗牛攻城狮1 小时前
微前端四大方案选型对比与最佳实践:qiankun、micro-app、wujie、Module Federation
前端·微前端·qiankun·前端架构·micro-app·wujie
她说可以呀3 小时前
Vue插槽
前端·javascript·vue.js
qq_448011163 小时前
Vue + Jinja2两套模版与法冲突造成undefinedError
前端·javascript·vue.js
aixingpan3 小时前
aixingpan.cn API开发文档:前端查询夏令时和时区接口指南
前端·php
2601_958352904 小时前
23.5×19mm 换掉一整条音频链?|A-68 集成了什么:ADC / DAC / 24.576MHz 时钟 / AEC / 波束降噪,主控仅需 6 根线
前端·音视频·ai降噪·回声消除·语音模块
志尊宝4 小时前
AI原生前端开发(039):AI辅助的Nuxt 4全栈开发
前端·vue.js·ai-native
FRing035 小时前
JavaScript入门到精通三十二(深拷贝、浅拷贝、递归函数)
开发语言·前端·javascript
excel6 小时前
双 Token 与前端使用 Crypto 公私钥鉴权换 Token,哪种方案更好?
前端·后端
外收内放6 小时前
Python基础语法练习题(73)
java·前端·python
风骏时光牛马6 小时前
面向复杂场景的大模型应用落地与能力优化实践
前端