在Raspberry Pi 2上自动启动TightVncServer


11

我有一个Raspberry Pi 2,并且一直关注Raspberrypi.org上的帖子,但是Tight VNC Server无法在重新启动时启动。似乎没有任何错误。

如何让TightVncServer在Pi Reboot上启动?


不能发布的答案,但有一个简单的方法,我得到了工作在我的PI 3 B中Adafruit的记录在这里:learn.adafruit.com/...
史蒂芬·埃弗斯

Answers:


10

为此,您可以使用一点Linux技巧。

我们的第一个任务是编辑文件/etc/rc.local。该文件可以包含在启动时运行的命令。如果我们查看该文件,可以看到其中已经有很少的条目。

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

exit 0

第一组前面带有井号(#)的行是注释。这些只是用来解释读取文件的人发生了什么。

底部的代码行显然与计算机的IP地址有关。实际上,它们是一个简短的脚本,用于检查Raspberry Pi是否具有IP地址,如果有,则将其打印出来。回忆起树莓派启动时,您会在屏幕上看到打印出的IP地址

My IP address is 10.1.1.8

Raspbian GNU/Linux 7 raspberrypi tty1

raspberrypi login:

rc.local中的这段脚本是负责打印IP地址的代码!

我们将以下命令添加到rc.local中;

su - pi -c '/usr/bin/tightvncserver :1'

此命令使用su-pi将用户切换为“ pi”用户。su代表“切换用户”,破折号(-)确保正确使用了用户pi的环境(如其所有设置),并且pi是用户。

-c选项声明该行的下一部分将是要运行的命令,并且引号('/ usr / bin / tightvncserver:1')内的部分是该命令。

在这种情况下,该命令将执行/ usr / bin目录中的文件ightvncserver,它指定我们应该启动桌面会话1(:1)。

为此,我们将使用以下命令编辑rc.local文件:

sudo nano /etc/rc.local

添加我们的行,以便文件如下所示;

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

# Start tightvncserver
su - pi -c '/usr/bin/tightvncserver :1'

exit 0

(我们也可以将自己的注释添加到文件中,以使将来的读者知道发生了什么事情)

就是这样。现在,您应该能够通过重新启动来测试Pi启动时服务是否启动。

如果以上听起来有点冗长,请随时在此处检查更完整的理由。


它对我不起作用。
变色龙

答案是针对Raspbian的“ Wheezy”版本编写的。更高版本(“ Jessie”和(我认为)“ Stretch”)具有不同的默认方法。请参阅此处以了解另一种方法。
d3noob

5

在开始之前,请确保您的Pi已通过Ethernet \ wifi连接到Internet \ network。

打开终端并输入以下命令:

获取用于远程连接的Pi IP地址(稍后使用)

hostname -I

安装TightVncServer

sudo apt-get update
sudo apt-get install tightvncserver
tightvncserver

第一次运行时,您必须输入密码并进行验证。无需输入仅查看密码。

要在Pi启动时将自动启动配置为服务:

打开nano(文本编辑器)创建一个文件以自动启动Tight VNC Server sudo nano /etc/init.d/tightvncserver

输入以下内容(或复制并粘贴):

#!/bin/sh
# /etc/init.d/tightvncserver
# Set the VNCUSER variable to the name of the user to start tightvncserver under
VNCUSER='pi'
case "$1" in
  start)
    su $VNCUSER -c '/usr/bin/tightvncserver :1'
    echo "Starting TightVNC server for $VNCUSER"
    ;;
  stop)
    pkill Xtightvnc
    echo "Tightvncserver stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/tightvncserver {start|stop}"
    exit 1
    ;;
esac
exit 0

按Ctrl + x,然后按y保存并按Enter保留相同的文件名。

编辑此文件的权限,使其可执行并处于活动状态:

sudo chmod 755 /etc/init.d/tightvncserver
sudo update-rc.d tightvncserver defaults

重新启动以测试 sudo重新启动

为您的操作系统安装vnc客户端,并在Pi重新启动后尝试连接!

对于Windows:例如TightVNC客户端。无需安装服务器。

使用本文顶部的IP地址启动VNC客户端连接。更改您的IP地址。许多Internet帖子中的端口号仅以2位数字列出。这是很简单的方法,如果您使用的是上面的脚本,则pi在端口1上运行,则应该使用590 1。如果为2,则为590 2等。

192.168.1.123:5901

您的解决方案对我来说是完美的,除非我没有全屏显示。如何获得全屏显示?(vncserver -geometry 1366x768 -depth 24 -dpi 96。在使用全屏命令之前,我曾使用该命令。是否可以在代码中添加该行?)
opu

@opu웃该行su $VNCUSER -c '/usr/bin/tightvncserver :1'是运行您所指的命令的地方。只需将选项附加到该行的末尾,结果将是su $VNCUSER -c '/usr/bin/tightvncserver :1' -geometry 1366x768 -depth 24 -dpi 96
Trent

如果这不起作用,我该如何调试?如果我在pi用户命令行上运行ightvncserver,它将启动并且可以远程进入,但是不能使用此解决方案或/etc/rc.local解决方案自动启动。
艾伦·麦克唐利
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.