Win10安装WSL2全攻略:Ubuntu 20.04 部署至F盘并彻底解决网络连接问题

参考链接:全网最全Win10/11系统下WSL2+Ubuntu20.04的全流程安装指南(两种支持安装至 D 盘方式)_win10安装wsl2-ZEEKLOG博客

前言

WSL2(Windows Subsystem for Linux 2)是 Windows 提供的一种轻量级 Linux 运行环境,具备完整的 Linux 内核,并支持更好的文件系统性能和兼容性。它允许用户在 Windows 系统中运行 Linux 命令行工具和应用程序,而无需安装虚拟机或双系统。

一、安装 WSL2

  1. 启用 Windows 子系统(WSL)功能

快捷键“win+x”打开PowerShell(管理员模式),在 PowerShell(管理员模式)中运行:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 
image.png

解释:

  • /all:在所有用户上启用该功能
  • /norestart:启用功能后不会立即重启
  1. 启用虚拟机平台功能

WSL2 依赖 Windows 虚拟机功能,需要额外启用:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart 
image.png
  1. 将 WSL 默认版本设置为 WSL2(视情况而定)
wsl --set-default-version 2 

注意:

  • Windows 11 默认已安装 WSL2,不需要执行该命令。
  • Windows 10 用户 需要执行此命令,否则默认使用 WSL1。
  1. 重启电脑

以上命令执行完成后,请重启电脑,以确保所有更改生效。

二、WSL2 安装 Ubuntu-20.04 至 **F盘**

    1. 运行以下命令,将 Ubuntu-20.04 重新导入到 F:\WSL\Ubuntu-20.04
    2. 赋予新用户 sudo 权限
  1. 修改默认登录用户为普通用户(可选)
    1. 再次启动 WSL:

以管理员身份运行PowerShell,执行命令:

ubuntu2004 config --default-user yourusername 

创建新用户,在 WSL 终端(默认 root)下运行:⚠ 注意:请把 yourusername 替换为你想使用的用户名

adduser yourusername 

系统会要求你输入:新密码用户信息(全部可以直接回车跳过)

导入完成后,你可以启动 WSL:

wsl -d Ubuntu-20.04 

但此时,你会发现默认以 root 用户登录,因为 WSL 手动导入的 Ubuntu 不会自动创建普通用户,需要我们手动创建。

启动 Ubuntu-20.04

usermod -aG sudo yourusername 

取消注册原有的 Ubuntu-20.04,如果你已经安装了 Ubuntu-20.04(默认在 C 盘),可以将其从 WSL 注销:

wsl --unregister Ubuntu-20.04 

导出 Ubuntu-20.04.tar 文件运行以下命令,将 Ubuntu-20.04 重新导入到 F:\WSL\Ubuntu-20.04.tar

wsl --export Ubuntu-20.04 F:\WSL\ubuntu20.04.tar 

执行以下命令,查看已安装的WSL分发列表:

 wsl --list --verbose 
image.png

安装 Ubuntu-20.04进入Microsoft store,搜索Ubuntu 20.04,点击下载

image.png

首先,查看可用的 WSL 发行版:

wsl --list --online 
image.png

下载并导出 Ubuntu-20.04

wsl --import Ubuntu-20.04 F:\WSL\Ubuntu-20.04 F:\WSL\ubuntu20.04.tar --version 2 
image.png

创建文件夹F盘 创建 WSL 文件夹

image.png
wsl -d Ubuntu-20.04 
image.png

三、WSL2 Ubuntu 20.04 网络连接故障

问题现象:

  • WSL2 内的 Ubuntu 20.04 无法访问互联网。
  • Ping 任何外部公网 IP 地址(如 8.8.8.8)都不通。
  • 排除了网关、IP 配置和 DNS 的问题。

根本原因:

在某些情况下(尤其是在使用了某些 VPN 软件或企业网络环境后),主机的网络接口发生变化,导致 WSL2 的虚拟网络无法正常路由。

解决方案:使用 WSL-VPNKIT

这是一个专门为解决此类问题而设计的工具,它通过提供一个稳定的虚拟网络接口来恢复 WSL2 的网络连接。

参考链接:https://www.ghostchu.com/fix-wsl-no-internet-connection/

下载链接:GitHub - sakai135/wsl-vpnkit:在被 VPN 阻止时提供与 WSL 2 的网络连接

安装与使用步骤

1.安装目录下运行

wsl --import wsl-vpnkit $env:USERPROFILE\wsl-vpnkit wsl-vpnkit.tar.gz --version 2 wsl -d wsl-vpnkit wsl.exe -d wsl-vpnkit service wsl-vpnkit start 
image.png

2.WSL-VPNKIT开机自启动

由于 WSL-VPNKIT 不会开机自启动,需要创建一个脚本帮助恢复桥接

a.创建 start-wsl2-vpn-bridge.bat 文件,内容如下:

@echo off wsl.exe -d wsl-vpnkit service wsl-vpnkit start 

b.打开任务计划程序

按 Win + R,输入 taskschd.msc 回车

c.创建任务

image.png

d.配置 创建任务<常规>

特别需要注意的是,一定要勾选“使用最高权限运行”

image.png

e.配置 创建任务<触发器>

image.png

f.配置 创建任务<触发器>

image.png

g.点击确定,重启测试

image.png

四、ubuntu 20.04 设置国内镜像源

1.备份原始源文件

sudocp /etc/apt/sources.list /etc/apt/sources.list.backup 

2.编辑源文件

sudovim /etc/apt/sources.list 

3.清华大学源

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse 

4.更新

sudoapt update sudoapt upgrade 

Read more

【前端】Vue 组件开发中的枚举值验证:从一个Type属性错误说起

【前端】Vue 组件开发中的枚举值验证:从一个Type属性错误说起

🌹欢迎来到《小5讲堂》🌹 🌹这是《小程序》系列文章,每篇文章将以博主理解的角度展开讲解。🌹 🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!🌹 👨💻 作者简介 🏆 荣誉头衔:2024博客之星Top14 | ZEEKLOG博客专家 | 阿里云专家博主 🎤 经历:曾多次进行线下演讲,亦是 ZEEKLOG内容合伙人 以及 新星优秀导师 💡 信念:“帮助别人,成长自己!” 🚀 技术领域:深耕全栈,精通 .NET Core (C#)、Python、Java,熟悉主流数据库 🤝 欢迎交流:无论是基础概念还是进阶实战,都欢迎与我探讨! 目录 * 前言 * 解决过程 * 一、错误场景还原 * 1.1 错误发生的位置 * 1.2 常见的触发场景 * 二、深入理解 Vue

By Ne0inhk

openclaw web UI 无法访问 not found

## 问题解决总结 根本原因 :Gateway 的 resolveControlUiRootSync 函数在自动查找控制 UI 目录时,没有包含 node_modules/openclaw/dist/control-ui 作为候选路径。手动指定相对路径时,可能因为工作目录解析问题无法正确找到目录。 最终解决方案 : 1. 将控制 UI 文件从 node_modules/openclaw/dist/control-ui 复制到项目根目录       E:\你实际的目录\control-ui       (建立一个英文,且没有符号的目录,“-”和“_",会引起混淆) 2. 在配置文件中使用绝对路径指定 controlUi.root: "E:\\你实际的目录\\control-ui" 编辑 openclaw.json "

By Ne0inhk
JavaScript 中 var、let、const 的核心区别与实战应用

JavaScript 中 var、let、const 的核心区别与实战应用

要理解 const、var、let 的区别,我们可以从 作用域、变量提升、可重复声明、可修改性 这几个核心维度展开,这些也是新手最容易混淆的点。 一、核心概念铺垫 首先明确两个基础概念,能帮你更好理解区别: * 函数作用域:变量只在声明它的函数内部可访问(var 是函数作用域)。 * 块级作用域:变量只在声明它的 {} 内部可访问(let/const 是块级作用域,{} 包括 if/for/while/ 普通代码块)。 * 变量提升:JS 引擎在执行代码前,会把变量声明 “提升” 到当前作用域顶部(但赋值不会提升)。 二、逐个拆解 + 对比 1. var(ES5 语法) var 是 ES5 中声明变量的方式,特性如下:

By Ne0inhk