Win10 开机自动启动 WSL2 下 Ubuntu 内 Linux 程序
前言
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