目前已测试OK的几个方法:
方法1(作为服务自启动):
在/etc/init.d/中创建一个文件。例如tightvncserver:
sudo nano /etc/init.d/tightvncserver
在该文件中写入以下内容:
#!/bin/sh
### BEGIN INIT INFO
# Provides: tightvncserver
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop tightvncserver
### END INIT INFO
# More details see:
# http://www.penguintutor.com/linux/tightvnc
### Customize this entry
# Set the USER variable to the name of the user to start tightvncserver under
export USER='pi'
### End customization required
eval cd ~$USER
case "$1" in
start)
# 启动命令行。此处自定义分辨率、控制台号码或其它参数。
su $USER -c '/usr/bin/tightvncserver -depth 16 -geometry 800x600 :1'
echo "Starting TightVNC server for $USER "
;;
stop)
# 终止命令行。此处控制台号码与启动一致。
su $USER -c '/usr/bin/tightvncserver -kill :1'
echo "Tightvncserver stopped"
;;
*)
echo "Usage: /etc/init.d/tightvncserver {start|stop}"
exit 1
;;
esac
exit 0
注意保存文件!(Ctrl+O 回车 Ctrl+X)
然后给tightvncserver文件加执行权限,并更新开机启动列表。
sudo chmod 755 /etc/init.d/tightvncserver
sudo update-rc.d tightvncserver defaults
最后开机重启就会发现VNC server可以开机自启动了。
如果需要解除此开机启动项:
sudo update-rc.d -f tightvncserver remove
上述方法的注意点:
[1] tightvncserver有些安装后在/usr/bin/目录下是vncserver,具体可以进入该目录查看,如果是这种情况,上述方法中所有的tightvncserver全部改成vncserver。(笔者就在这里坑了)
[2] 上面的USER用的是pi用户,所以在VNC登陆时也要用pi用户名登陆,不要用root。
[3] 上述文件的命名用了tightvncserver,是因为启动脚本的名称,有和程序名一致的习惯,实际也可以改成其他的命名,重点在于其内容。
[4] -depth 16是设置颜色位深,-geometry 800x600是设置分辨率,:1是设置端口。这些参数实际上也可以省略不加,会按默认的执行。
[5] :1如果不加此参数,tightvncserver会自动寻找从1开始的下一个空闲控制台。加上此参数,会强制使用指定的控制台,如果此控制台已经启动则报错。加此参数可有效防止无意多次启动程序(会启动多个控制台)白白浪费系统资源。
0号控制台就是连接真实显示器真正输出图像的那个桌面。对于VNC客户端,如果不输入端口号登录,默认就登录到0号控制台。
方法2(向rc.local文件添加启动代码):
sudo nano /etc/rc.local
找到最后一行的exti 0,在前面添加
su pi -c "/usr/bin/vncserver -depth 16 -geometry 800x600 :1"
su命令是指定在pi用户下执行这条命令,-c 表示执行完这条命令之后恢复原来的用户。
编辑完成后如下图所示:
完成后注意保存退出。
开机重启就会发现VNC server可以开机自启动了。
此方法注意点:
[1] 同方法1, -depth 16是设置颜色位深,-geometry 800x600是设置分辨率,:1是设置端口。这些参数实际上也可以省略不加,会按默认的执行。
[2] tightvncserver有些安装后在/usr/bin/目录下是tightvncserver,具体可以进入该目录查看,如果是这种情况,上述方法中的命令中vncserver要改成tightvncserver。
方法3:
前两个方法的结合版。
先按照方法1编写一个脚本,然后打开rc.local文件
sudo nano /etc/rc.local
找到最后一行的exti 0,在前面添加
/etc/init.d/tightvncserver start &
加&的作用是防止当前一段代码执行堵塞时,系统会卡机!
参考:
https://www.cnblogs.com/penuel/p/11962790.html
https://www.douban.com/note/494492119/
https://shumeipai.nxez.com/2013/09/04/login-rpi-with-vnc.html
另一种
https://blog.csdn.net/u011615512/article/details/39666053?utm_source=blogxgwz6
设置开机自启动方法
https://blog.csdn.net/qq_41508747/article/details/108055715
https://shumeipai.nxez.com/2017/05/17/raspberry-pi-service-python-script-start-on-boot.html
https://www.freesion.com/article/9555357554/
https://www.cnblogs.com/haochuang/p/6005121.html
改分辨率
https://blog.csdn.net/qq_43445362/article/details/107127636