毋容置疑,Raspberry PI(树莓派)可谓当前最火的单片机之一。玩转树莓派之前,首先是要将树莓派的操作系统和各项功能准备妥当。本文的核心目标就是从零开始上手树莓派,并完成远程连接的各项功能。

准备工作

开始玩树莓派前,需要准备:

  • Raspberry PI 3 Model B+(目前最新款)
  • Micro SD 卡,不小于 8G
  • USB 电源线,5V 电压、不小于 2A 电流
  • 有线网络(建议拥有,当然树莓派已支持 WiFi)

如果需要本机使用(即非远程连接使用),那么还需要 HDMI 线及显示器,以及鼠标键盘等外设。当然本文初始化过程中完成了远程连接 console 和 GUI 的全部设置,所以理论上来说无需本机使用了 :)

同时,本文默认以 Mac 作为远端局域网设备进行调试,但所用软件和工具基本满足 Mac 和 Windows 的兼容,如有差异会在文中指出。

安装操作系统

从树莓派官网下载树莓派定制的 Debian 操作系统 Raspbian,初始玩家建议使用 Raspbian Stretch with desktop and recommended software 版本的系统。下载完成后解压获得 .dmg 镜像文件。

使用 balenaEtcher 工具向准备好的 Micro SD 卡烧录操作系统。烧录前,Micro SD 卡请格式化为 FAT 格式。balenaEtcher 是一款开源的烧录工具,且支持 Mac 和 Windows,使用过程仅需选择镜像、选择目标盘符、烧录即可!

为了能够直接开始远程连接,这里请完成两个步骤

  1. 在烧录完成的 Micro SD 卡中新建一个 ssh 文件。

Mac 上可以直接进入目录并创建

cd /Volumes/boot
touch ssh

Windows 则直接打开盘符并新建文本文件,但务必不要带 .txt 后缀。

  1. 如果准备直接连接无线网络,则添加 wpa_supplicant.conf 文件。

    cd /Volumes/boot
    vi wpa_supplicant.conf
    

文件内容为:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN

network={
    ssid="xxxx"      # wifi name
    psk="xxxx"       # wifi password
    key_mgmt=WPA-PSK # encryption method
}
  1. 使用 arp -a 查看当前局域网内设备的连接情况。

这个步骤的目的是为了待会树莓派开机后可以查看增加了哪一个IP,当然,也可以通过其它局域网工具查看,树莓派的 hostname 非常容易辨认。

Windows 中需要使用 Powershell 等相关命令行工具方可执行 arp 命令。

基本配置

OKAY,现在可以把 Micro SD 卡插入树莓派并开机了!

ssh 远程连接设备

开机后,通过 arp -a 持续关注当前局域网内设备连接情况的变化,新增的 IP 即为树莓派的 IP。

这种获取 IP 的方式显得很不精致,也不适用于 IP 流动量大的局域网环境中。所以,更加理性的方法是使用相关局域网工具,通过 hostname 显著的区分设备并获得相应 IP。 Mac 可以使用 LanScan;Windows 可以使用 Advanced Ip Scanner。

如果刚才烧录完操作系统后在目录下创建了 ssh 文件的话,那么现在就可以使用 ssh 进行设备连接了。

ssh pi@[device_ip]

# 密码为:raspberry

设置静态 IP

ssh 远程登录设备成功后,为了避免设备因网络重连导致 IP 变化,这里建议第一时间固化 IP。

通过修改 /etc/dhcpcd.conf 文件实现静态化 IP 配置,在该文件底部添加配置

interface eth0
static ip_address=192.168.1.114/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

interface wlan0
static ip_address=192.168.1.113/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

/etc/dhcpcd.conf 文件中包含了大量的配置和示例配置,切勿随意修改或覆盖。 配置中的 interface 为指定的网卡口,eth0 为默认有线口,wlan0 为默认无线口 ip_address 为固定 IP 地址及其子网掩码 routers 为其网关 domain_name_servers 为其 DNS 服务器

当然,只在树莓派上配置固定 IP 并不是完整的静态化操作,在条件允许的情况下,可以在路由器上直接将 IP 与树莓派的 MAC 地址对应绑定。

设置时区、语言

系统的相关设置可以通过修改相应的 Linux 系统配置完成,亦可通过 GUI 窗口化设置调整。Raspbian 提供了便捷的命令行配置工具 raspi-config,可通过 sudo raspi-config 开启并配置。相关设置可根据提示进行操作。

启用 VNC

安装 VNC

vnc 是可以远程打开 GUI 界面的服务。目前, Raspbian 系统中已经自带了 vnc 服务,可以通过 sudo raspi-config 中的配置进行启用。

Interfacing Options --> VNC --> select,选择后会进行一系列的应用包安装,根据提示进行确认操作完成安装即可。

设置 VNC 密码

重设 VNC 密码的命令为:vncpasswd

服务化 VNC

可以通过 vncserver :1 来启用 VNC 服务,但这并不优雅,首先关闭服务需要通过 kill 来完成,同时无法进一步实现开机自启动服务。

这里,我们首先进行 VNC 服务化的配置:

创建文件 /etc/init.d/vncserver 并粘贴下面内容于其中,

#!/bin/sh
### BEGIN INIT INFO
# Provides:          vncserver
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop vncserver
### END INIT INFO
 
# More details see:
# http://www.penguintutor.com/linux/vnc
 
### Customize this entry
# Set the USER variable to the name of the user to start vncserver under
export USER='pi'
### End customization required
 
eval cd ~$USER
 
case "$1" in
  start)
    su $USER -c '/usr/bin/vncserver -depth 16 -geometry 1024x768 :1'
    echo "Starting VNC server for $USER "
    ;;
  stop)
    su $USER -c '/usr/bin/vncserver -kill :1'
    echo "vncserver stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/vncserver {start|stop}"
    exit 1
    ;;
esac
exit 0

保存后为文件添加执行权限:

sudo chmod +x /etc/init.d/vncserver

至此,已可以使用 service vncserver start|stop 进行 VNC 服务开启、关闭了。

开机自启动 VNC

添加开机启动项:

sudo update-rc.d vncserver defaults

树莓派重启后生效。

VNC 远程连接

这里推荐使用 RealVNC Viewer 来进行 VNC 远程连接,这是一个跨平台的开源软件,方便使用。

连接时键入 [raspberry_ip]:1 并输入密码即可。

参考文档