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

Windows11安装Linux子系统,并实现服务自启动,局域网访问,磁盘挂载

Windows11安装Linux子系统,并实现服务自启动,局域网访问,磁盘挂载

  • 一、准备工作
  • 二、安装Linux子系统(wsl2)
  • 三、为Linux子系统设置桥接网络
    • 检查wsl版本
    • 在 Hyper-V 管理器中创建虚拟交换机
    • 创建 WSL 配置文件
    • 启动wsl
  • 四、设置Windows开机自启动Linux子系统服务
  • 五、挂载物理磁盘
    • 先决条件
    • 挂载未分区磁盘
    • 挂载分区磁盘
    • 设置Windows开机自动挂载磁盘

环境:windows 11 专业版

一、准备工作

在安装Linux子系统之前,需要开启Windows功能,开启步骤如下:

  • 打开控制面板
  • 点击程序
  • 点击程序和功能->启用或关闭Windows功能
  • 在弹出的界面中勾选适用于Linux的Windows子系统
  • 勾选Hyper-V(如果需要桥接网络则需要开启)
  • 在这里插入图片描述

注:桥接网络可以使得Linux子系统与windows在同一个网段中,从而使得局域网站中的其他电脑可以直接访问Linux子系统中的服务。

完成后重启电脑

二、安装Linux子系统(wsl2)

  • 打开Microsoft store

  • 搜索Windows Subsystem for Linux点击获取(Windows Subsystem for Linux允许开发人员直接在Windows上运行GNU/Linux环境(包括大多数命令行工具、实用程序和应用程序),无需修改,无需传统虚拟机或双引导设置的开销。)
    在这里插入图片描述

  • 安装完成后继续搜索Linux,选择自己需要的Linux发行版安装

  • 在这里插入图片描述

等待成功安装后,在开始->所有程序中就能看到对应的Linux子系统了,初次运行需要输入用户名和密码。

三、为Linux子系统设置桥接网络

桥接网络需要安装的为wsl2,默认情况下新安装的一般都为wsl2,可通过在cmd或PowerShell中输入命令wsl -l -v来检查当前wsl的版本

检查wsl版本

若当前版本为wsl1,则需要先更新wsl

  • 更新wsl --update
  • 检查版本wsl --version
  • 输入如下内容
WSL version: 0.70.0.0
Kernel version: 5.15.68.1
WSLg version: 1.0.45
MSRDC version: 1.2.3575
Direct3D version: 1.606.4
DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows version: 10.0.22621.675
  • 使用wsl --set-version <distro name> 2 命令将 <distro name> 替换为要更新的 Linux 发行版的名称。 例如,wsl --set-version Ubuntu-20.04 2 会将 Ubuntu 20.04 发行版设置为使用 WSL 2。
  • 关闭wslwsl --shutdown

在 Hyper-V 管理器中创建虚拟交换机

  • 运行 Hyper-V 管理器

    • 在左侧选择您的电脑
    • 在右侧选择虚拟交换机管理器
    • 在管理器中选择“新建虚拟网络交换机”
    • 在右侧选择“外部”
    • 然后单击“创建虚拟交换机”
    • 在“名称:”下输入独特的名称,例如“WSL_external”
    • 确保选择确切的物理适配器(WiFi、LAN 等),并且由于这很可能是您唯一的适配器,因此选中“允许管理操作系统共享此网络适配器”下的复选框
    • 申请、是、确定
    • 在这里插入图片描述
      在这里插入图片描述

    创建 WSL 配置文件

    • 在 PowerShell 提示符下,继续(如果出现错误,则需要以管理员方式打开)
    cd ~
    New-Item .wslconfig
    .\.wslconfig
    
    • 选择文本编辑器以打开文件
    • 如果你忘记了你的虚拟交换机的名称,请在PowerShell中运行以下命令:
    Get-VMSwitch -SwitchType External | Select Name, SwitchType, NetAdapterInterfaceDescription, AllowManagementOS
    
    • 我的电脑输出示例:
    Get-VMSwitch -SwitchType External | Select Name, SwitchType, NetAdapterInterfaceDescription, AllowManagementOSName         SwitchType NetAdapterInterfaceDescription                                     AllowManagementOS
    ----         ---------- ------------------------------                                     -----------------
    WSL_external   External Killer(R) Wi-Fi 6 AX1650x 160MHz Wireless Network Adapter (200NGW)              True
    
    • 现在像这样添加到您的文件文本中:.wslconfig
    [wsl2]
    networkingMode=bridged
    vmSwitch=WSL_external
    

注意,.wslconfig文件的名称一定不能错误,否则可能导致配置不生效

当然还可以在配置文件中指定分配的cpu核数和内存大小等,详细信息请见官方文档

WSL 中的高级设置配置 | Microsoft Learn

启动wsl

  • 执行wsl即可启动,若系统安装了多个发行版,则需要指定发行版的名称,如wsl -d Ubuntu
  • 检查网络,在终端中输入ifconfig检查IP地址是否和Windows在同一网网段中
  • 新开一个cmd窗口,输入ping xx.xx.xx.xx其中xx.xx.xx.xx为上述命令显示的ip地址,例如192.168.1.6,检查是否能够正常连接
  • 关闭Linux子系统并重新启动,它应该保持相同的ip地址
exit
wsl --shutdown
wsl
ifconfig

四、设置Windows开机自启动Linux子系统服务

  • 进入需要自启动服务的wsl发行版中,创建并编辑/etc/init.wsl文件
sudo vim /etc/init.wsl #执行命令创建并打开文件
#输入以下内容
#! /bin/sh
/etc/init.d/ssh $1
#保存并退出

在文件中,我们启动了ssh服务,如果需要启动其他服务也可以添加到文件中,一行启动一个服务

  • 赋予文件可执行权限sudo chmod +x /etc/init.wsl

  • 使用sudo /etc/init.wsl [start|stop|restart]来验证是否能正常执行,例如

sudo /etc/init.wsl start #启动服务
sudo /etc/init.wsl stop #停止服务
sudo /etc/init.wsl restart #重启服务
  • 在Windows中设置开机启动,开始-运行,输入shell:startup

    • 在打开的文件夹中新建vsb文件,如wsl.vbs,输入以下内容

    • Set ws = CreateObject("Wscript.Shell")
      ws.run "wsl -d xxx -u root /etc/init.wsl start", vbhide
      #注意,xxx需要替换为你安装的wsl发行版名称,如Ubuntu-20.04
      
  • 保存,重启电脑,不出意外ssh服务已经启动起来了

五、挂载物理磁盘

先决条件

你需要Windows 11版本 22000 或更高版本,或者运行 WSL 的 Microsoft Store 版本。 若要检查 WSL 和 Windows 版本,请使用 命令:wsl.exe --version

挂载未分区磁盘

  1. 标识磁盘 - 要列出 Windows 中的可用磁盘,使用PowerShell请运行:

    GET-CimInstance -query "SELECT * from Win32_DiskDrive"
    

    磁盘路径位于“DeviceID”列下。 通常采用 \\.\PHYSICALDRIVE* 格式。

  2. 装载磁盘 - 使用 PowerShell,可以使用上面发现的磁盘路径装载磁盘,请运行:

    wsl --mount <DiskPath>
    #DiskPath为第一步标识出来的磁盘路径,例如wsl --mount \\.\PHYSICALDRIVE0
    

挂载分区磁盘

  1. 标识磁盘 - 要列出 Windows 中的可用磁盘,请运行:

    GET-CimInstance -query "SELECT * from Win32_DiskDrive"
    

    磁盘路径列在“DeviceID”之后,通常采用 \\.\PHYSICALDRIVE* 格式。

  2. 列出并选择要在 WSL 2 中装载的分区 - 确定磁盘后,运行:

    wsl --mount <DiskPath> --bare
    

    这将使磁盘在 WSL 2 中可用。 (在我们的示例中,<DiskPath>\\.\PHYSICALDRIVE*

  3. 附加后,可以通过在 WSL 2 中运行以下命令来列出分区:

    lsblk
    

    这会显示可用的块设备及其分区。

    在 Linux 中,块设备被标识为 /dev/<Device><Partition>。 例如,/dev/sdb3 是磁盘 sdb 的分区号 3。

装载所选分区

wsl --mount <DiskPath> --partition <PartitionNumber> --type <Filesystem>
#DiskPath 为磁盘标识  PartitionNumber 为分区号 Filesystem为磁盘类型
#例如 wsl --mount \\.\PHYSICALDRIVE0 --partition 1 --type ext4

其他挂载方式请查看官方文档

关于在 WSL 2 中安装 Linux 磁盘的入门 | Microsoft Learn

设置Windows开机自动挂载磁盘

挂载磁盘需要管理员权限,因此不能像自动启动服务一样,在启动菜单shell:startup中添加脚本来挂载,但是可以使用Windows任务计划程序来完成

  • 新建bat脚本,例如wsl-mont.bat放在任意位置,但需要保证不被删除,填入以下内容
wsl --mount \\.\PHYSICALDRIVE0 --partition 1 --type ext4
#这里以挂载分区磁盘举例
  • 开始-搜索,任务计划程序,点击进入
  • 左侧选择任务计划程序库,右侧选择创建任务
  • 名称随意,描述随意,勾选不管用户是否登录都要运行使用最高权限运行
  • 点击触发器选项卡,新建-开始任务-启动时-确定
  • 点击操作选项卡,新建-操作-启动程序,点击浏览,选择上述保存的脚本,点击确定
  • 点击确定,计划任务创建完成

重启电脑,进入wsl发行版,即可查看到挂载的磁盘

相关文章:

Windows11安装Linux子系统,并实现服务自启动,局域网访问,磁盘挂载

Windows11安装Linux子系统&#xff0c;并实现服务自启动&#xff0c;局域网访问&#xff0c;磁盘挂载 一、准备工作二、安装Linux子系统(wsl2)三、为Linux子系统设置桥接网络检查wsl版本在 Hyper-V 管理器中创建虚拟交换机创建 WSL 配置文件启动wsl 四、设置Windows开机自启动L…...

【Git】保姆级详解:Git配置SSH Key(密钥和公钥)到github

博主简介&#xff1a;22级计算机科学与技术本科生一枚&#x1f338;博主主页&#xff1a;是瑶瑶子啦每日一言&#x1f33c;: “当人们做不到一些事情的时候&#xff0c;他们会对你说你也同样不能。”——《当幸福来敲门》 克里斯加德纳 Git配置SSH Key 一、什么是Git?二、什么…...

离线环境conda虚拟环境备份迁移--conda pack问题

1.第一步&#xff1a;创建虚拟环境 conda create -n pyenv --clone base 或者 conda create -n pyenv python3.8.5 --offline 命令执行结束&#xff0c;在路径/xxxx/anaconda/envs 下看到pyenv 或者 conda info --envs 查看罗列虚拟环境 2.第二步&#xff1a;打包环境 conda …...

挂载 IK 分词器至 Elasticsearch Docker 容器 - Docker Docker Compose 教程

简介 本博客将讲解如何在 Docker 和 Docker-Compose 中运行 Elasticsearch&#xff0c;并挂载 IK 分词器。 步骤 一、快速运行Elasticsearch:8.1.3 1.首先&#xff0c;我们需要创建一个新的 Docker 网络&#xff1a;"elastic"。这个网络会提供给我们接下来所要创…...

7.6 通俗易懂解读残差网络ResNet 手撕ResNet

一.举例通俗解释ResNet思想 假设你正在学习如何骑自行车&#xff0c;并且想要骑到一个遥远的目的地。你可以选择直接骑到目的地&#xff0c;也可以选择在途中设置几个“中转站”&#xff0c;每个中转站都会告诉你如何朝着目的地前进。 在传统的神经网络中&#xff0c;就好比只…...

robotframework+selenium 进行webui页面自动化测试

robotframework其实就是一个自动化的框架&#xff0c;想要进行什么样的自动化测试&#xff0c;就需要在这框架上添加相应的库文件&#xff0c;而用于webui页面自动化测试的就是selenium库. 关于robotframework框架的搭建我这里就不说了&#xff0c;今天就给大家根据一个登录的实…...

手机突然无法获取ip地址

在日常生活中&#xff0c;我们对手机的依赖越来越大&#xff0c;尤其是在联网方面。然而&#xff0c;有时候我们可能会遇到手机无法获取IP地址的问题&#xff0c;这给我们的正常使用带来了很多不便。当我们的手机无法获得IP地址时&#xff0c;我们将无法连接到互联网或局域网&a…...

C++——关于命名空间

写c项目时&#xff0c;大家常用到的一句话就是&#xff1a; using namespace std; 怎么具体解析这句话呢&#xff1f; 命名冲突&#xff1a; 在c语言中&#xff0c;我们有变量的命名规范&#xff0c;如果一个变量名或者函数名和某个库里面自带的库函数或者某个关键字重名&…...

怎么进行流程图制作?用这个工具制作很方便

怎么进行流程图制作&#xff1f;流程图是一种非常有用的工具&#xff0c;可以帮助我们更好地理解和展示各种复杂的业务流程和工作流程。它可以将复杂的过程简化为易于理解的图形和文本&#xff0c;使得人们更容易理解和跟踪整个流程。因此&#xff0c;制作流程图是在日常工作中…...

【ChatGPT 指令大全】怎么使用ChatGPT来辅助学习英语

在当今全球化的社会中&#xff0c;英语已成为一门世界性的语言&#xff0c;掌握良好的英语技能对个人和职业发展至关重要。而借助人工智能的力量&#xff0c;ChatGPT为学习者提供了一个有价值的工具&#xff0c;可以在学习过程中提供即时的帮助和反馈。在本文中&#xff0c;我们…...

Ubuntu20配置仅主机网络

Ubuntu20配置仅主机网络&#xff0c;使虚拟机与物理机网络联通且配置固定IP 进入终端&#xff1a;vim /etc/netplan/01-network-manager-all.yaml 修改为&#xff1a; network:ethernets:enp0s8:addresses: [192.168.138.108/24]dhcp4: false optional: truegateway4: 192.…...

调整奇数偶数顺序

调整数组使奇数全部都位于偶数前面。 题目&#xff1a; 输入一个整数数组&#xff0c;实现一个函数&#xff0c;来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分&#xff0c;所有偶数位于数组的后半部分。 思路&#xff1a; 1. 给定两个下标left和right&#…...

日志的规范

确定日志级别&#xff1a; 确保你的系统有一个明确的日志级别策略。通常&#xff0c;日志级别包括DEBUG&#xff0c;INFO&#xff0c;WARN&#xff0c;ERROR和FATAL。DEBUG级别的日志记录所有详细信息&#xff0c;适用于开发和调试环境。INFO级别的日志记录常规操作信息&#x…...

Spring AOP(AOP概念,组成成分,实现,原理)

目录 1. 什么是Spring AOP&#xff1f; 2. 为什么要用AOP&#xff1f; 3. AOP该怎么学习&#xff1f; 3.1 AOP的组成 &#xff08;1&#xff09;切面&#xff08;Aspect&#xff09; &#xff08;2&#xff09;连接点&#xff08;join point&#xff09; &#xff08;3&a…...

Android WebView简单应用:构建内嵌网页浏览功能

在现代移动应用开发中&#xff0c;内嵌网页浏览功能是许多应用程序的常见需求。Android平台提供了WebView组件&#xff0c;它允许开发者将网页内容嵌入到应用中&#xff0c;并提供了丰富的功能和定制选项。本文将介绍如何在Android应用中使用WebView组件&#xff0c;帮助您快速…...

并发——乐观锁常见的两种实现方式,乐观锁的缺点

文章目录 乐观锁常见的两种实现方式1. 版本号机制2. CAS算法 乐观锁的缺点1 ABA 问题2 循环时间长开销大3 只能保证一个共享变量的原子操作 乐观锁常见的两种实现方式 乐观锁一般会使用版本号机制或CAS算法实现。 1. 版本号机制 一般是在数据表中加上一个数据版本号version字段…...

Spring 事务管理

目录 1. 事务管理 1.1. Spring框架的事务支持模型的优势 1.1.1. 全局事务 1.1.2. 本地事务 1.1.3. Spring框架的一致化编程模型 1.2. 了解Spring框架的事务抽象&#xff08;Transaction Abstraction&#xff09; 1.2.1. Hibernate 事务设置 1.3. 用事务同步资源 1.3.1…...

unity修改单个3D物体的重力的大小该怎么处理呢?

在Unity中修改单个3D物体的重力大小可以通过以下步骤实现&#xff1a; 创建一个新的C#脚本来控制重力&#xff1a; 首先&#xff0c;创建一个新的C#脚本&#xff08;例如&#xff1a;GravityModifier.cs&#xff09;并将其附加到需要修改重力的3D物体上。在脚本中&#xff0c…...

[Qt]FrameLessWindow实现调整大小、移动弹窗并具有Aero效果

说明 我们知道QWidget等设置了this->setWindowFlags(Qt::FramelessWindowHint);后无法移动和调整大小&#xff0c;但实际项目中是需要窗口能够调整大小的。所以以实现FrameLess弹窗调整大小及移动弹窗需求&#xff0c;并且在Windows 10上有Aero效果。 先看一下效果&#xf…...

【API生命周期看护】API日落

一、基本概念 在API的整个生命周期中&#xff0c;不可能是永远不变的。功能可能有变动、服务也可能有升级迭代&#xff0c;这个时候对外的能力入口&#xff1a;API自然也需要改变。 一般来说&#xff0c;API的变动是不可以引入兼容性问题的&#xff0c;也即不管做什么变动&am…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天&#xff0c;深度学习与大模型技术已成为推动行业变革的核心驱动力&#xff0c;而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心&#xff0c;系统性地呈现了两部深度技术著作的精华&#xff1a;…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里&#xff0c;Bessie 有一个烤箱&#xff0c;可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter

java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用&#xff08;Math::max&#xff09; 2 函数接口…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

问题&#xff1a; pgsql数据库通过备份数据库文件进行还原时&#xff0c;如果表中有自增序列&#xff0c;还原后可能会出现重复的序列&#xff0c;此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”&#xff0c;…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇

根据 QYResearch 发布的市场报告显示&#xff0c;全球市场规模预计在 2031 年达到 9848 万美元&#xff0c;2025 - 2031 年期间年复合增长率&#xff08;CAGR&#xff09;为 3.7%。在竞争格局上&#xff0c;市场集中度较高&#xff0c;2024 年全球前十强厂商占据约 74.0% 的市场…...

C++ 类基础:封装、继承、多态与多线程模板实现

前言 C 是一门强大的面向对象编程语言&#xff0c;而类&#xff08;Class&#xff09;作为其核心特性之一&#xff0c;是理解和使用 C 的关键。本文将深入探讨 C 类的基本特性&#xff0c;包括封装、继承和多态&#xff0c;同时讨论类中的权限控制&#xff0c;并展示如何使用类…...

Qt的学习(二)

1. 创建Hello Word 两种方式&#xff0c;实现helloworld&#xff1a; 1.通过图形化的方式&#xff0c;在界面上创建出一个控件&#xff0c;显示helloworld 2.通过纯代码的方式&#xff0c;通过编写代码&#xff0c;在界面上创建控件&#xff0c; 显示hello world&#xff1b; …...