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发行版,即可查看到挂载的磁盘

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/59798.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

以CS32F031为例浅说国产32位MCU的内核处理器

芯片内核又称CPU内核&#xff0c;它是CPU中间的核心芯片&#xff0c;是CPU最重要的组成部分。由单晶硅制成&#xff0c;CPU所有的计算、接受/存储命令、处理数据都由核心执行。各种CPU核心都具有固定的逻辑结构&#xff0c;一级缓存、二级缓存、执行单元、指令级单元和总线接口…

[保研/考研机试] KY180 堆栈的使用 吉林大学复试上机题 C++实现

题目链接&#xff1a; 堆栈的使用_牛客题霸_牛客网 描述 堆栈是一种基本的数据结构。堆栈具有两种基本操作方式&#xff0c;push 和 pop。其中 push一个值会将其压入栈顶&#xff0c;而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。 输入描述&#xff1a; 对于…

目标识别模型两种部署形态图

目标检测预训练模型基于新数据进行微调&#xff08;训练&#xff09;之后&#xff0c;得到一个权重文件。 在日常工业、车载等需求环境下&#xff0c;需要在嵌入式移动端的软件系统中调用该模型文件进行推断测试&#xff0c;软件系统追求性能经常使用C/C进行编码实现&#xff…

Wav2Lip实践

1. 安装 1.1 安装 conda以指定python版本运行环境 下载&#xff1a;Index of /https://repo.anaconda.com/archive/index.html 1.2 如按旧项目基于python3.6版本对话&#xff0c;会有很多包找不到的情况&#xff0c;经摸索后以python3.9构建成功&#xff0c; conda instal…

Leetcode-每日一题【剑指 Offer 14- II. 剪绳子 II】

题目 2、3、3的三段&#xff0c;此时得到的最大乘积是18。 答案需要取模 1e97&#xff08;1000000007&#xff09;&#xff0c;如计算初始结果为&#xff1a;1000000008&#xff0c;请返回 1。 示例 1&#xff1a; 输入: 2输出: 1解释: 2 1 1, 1 1 1 示例 2: 输入: 10输出…

React Native 样式布局基础知识

通过此篇笔记能够学习到如下的几个知识点 在 React Native 中使用样式的一些细节了解 React Native 的 Flex 布局概念了解 React Native 的 flex 布局属性React Native 如何添加多样式属性React Native 中绝对布局和相对布局 React Native 中的 Flex 布局概念 1、主轴和交叉…

4、Rocketmq之存储原理

CommitLog ~ MappedFileQueue ~ MappedFile集合

微服务——操作索引库+文档操作+RestClient操作索引库和文档(java程序)

索引库操作 mapping属性 mapping是对文档的约束&#xff0c;常见约束属性包括: 创建索引库 #创建索引库 PUT /heima {"mappings": {"properties": {"info":{"type": "text","analyzer": "ik_smart"},…

【iPhone】手机还有容量,拍视频却提示 iPhone 储存空间已满

文章目录 前言解决方案 结语 前言 今天在用 iPhone 录像的时候突然提醒我 iPhone储存空间已满 你没有足够的储存空间来录制视频” 可我明明还有 20G 的容量 我非常疑惑&#xff0c;因为我之前还剩1个G都能录像&#xff0c;现在20G反而不行了&#xff0c;于是重启了手机&#…

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

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

陈述式资源管理方法

陈述式资源管理方法&#xff1a; 1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口 2.kubectl 是官方的CLI命令行工具&#xff0c;用于与 apiserver 进行通信&#xff0c;将用户在命令行输入的命令&#xff0c;组织并转化为 apiserver 能识别的…

设计模式---工厂模式

1.什么是设计模式 软件设计模式&#xff08;Design pattern&#xff09;&#xff0c;又称设计模式&#xff0c;是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 …