【WSL2小技巧】Win10/Win11 开机自动启动 WSL2 下 Ubuntu 内 Linux 程序

2023-05-16

Win10 开机自动启动 WSL2 下 Ubuntu 内 Linux 程序

  • 前言
  • 一、启动过程
  • 二、开机自启举例
    • 1. 安装Linux程序(以redis为例,redis安装过程略)
    • 2. 编写启动redis脚本
    • 3. 编写Win10/Win11开机脚本
    • 4. 故障排除办法
  • 总结
  • 扩展
    • 如何给Win10/Win11安装Ubuntu?参考下文


前言

Linux是非常优秀的操作系统,其上服务类应用更是性能优异,可我们平常更多时候使用的是Windows操作系统。怎样能鱼和熊掌兼得呢?

还好Win10/Win11给我们带来惊喜,可以在Win10/Win11里通过WSL再安装一套Linux操作系统,如Ubuntu系统。如何安装见文末链接。

但是,我们如果需要Win10/Win11开机后,Ubuntu系统也可以自动启动,并还希望它可以自动加载我们指定的服务器程序,该怎么办呢?下面就给大家讲解一下:

一、启动过程

由于WSL2里面不能用systemd,所以WSL2里面的程序启动需要借助外部脚本,启动过程如下:
Win10/Win11开机 >> Win10/Win11开机脚本 >> Linux子系统脚本 >> 启动Linux程序。

二、开机自启举例

1. 安装Linux程序(以redis为例,redis安装过程略)

如安装配置好redis,完成之后,如下语句可正常执行的情况下:

service redis-server start

2. 编写启动redis脚本

编辑 /etc/init.wsl 文件

sudo vim /etc/init.wsl

按键盘Insert键,输入以下内容

#! /bin/sh
service redis-server start

按键盘Esc键,输入“:”,输入wq!保存退出。

3. 编写Win10/Win11开机脚本

该脚本的目的是运行 Linux子系统中的脚本。具体方法如下:

按键盘Win+r 启动运行,输入shell:startup,转到Windows“启动”目录,新建文件wsl2run_Ubuntu_redis.vbs(文件名自命名,扩展名是vbs就行),并保存以下内容。

rem Msgbox "Win10开机自动启动wsl2的Ubuntu,并由其启动redis"
Set ws = CreateObject("Wscript.Shell")
ws.run "wsl -d Ubuntu-20.04 -u root /etc/init.wsl start", vbhide

注意:Ubuntu-20.04,后面是数字为版本号。vbhide可以不显示启动画面,后台启动。
Ubuntu启动后,会自动加载redis服务,所以Win10开机后,redis也就自动启动了。

4. 故障排除办法

如果出现运行不成功,多半是权限问题,可以在cmd窗口运行如下启动命令

wsl -d Ubuntu-20.04 -u root /etc/init.wsl start

如出现:

/etc/init.wsl: Permission denied

可手工启动Ubuntu-20.04,然后使用如下命令修改文件权限。

sudo chmod 777 init.wsl

再次运行启动命令

wsl -d Ubuntu-20.04 -u root /etc/init.wsl start

如出现以下提示,表示运行成功,则可以完成Win10/Win11自动启动redis了。

Starting redis-server: redis-server.

总结

至此,通过设置Win10/Win11开机后自动启动wsl2的Ubuntu,由Ubuntu自动启动init.wsl下内容就实现了文章开头说的事情。


扩展

如何给Win10/Win11安装Ubuntu?参考下文

【量化交易行情不够快?】一文搞定通过Win10 wsl2 +Ubuntu+redis+pickle实现股票行情极速读写_IT里的交易员的博客-CSDN博客_redis 量化
https://blog.csdn.net/popboy29/article/details/126189105

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【WSL2小技巧】Win10/Win11 开机自动启动 WSL2 下 Ubuntu 内 Linux 程序 的相关文章

  • 线程同步之事件集event

    一 事件集 一个事件集中包含 32 个事件 xff08 一个 32 bit 无符号整型数 xff09 xff0c 特定线程只等待 接收它关注的事件 可以是一个线程等待多个事件的到来 xff08 线程 1 2 均等待多个事件 xff0c 事件
  • 电源引脚VDD、VSS、VDDA、VSSA、VREF+、VREF-、VBAT

    总体电源框图 一 名词解释 名称说明备注VCC电路的供电正电压一般表示模拟信号电源GND电路的供电负电压 xff1f 表示模拟信号地VDD芯片的工作正电压表示数字信号电源VSS芯片的工作负电压表示数字电源地VDDA芯片的工作正电压 模拟 V
  • iOS 系统自带地图 基本实现

    CLLocationManager 首先 xff0c 来讲一下CLLocationManager 因为 xff0c 有人明天要用到 xff0c 临时写的 那么怎么使用呢 xff1f 首先需要定义一个CLLocationManager的属性
  • norflash和nandflash;SRAM和SDRAM

    一 常见存储类型 典型应用名称描述MCU片内flashnorflash nor flash数据线和地址线分开 xff0c 可以实现ram一样的随机寻址功能 xff0c 可以读取任何一个字节 但是擦除仍要按块 页 擦除 因为按照字节寻址 xf
  • 断言ASSERT使用详解

    一 assert的定义 原以为assert 仅仅是个报错函数 xff0c 事实上 xff0c 它居然是个宏 xff0c 并且作用并非 34 报错 34 在经过对其进行一定了解之后 xff0c 对其作用及用法有了一定的了解 xff0c ass
  • 快速排序qsort函数用法

    一 qsort函数简介 排序方法有很多种 xff1a 选择排序 xff0c 冒泡排序 xff0c 归并排序 xff0c 快速排序等 看名字都知道快速排序是目前公认的一种比较好的排序算法 因为他速度很快 xff0c 所以系统也在库里实现这个算
  • 调度器锁rt_enter_critical() & rt_exit_critical()

    一 函数说明 void rt enter critical void 进入临界区 调用这个函数后 xff0c 调度器将被上锁 在系统锁住调度器的期间 xff0c 系统依然响应中断 xff0c 如果中断唤醒了的更高优先级线程 xff0c 调度
  • RT Thread studio同时生成bin和hex文件

    一 RTT默认生成bin文件 默认选择Raw binary xff0c 则项目对应的debug文件夹下生成bin文件 xff1b 修改成intel的话 xff0c 则项目对应的debug文件夹下生产hex文件 xff1b 二 同时生成bin
  • 使用CJSON 解析JSON 结构体数组【典型】

    1 CJSON数据结构定义 define cJSON False 0 define cJSON True 1 define cJSON NULL 2 define cJSON Number 3 define cJSON String 4 d
  • RTThread:静态线程&动态线程

    一 静态线程创建 rt thread init rt err t rt thread init struct rt thread thread const char name void void parameter entry void p
  • C指针传参的一些思考

    一 仅操作变量名的子函数 xff0c 在主函数中无法真正实现值传递 如下 xff1a void swap 1 int num1 int num2 作为主函数的子函数 xff0c 被main函数调用 xff1b 在子函数内部实现了num1 和
  • 再论指针数组与数组指针

    一 二者的区别 xff08 一 xff09 直观的差异 int p 5 指针数组 xff0c 元素为指针 int p 5 数组指针 xff0c 指向数组的指针 xff08 二 xff09 非直观差异 1 xff09 数组指针 xff1a 待
  • Anaconda Prompt工作路径的切换

    Anaconda Prompt工作路径的切换 缘由进入Anaconda Prompt激活 labelme所在环境退出到现在所在盘的根目录进入目标盘输入目标文件路径 缘由 数据集制作过程中 xff0c 想要进入D盘下的存放json的文件夹 x
  • 认识一下 Azure DevOps

    目录 新手入门 认识 安装入门 Azure Board 敏捷面板Azure Repos 代码仓库Azure Pipeline CI CD 管道Azure Test Plan 测试管理Azure Artifact 包托管 Azure DevO
  • 10个数比大小(排序)——冒泡和选择

    10个数比大小 xff08 排序 冒泡和选择 一 冒泡法 xff08 起泡法 xff09 冒泡排序的基本概念是 以升序排序为例 xff1a 依次比较相邻的两个数 xff0c 将小数放在前面 xff0c 大数放在后面 即在第一趟 xff1a
  • vue3 实现界面数据实时变化

    技术支持 xff1a Vue3 ElementUI WebSocket 库引用 pinia websocket 1 创建pinia文件夹 xff0c 目录如下 src pinia index js modules wsdata js 2 编
  • javascript BOM

    一 什么是BOM xff1a BOM xff08 Browser Object Model xff09 的意思是浏览器对象模型 BOM方法一般指的都是在浏览器 xff08 window xff09 中的方法 二 常见的BOM方法 事件 xf
  • Flutter 利用 FFI,绕过 Android JNI 直接调用 C++ 层!

    坏de牧羊人 作者 承香墨影 校对 https juejin cn post 6976824832595853342 原文 大家好 xff0c 这里是承香墨影 xff01 今天和大家聊聊 Flutter 与 C C 43 43 直接调用的方
  • 前端请求接口浏览器发起option预请求而导致405的问题

    记一次前端请求后端接口出现405的问题 xff1a 问题描述 xff1a 首先阐述http的405状态码 xff0c 405的直接提示是method not allowed xff0c 即前端请求的方法不被后端接受 xff08 如下图 xf
  • 如何变现?互联网商业产品模式详解

    本文由作者 海贝学姐 发布于社区 变现 商业化 商业模式 这些词相信大家都耳熟能详了 懂商业 xff0c 往往能让你在职场上更容易获得上升空间 xff0c 毕竟赚钱是每家企业最重要的目的之一 本文会对互联网商业产品的类型 模式 定价策略和角

随机推荐