WSL中的ubuntu自启动项设置
参考这篇:https://www.jianshu.com/p/0a102c4bb3a2
本人是在Win10上的 wsl linux版本:Ubuntu 18.04 LST,其实方法跟非WSL中ubuntu自启动方法类似,只不过WSL需要多一步,在Windows启动选项中添加脚本而已。
1. 创建并编辑 /etc/init.wsl
sudo touch /etc/init.wsl
sudo vim /etc/init.wsl
在文件中添加内容:
#! /bin/sh
/etc/init.d/ssh $1
2. 给/etc/init.wsl添加执行权限
sudo chmod +x /etc/init.wsl
3. 编辑sudoers,避免输入密码
sudo visudo
或者
sudo nano /etc/sudoers
添加如下一行:
%sudo ALL=NOPASSWD: /etc/init.wsl
4. 在Windows中创建Ubuntu1804_start.vbs脚本
内容为:
Set ws = WScript.CreateObject("WScript.Shell")
ws.run "ubuntu run sudo /etc/init.wsl start", vbhide
5. 将.vbs脚本放入Windows开机启动文件夹里
在win10中Win+r
,输入shell:startup
打开启动文件夹,把刚才的Ubuntu1804_start.vbs脚本放进去,重启Windows系统的时候这个脚本自动运行不需要输入密码,这样WSL中的ssh服务对应开启了。
如果开机提示本:C: \Users\xxxx\Roaming Microsoft\Windows\StartMenu\Programs\Startup\Ubuntu1804_start.vbs
系统找不到指定文件,行2 列1什么的,将最后一步.vbs文件内容改成试试:
Set ws = CreateObject("Wscript.Shell")
ws.run "wsl sudo /etc/init.wsl start", vbhide
或者,都试试,说不定哪种组合就对了。
Set ws = CreateObject("Wscript.Shell")
ws.run "C:\Windows\System32\bash.exe -c 'sudo /etc/init.wsl",0
非WSL的Linux系统,如虚拟机和单独Linux系统
以下创建自启动的方法在WSL中不适用,这是在虚拟机或者Ubuntu单独的系统中用的创建自启动项的方法!
ubuntu某个版本后不再使用 inited 管理系统,而改用 systemd,但是很多人已经习惯于开机启动直接配置rc.local,所以我们自己来设置rc.local。
实现原理
systemd 默认会读取 /etc/systemd/system
下的配置文件,该目录下的文件会链接 /lib/systemd/system/
下的文件。一般系统安装完 /lib/systemd/system/
下会有 rc-local.service
文件,那就是我们需要的配置文件。
实现步骤
1. 将 /lib/systemd/system/rc-local.service 链接到 /etc/systemd/system/ 目录下面来
ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
2. 修改文件内容
sudo vim /etc/systemd/system/rc-local.service
3. 在文件末尾增加内容
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
4. 创建/etc/rc.local 并 编辑/etc/rc.local文件
以后开机自动启动直接在/etc/rc.local中进行编辑就行。
sudo touch /etc/rc.local
sudo vim /etc/rc.local
编辑内容根据自己情况,比如启动SSH服务:
#!/bin/bash
/etc/init.d/ssh start
启动、停止和重启openssh-server的命令如下:
/etc/init.d/ssh start
/etc/init.d/ssh stop
/etc/init.d/ssh restart
原/etc/systemd/system/rc-local.service
文件内容如下:
修改后/etc/systemd/system/rc-local.service
文件内容如下: