使用树莓派的一种经典方式,是远程登陆进行操作。常用的方法有两种,一种是通过SSH协议,一种是使用VNC工具。这两种方法在Raspbian(至迟2017年3月版)上都是集成的,比较明显的区别就是:SSH使用终端的命令行进行操作,VNC则具备图形界面。因此,比较而言VNC更适合初学者使用。本文对使用VNC远程登陆树莓派进行详细介绍。
准备
树莓派的Raspbian系统,虽然集成了VNC Server,默认却是不开启的。假设你想在你的windows计算机上使用vnc远程登陆树莓派,所需条件如下:
- 一台windows计算机
- 一台Raspbian系统的树莓派
- 局域网环境(确保windows计算机与树莓派可以互相连接)
开启Raspbian的VNC Server
在终端输入命令:
sudo raspi-config
raspi-config是Raspbian系统自带的配置工具,树莓派的很多必要功能都需要通过它进行设置。本文只对VNC方面的配置进行介绍。raspi-config的界面如下:
将光标移至第5项:Interfacing Options,并敲回车。
选择第3项:VNC,并敲回车。
选择“是”,并敲回车。
设置结束,敲回车进行确认。
通过以上操作,VNC Server开启完毕。之后树莓派每次开机,VNC Server都会自启动。这就确保了我们可以随时远程登陆树莓派。
连接网络并查询IP地址
将你的树莓派连接到局域网中,有线网无线网均可。注意:并不是所有的树莓派都具备无线网卡,对于这部分树莓派,需要外接USB无线网卡才能连接无线网络。
远程登陆树莓派,需要知道树莓派的ip地址。首先,在终端输入以下命令:
ifconfig
该命令用于查询或进行网络配置,与windows系统的ipconfig功能相似。以我的树莓派为例,敲回车后,输出如下:
系统显示的信息中,左侧是网络设备类型及标号,右侧是网络设备的详细信息,其中的inet addr就是ipv4地址。我的树莓派有3个网络设备,其中eth0指的是有线网卡;lo指的是回环接口,一般用于网络测试;wlan0指的是无线网卡。因为我是用wifi连接网络的,因此查看wlan0右侧的inet addr为192.168.155.2,这就是我的树莓派的ip地址。
在windows计算机上使用VNC Viewer
打开你的windows计算机并安装VNC Viewer。顾名思义,VNC Viewer与VNC Server是配合使用的,而且是单向控制,即你只能使用Viewer端登陆Server端。VNC是免费软件,你可以在VNC官方网站上获取。
VNC的软件界面示例如下(不同的版本可能会有差别):
添加连接的过程并不复杂,这里不再详细描述。只说两点:
1.VNC Server这一栏填写上一步中查询到的树莓派ip地址。
2.Username和Password指的是你登陆树莓派的用户名和密码,如果你没有对树莓派进行用户配置,用户名为pi,密码为raspberry。
添加完成后,VNC窗体中就会出现新的连接图标(就像上图示意的那样),双击即可远程登陆你的树莓派。
小tips:更改远程登陆窗口的分辨率
远程登陆树莓派后,你可能对远程登录窗口的尺寸不满意(通常是太小,操作不便)。这里对设置登陆窗口分辨率进行说明。
首先明确一点,虽然你可以直接拖拽登录窗口的右下角来调整尺寸,这只不过是在树莓派的当前输出分辨率的基础上拉伸而已。当这个分辨率比较小时,拉伸只会让登陆窗口越来越模糊。因此,你需要设置树莓派的输出分辨率,才能获得理想的登陆窗口。
具体的修改方法,请参考我的博文将树莓派连接到显示器。
安装VNC需要使用命令行。如果需要远程操作安装VNC,就必须通过SSH登录到命令行界面。
安装树莓派命令行:
1
|
sudo
apt-get
install
tightvncserver
|
安装好之后请一定先使用此命令设置一个VNC密码:
1
|
vncpasswd
|
(先输入操作密码两次,然后会询问是否设置一个查看(view-only)密码,按自己喜欢,一般没必要。)
开机自动启动
设置开机启动,需要在/etc/init.d/中创建一个文件。例如tightvncserver:
(注:启动脚本的名称,有和程序名一致的习惯)
1
|
sudo
nano
/etc/init
.d
/tightvncserver
|
内容如下:(putty窗口中按右键=粘贴)#!/bin/sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
### 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
|
注:少数玩家默认用户不是pi的请自行更改USER变量
按Ctrl+X,回答Y(存盘)退出nano编辑器。
然后给tightvncserver文件加执行权限,并更新开机启动列表。
1
2
|
sudo
chmod
755
/etc/init
.d
/tightvncserver
sudo
update-rc.d tightvncserver defaults
|
电脑登录VNC
下载Windows客户端RealVNC Viewer。
登录地址输入“IP地址:控制台号码”,0号控制台可不加号码。
也可使用Android版VNC客户端,下载地址:http://android.d.cn/software/19334.html
附:手工启动与参数(以下用处不大,没兴趣请略过)
使用此命令手工启动VNC服务器程序:
1
|
tightvncserver -geometry 800x600 :1
|
如果首次启动,并且未曾使用vncpasswd命令设置密码,程序会要求设置一个。
开机启动很方便。如果没理由,真的不推荐手工启动。
命令行参数说明:
一、:1,指定控制台的号码。
启动多个控制台,可以提供互不影响的多个桌面环境。(大多数人不用多用户操作所以没意义)
可以不加此参数,tightvncserver会自动寻找从1开始的下一个空闲控制台。
加上此参数,会强制使用指定的控制台,如果此控制台已经启动则报错。加此参数可有效防止无意多次启动程序(会启动多个控制台)白白浪费系统资源。
特殊的0号控制台
0号控制台就是连接真实显示器真正输出图像的那个桌面。
对于VNC客户端,不输入端口号登录,默认就登录到0号控制台,方便。
但是因为0号是真正的桌面,所以和开机启动桌面环境,或者自己用startx命令,都存在啰嗦的冲突。
到头来是个麻烦。因此自动启动的配置教程中,一律使用1号控制台。
二、-geometry 800×600,分辨率。可以不加。
终止VNC控制台:
tightvncserver -kill :1
查看正在运行的控制台列表:
1
|
ps
ax |
grep
Xtightvnc |
grep
-
v
grep
|