初试树莓派RaspberryPi

目录

第一印象

大约在20天前,我在亚马逊上冲动的购买了这个东西

树莓派3的官方Desktop Starter Kit,其实也就是树莓派3开发板+16GB miroSD装机卡+壳子+充电器套装。不过这样一套买下来,上手把玩树莓派要方便许多,机子到手第一天我就按照说明书安装了树莓派定制Debian的发型版Raspbian系统。第一感觉还挺好用,通过HDMI连接上显示器,再用4个USB接口中的两个连接键盘和鼠标就可以当做桌面电脑使用了。如果要通过个人电脑远程连接树莓派的话,ssh和VNC Viewer都很好用。

远程连接

通过ssh

注意,以下步骤均在个人电脑上完成,不是在树莓派上

首先通过Vim 修改本地hosts文件vim /etc/hosts 加入raspberrypi的ip地址,以后就可以通过ssh pi@raspberrypi的方式ssh到树莓派中,如果嫌每次连接都要输入密码麻烦,可以把公钥导入到树莓派中,具体方法如下

  1. 生成公钥私钥对
1
ssh-keygen -t rsa
  1. 将公钥传输到raspberrypi上
1
ssh-copy-id pi@raspberrypi
  1. 测试一下,现在用ssh pi@raspberrypi远程登录树莓派就不需要输入密码了
  2. (可选步骤)为了安全性考虑,关闭树莓派上远程ssh密码登录
1
sudo nano /etc/ssh/sshd_config

找到PermitRootLogin这一行,并将它改成PermitRootLogin without-password,如果这一行是被注释的,记得取消注释以此覆盖默认配置。修改并保存,最后运行下面命令使修改生效

1
sudo service ssh restart

通过VNC Viewer

  1. 首先,在树莓派上通过下列命令开启VNC Viewer
1
2
sudo apt-get update
sudo apt-get install realvnc-vnc-server realvnc-vnc-viewer
  1. 接着,在个人电脑上,或者手机上下载VNC Viewer客户端
  2. 最后,在远程连接设备端(个人电脑或者手机)输入树莓派的用户名,密码,ip地址即可远程连接树莓派了

树莓派的缺点

在树莓派3上做全栈开发并不是很理想,因为部分软件对32bit ARM架构处理器的兼容性不是很好,查看树莓派3的CPU架构可以使用如下命令,结果如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ lscpu
Architecture: armv7l
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
Model: 4
Model name: ARMv7 Processor rev 4 (v7l)
CPU max MHz: 1200.0000
CPU min MHz: 600.0000
BogoMIPS: 38.40
Flags: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32

可以看到树莓派3采用一块ARMv7架构的CPU,通过查阅维基百科,得知ARMv1到ARMv7架构都是32 bits寻址,直到ARMv8架构才出现64 bits寻址。

故事起源于我想在树莓派上安装wekan,wekan是类似于Trello的Kanban类项目管理软件,奈何wekan是基于Meteor建立的,而Meteor对安装环境有x86_64的假设,即使修改源代码去掉该假设也不能顺利安装,参见meteor/issues/442。好消息是2017年6月份,Meteor团队开始着手与增加Meteor对ARM架构CPU的支持,参见meteor-feature-requests/issues/130

不能在树莓派上安装wekan,让我有点小小的伤心,但是接下来发生的事情就让我对在树莓派上搞全栈开发暂时失去了兴趣。故事是这样的,为了学习网爬虫,我做了一个每天计算出Stackoverflow最火热问题的项目来练手,该项目的的爬虫部分基于Scapy框架,数据库我选用了最新版本的MongoDB (v3.4.9) 来存储爬取的网页内容。开发完成后我利用crontab在自己的电脑上让它每天晚上10点5分定时在这里update最火热问题排行。

问题是我的电脑并不是每天晚上10点5分都处于运行状态,有好几次因为我没有开机导致当天我写的程序没有update。于是乎我有了把MongoDB和网页爬取程序部署在树莓派上的想法。说干就干,在树莓派上陆续安装了相应的开发环境,主要是python的开发环境,比如安装Scapy框架可以通过下面的命令

1
2
3
4
5
6
# install Scrapy
sudo apt-get install libffi-dev
sudo apt-get install libxml2-dev
sudo apt-get install libxslt1-dev
sudo apt-get install python-dev
sudo pip install scrapy

然而在安装最新版的MongoDB时我遇到了无法解决的问题,实际上,通过下面命令可以安装MongoDB

1
2
3
# install MongoDB
sudo apt-get update
sudo apt-get install mongodb-server

但是版本号停留在了v2.4.14,经过查询得知v2.4.14版本后MongoDB就放弃了对32 bit ARM架构CPU的支持,导致树莓派3无法安装最新的MongoDB。奈何我的程序用了大量新版本的特性,比如$slice选择符等,最后在树莓派上部署爬虫的想法只好作罢。

总结

第一次接触"单板电脑"(SBC, Single Board Computer)还是很有新鲜感的,低廉的售价,和正常PC几乎一样的功能以及丰富的DIY选项让人很难拒绝。不过作为一个全栈开发人员,想要在树莓派上部署应用,不能安装最新的MongoDB意味着几年前比较流行的MEAN框架在树莓派上可能会行不通,部分框架,例如于ARM处理器有兼容问题的Meteor,会导致部分软件例如wekan在树莓派上无法应用,这些问题在购买前还是要考虑的。

参考

  1. How To Set Up SSH Keys
  2. VNC (VIRTUAL NETWORK COMPUTING)