当前位置: 首页 > news >正文

【Linux】WSL:Win运行Linux

WSL2(Windows Subsystem for Linux 2) 是 Microsoft 开发的技术,可在 Windows 系统上运行完整的 Linux 发行版环境。以下是详细的配置教程。

安装与配置

启用 WSL 功能

  1. 打开“开始”菜单,搜索 PowerShell,以 管理员身份运行

  2. 在 PowerShell 中输入以下命令并回车:

    wsl --install
    

    该命令会自动启用 WSL 并安装 Ubuntu 作为默认 Linux 发行版。

  3. 安装完成后,系统会提示重启计算机。请重启。

配置 Ubuntu

  1. 首次启动:启动 WSL 时系统会提示您创建一个默认的 UNIX 用户账户。

  2. 创建账户:

    • 输入一个新的用户名(可自定义)。
    • 为该用户设置密码。
  3. 更新系统: 在 Linux 终端中运行以下命令更新软件包:

    sudo apt update && sudo apt upgrade -y
    

下面是简短的 Windows Subsystem for Linux (WSL) 发行版管理操作指南:

启动 WSL 发行版

  1. 启动命令行:打开 PowerShell命令提示符 (cmd)。

  2. 启动 WSL:输入以下命令:

    wsl
    
  3. 启动特定发行版:输入:

    wsl -d <发行版名称>
    

    例如,要启动 Ubuntu:

    wsl -d Ubuntu
    

下载 WSL 发行版

  1. 打开 Microsoft Store:在搜索栏中输入 “Microsoft Store” 并打开。
  2. 搜索 WSL 发行版:在商店中搜索你想要的发行版(如 Ubuntu、Debian 等)。
  3. 安装:点击“获取”或“安装”按钮,等待下载和安装完成。

移除 WSL 发行版

  1. 打开 PowerShell:以管理员身份运行 PowerShell。

  2. 列出已安装的发行版

    wsl --list --verbose
    
  3. 卸载指定发行版

    wsl --unregister <发行版名称>
    

    例如,卸载 Ubuntu:

    wsl --unregister Ubuntu
    

其他常用命令

  • 设置默认发行版:

    wsl --setdefault <发行版名称>  
    
  • 更新 WSL

    wsl --update
    
  • 检查 WSL 版本

    wsl --list --verbose
    

开机自启并后台运行

配置任务计划程序

  1. 打开任务计划程序:

    • Win + S,搜索 任务计划程序 并打开。
  2. 创建任务:

    • 点击右侧 创建任务
    • 常规 选项卡中:
      • 名称:WSL_Background_Start(可自定义)。
      • 勾选 使用最高权限运行
      • 配置为:选择当前 Windows 版本。
  3. 设置触发器:

    • 转到 触发器 选项卡,点击 新建
    • 开始任务 下拉框中选择 系统启动时
    • 点击 确定
  4. 设置操作:

    • 转到 操作 选项卡,点击 新建

    • 启动程序 中输入:wsl.exe

    • (可选)添加参数,例如运行指定的命令:

      -d Ubuntu --exec /bin/bash
      
  5. 保存任务:

    • 点击 确定 完成任务创建。

验证任务启动

  1. 重启计算机。

  2. 登录后运行以下命令确认 WSL 是否已启动:

    wsl --list --running
    

与主机共享 IP

默认情况下,Windows 防火墙会允许来自本地计算机(即从 Windows 主机到 WSL2,或者反向通信)的流量。这意味着,即使没有进行端口转发或特别配置,主机与 WSL2 之间的内网通信也是允许的。在启用 networkingMode=mirrored 的情况下,WSL2 会和主机共享相同的网络配置。这样,WSL2 和主机之间的网络通信变得更为直接,因为它们使用相同的物理网络适配器。

  • 在这种模式下,WSL2 会通过主机的物理网络接口与其他设备通信,而无需单独的虚拟交换机或端口转发。
  • 主机和 WSL2 共享 IP 地址段,可以通过同一 IP 地址进行直接通信。

编辑主机上的 .wslconfig 配置文件

  1. 打开文件资源管理器

    • Win + E 打开文件资源管理器。
  2. 进入 WSL 配置目录

    • 导航到主机的 WSL 配置文件目录:

      C:\Users\<YourUserName>\.wslconfig
      
    • 如果 .wslconfig 文件不存在,可以手动创建该文件。

  3. 编辑 .wslconfig 文件

    • 使用文本编辑器(如 Notepad)打开 .wslconfig 文件。
    • 如果该文件不存在,您可以新建一个。
  4. 添加或修改配置: 在 .wslconfig 文件中,添加以下配置来启用镜像模式的网络设置:

    [wsl2]
    networkingMode=mirrored
    
    • networkingMode=mirrored:这个设置将会使 WSL2 的网络配置与主机的网络配置进行镜像,即 WSL2 会使用主机的网络接口配置。
  5. 保存并关闭文件

重启 WSL2

  1. 关闭所有正在运行的 WSL2 实例

    • 打开 PowerShell(以管理员身份)并运行以下命令:

      wsl --shutdown
      
  2. 重新启动 WSL2

    • 在 WSL2 中重新启动,或者通过 Windows Terminal 启动:

      wsl
      

验证网络配置

  1. 打开 WSL2 终端,执行以下命令来验证网络设置:

    ip addr
    
  2. 检查输出,确认 WSL2 使用了主机的网络接口,并且 eth0 或其他网络接口的配置已镜像主机的 IP 地址。

运行 WSL2 中的服务

  1. 启动一个 HTTP 服务(以 8080 端口为例):

    python3 -m http.server 8080 --bind 0.0.0.0
    

    这样,WSL2 中的服务会在 8080 端口上监听,并且可以接受来自任何设备的连接。

配置 Windows 防火墙

为了允许局域网中的其他设备访问 WSL2 中的服务,您需要确保 Windows 防火墙允许外部设备访问相关端口。例如,允许访问 8080 端口:

  1. 打开 PowerShell 以管理员身份运行:

    New-NetFirewallRule -DisplayName "Allow WSL2 HTTP 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow
    

    这会允许来自局域网的设备访问 Windows 主机的 8080 端口,进而访问 WSL2 中的服务。

查找主机的 IP 地址

由于 WSL2 和主机共享相同的网络接口,您可以通过主机的 IP 地址访问 WSL2 中的服务。要获取 Windows 主机的 IP 地址,可以执行以下步骤:

  1. 打开 PowerShell 或命令提示符,运行以下命令:

    ipconfig
    
  2. 查找适配器列表中的 IPv4 地址,这是您的主机 IP 地址。通常,它位于 “以太网适配器” 或 “无线局域网适配器” 部分。

从局域网设备访问服务

在局域网中的其他设备上,使用 Windows 主机的 IP 地址和暴露的端口(例如 8080)来访问 WSL2 中的服务。例如:

http://<Windows主机的IP>:8080

这将使您可以通过局域网中的其他设备访问 WSL2 中运行的 Web 服务。

C++ 开发环境部署

  1. 更新系统包:

    sudo apt update && sudo apt upgrade -y
    
  2. 安装 gccg++make

    sudo apt install -y build-essential
    
  3. 安装调试工具 gdb 和代码格式化工具 clang-format(可选):

    sudo apt install -y gdb clang-format
    

Python 开发环境部署

  1. 下载 Miniconda:

    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh
    
  2. 安装 Miniconda:

    bash ~/miniconda.sh
    
    • 选择默认路径(通常是 ~/miniconda3)。
  3. 激活 Miniconda 环境:

    source ~/miniconda3/bin/activate
    
  4. 初始化 Shell 支持:

    conda init
    
  5. 创建和管理虚拟环境:

    conda create -n dev_env python=3.9 -y
    conda activate dev_env
    
  6. 安装常用库:

    conda install numpy pandas matplotlib
    

Docker 开发环境部署

  1. 更新包并安装依赖:

    sudo apt-get update
    sudo apt-get install ca-certificates curl
    
  2. 添加 Docker 的 GPG 密钥和官方源:

    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    
  3. 安装 Docker:

    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  4. 配置非 root 用户使用 Docker:

    sudo groupadd docker
    sudo usermod -aG docker $USER
    newgrp docker
    
  5. 验证 Docker 安装:

    docker run hello-world
    

NodeJS 开发环境部署

  1. 安装 NVM ,并重新加载 shell 配置文件

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
    source ~/.bashrc
    
  2. 验证 NVM 安装

    command -v nvm
    
  3. 安装 Node.js LTS 版本

    nvm install --lts
    
  4. 使用安装的 Node.js 版本

    node -v
    npm -v
    
  5. 设置默认版本

    nvm use --lts
    nvm alias default lts/*
    

相关文章:

【Linux】WSL:Win运行Linux

WSL2&#xff08;Windows Subsystem for Linux 2&#xff09; 是 Microsoft 开发的技术&#xff0c;可在 Windows 系统上运行完整的 Linux 发行版环境。以下是详细的配置教程。 安装与配置 启用 WSL 功能 打开“开始”菜单&#xff0c;搜索 PowerShell&#xff0c;以 管理员身…...

js循环导出多个word表格文档

文章目录 js循环导出多个word表格文档一、文档模板编辑二、安装依赖三、创建导出工具类exportWord.js四、调用五、效果图js循环导出多个word表格文档 结果案例: 一、文档模板编辑 二、安装依赖 // 实现word下载的主要依赖 npm install docxtemplater pizzip --save// 文件操…...

Spring Boot 日志 配置 SLF4J 和 Logback

前言 在开发 Java 应用时&#xff0c;日志记录是不可或缺的一部分。日志可以记录应用的运行状态、错误信息和调试信息&#xff0c;帮助开发者快速定位和解决问题。Spring Boot 项目默认集成了 SLF4J 和 Logback&#xff0c;使得日志配置变得简单而灵活。本文将详细介绍如何在 …...

企业级包管理器:专栏概述 (1)

在当今的前端开发领域&#xff0c;包管理器已经成为了每一位开发者不可或缺的工具。它们就像一个个神奇的工具箱&#xff0c;里面装满了各种各样的工具&#xff08;即软件包&#xff09;&#xff0c;帮助我们快速搭建项目、实现功能&#xff0c;极大地提高了开发效率。接下来&a…...

【动手学电机驱动】STM32-MBD(1)安装 STM32 硬件支持包

STM32-MBD&#xff08;1&#xff09;安装 STM32 硬件支持包 【动手学电机驱动】STM32-MBD&#xff08;1&#xff09;安装 STM32 硬件支持包 1. 必须的软硬件条件2. 嵌入式硬件支持包2.1 Embedded Coder2.2 嵌入式硬件支持包2.3 Embedded Coder Support Package for STMicroelec…...

书后习题答案:《Python程序设计基础(第2版)》,电子工业出版社,2020.01

【持续更新】 第3章 from math import *x1 float(input("请输入x1: ")) # print(x1) x2 float(input("请输入x2: ")) y1 float(input("请输入y1: ")) y2 float(input("请输入y2: "))dis sqrt(pow(x1 - x2, 2) pow(y1 - y2, 2))…...

Qt之第三方库‌QXlsx使用(三)

Qt开发 系列文章 - QXlsx&#xff08;三&#xff09; 目录 前言 一、Qt开源库 二、QXlsx 1.QXlsx介绍 2.QXlsx下载 3.QXlsx移植 4.修改项目文件.pro 三、使用技巧 1.添加头文件 2.写入数据 3.读出数据 总结 前言 Qt第三方控件库是指非Qt官方提供的、用于扩展Qt应用…...

Python通过global实现多文件共享全局参数,方法

Python通过global实现多文件共享全局参数 global关键字,全局变量 基础用法 这种用法&#xff0c;不能在其他的py文件中使用&#xff0c; x 6 def func():global x #定义外部的xx 10 func() print (x) #输出10共享参数 新建glo.py文件&#xff08;全局变量文件&#xff09;…...

DevOps工程技术价值流:项目构建工具的选择与实践

在快速迭代的软件工程领域&#xff0c;项目构建工具扮演着举足轻重的角色。它们不仅自动化了构建、测试、打包和部署等关键环节&#xff0c;还显著提升了开发效率和质量。本文将深入探讨后端常用的Maven和Gradle&#xff0c;以及前端不可或缺的NPM&#xff0c;并重点对比Maven与…...

【数据库】复习

数据库期中复习——概念填空_在修改数据结构时,为了保证数据库的数据独立性-CSDN博客 选择题 关系数据理论-数据库习题_数据库关系理论考题-CSDN博客 关系、关系模式、关系模型区别和联系 关系&#xff1a;元组的集合&#xff0c;一张表 关系模式&#xff1a;关系的描述 R(…...

CorsConfig前后端数据跨域连接,IDEA右侧Maven窗口消失

前后端数据跨域连接&#xff08;分页查询并显示&#xff09; 一、后端添加分页查询 分页查询核心就是&#xff1a;每页需要显示多少条记录(pageSize)&#xff0c;当前查看第几页(pageNum);MySQL提供了分页函数limit m,n select * from table limit (pageNum-1)*pageSize, pa…...

Python微博动态爬虫

本文是刘金路的《语言数据获取与分析基础》第十章的扩展&#xff0c;详细解释了如何利用Python进行微博爬虫&#xff0c;爬虫内容包括微博指定帖子的一级评论、评论时间、用户名、id、地区、点赞数。 整个过程十分明了&#xff0c;就是用户利用代码模拟Ajax请求&#xff0c;发…...

【设计模式】单例模式 在java中的应用

文章目录 引言什么是单例模式单例模式的应用场景单例模式的优缺点优点缺点 单例模式的基本实现饿汉式单例模式懒汉式单例模式双重检查锁定静态内部类枚举单例 单例模式的线程安全问题多线程环境下的单例模式线程安全的实现方式1. **懒汉式单例模式&#xff08;线程不安全&#…...

burp suite 8

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…...

为什么在Java中super与this不能共存于子类构造器中,其中this起什么作用

在 Java 中&#xff0c;super 和 this 是两个关键字&#xff0c;它们在子类的构造器中有特定的用途和限制。 super 关键字&#xff1a; super 用于从父类&#xff08;超类&#xff09;访问成员&#xff08;属性和方法&#xff09;或者调用父类的构造方法。 在子类的构造器中&…...

Hypothesis:高效的 Python 测试工具

简介&#xff1a;Hypothesis 是一个强大的 Python 测试库&#xff0c;旨在自动生成各种测试案例&#xff0c;以帮助开发者发现潜在的边界问题和隐藏的错误。通过对输入数据进行智能化的探索&#xff0c;Hypothesis 能够为测试提供更全面的覆盖&#xff0c;避免遗漏一些极端或不…...

Terminus Calculator 计算原理分享

在《使命召唤&#xff1a;黑色行动 6》僵尸模式中&#xff0c;Terminus 关卡的研究办公室里有一个复杂的数学谜题需要解决。为了获得多相共振器&#xff0c;玩家需要计算出三个数字并输入电脑。虽然可以花费 5000 精华来获得答案&#xff0c;但使用 Terminus Calculator 可以更…...

Wwise 使用MIDI文件、采样音频

第一种&#xff1a;当采样音频只有一个文件的时候 1.拖入MIDI文件到Interactive Music Hierarchy层级 2.拖入采样音频到Actor-Mixer Hierarchy层级 3.勾选MIDI显示出面板&#xff0c;设置Root Note与采样音频音高相同&#xff0c;这里是C#5 4.播放测试&#xff0c;成功&…...

在CentOS上无Parallel时并发上传.wav文件的Shell脚本解决方案

在CentOS上无Parallel时并发上传.wav文件的Shell脚本解决方案 背景概述解决方案脚本实现脚本说明使用指南注意事项在CentOS操作系统环境中,若需并发上传特定目录下的.wav文件至HTTP服务器,而系统未安装GNU parallel工具,我们可通过其他方法实现此需求。本文将介绍一种利用Sh…...

【RocketMQ 源码分析(一)】设计理念与源码阅读技巧

RocketMQ 的设计理念与源码阅读技巧 一、设计理念二、源码设计三、源码阅读技巧 一直想仔细仔细看看这个 RocketMQ 的源码&#xff0c;学学它的设计思想和编码风格&#xff0c;没准在以后自己在设计和编码的时候有思考的方向。这是专栏的第一篇 —— 介绍下 RocketMQ 的一些设计…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...