折腾 友善之臂 Nano PI NEO

NanoPi 基本信息

接口布局

资源特性

  • CPU: Allwinner H3, Quad-core Cortex-A7 Up to 1.2GHz
  • DDR3 RAM: 256MB/512MB
  • Connectivity: 10/100M Ethernet
  • USB Host: Type-A x1, 2.54mm pin x2
  • MicroSD Slot x 1
  • MicroUSB: OTG and power input
  • Debug Serial Port: 4Pin, 2.54mm pitch pin header
  • GPIO: 2.54mm spacing 36pin, It includes UART, SPI, I2C, IO etc
  • PC Size: 40 x 40mm
  • Power Supply: DC 5V/2A
  • OS/Software: u-boot,UbuntuCore

NanoPi 基本安装

安装系统

核心系统镜像使用 官方百度盘 中分享的 nanopi-neo-core-qte-sd4g-20160704.img.zip

卡刷系统

使用的是 SD 4G 卡

使用 Win32DiskImager 或是 Ubuntu 系统中的 dd 命令将系统镜像写到 SD 卡中,就可以使用了。

系统中默认用户和密码是

1
2
user : root
pass : fa

卡刷完成之后,如果 SD 卡存储大于 4G 可以通过下面的命令,更新系统存储大小,使用全部存储空间。

1
fs_resize

查看系统基本信息

CPU 信息查看

1
cat /proc/cpuinfo

查看 CPU 的位数

1
2
getconf LONG_BIT
32

提示: 因为 CPU 是 32 位的,所以很遗憾,不能安装 Docker 来玩了。

查看内存

内存 只有 512M

1
2
3
cat /proc/meminfo
free -m

查看 cpu 的温度

1
cpu_freq

系统配置

更换国内更新源

将 apt 的更新源设置为国内更新源 (科技大学)

1
vi /etc/apt/source.list
1
2
3
4
5
6
deb http://mirrors.ustc.edu.cn/ubuntu-ports wily main restricted
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports wily main restricted
deb http://mirrors.ustc.edu.cn/ubuntu-ports wily-updates main restricted
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports wily-updates main restricted
deb http://mirrors.ustc.edu.cn/ubuntu-ports wily-security main restricted
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports wily-security main restricted

保存退出

1
apt-get update

安装常用工具

apt-get install aptitude tmux zsh vim curl git subversion python2.7 ln -s /usr/bin/python2.7 /usr/bin/python

更新终端语言设置

1
vim /etc/profile

在内容最下面添加下面配置

1
export LC_ALL=C

将 shell 更改为 zsh 并安装 oh-my-zsh 工具集合

1
chsh -s `which zsh`

安装 oh-my-zsh 环境

1
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh

编辑 ~/.zshrc 进行个性配置

zsh theme 选择 mortalscumbag

安装 Htop 监控工具

htop 是一个系统监控工具,默认的系统是基于 UbuntuCore 版本的,不能通过 aptitude / apt-get 直接安装,所以手工编译安装

先安装支持组件

1
aptitude install ncurses-base ncurses-bin ncurses-dev libncurses5 libncurses5-dev libncursesw5 libncursesw5-dev

编译安装 htop

1
2
3
4
5
wget http://sourceforge.net/projects/htop/files/htop/1.0.2/htop-1.0.2.tar.gz
tar zxvf htop-1.0.2.tar.gz
cd htop-1.0.2
./configure
make && make install

为 NanoPi Neo 设置网络

我使用的是 小米 WiFi (mt7601)

可以使用 lsmod 命令查看已经加载的驱动

启用 ap 模式 (注意: 我没有测试成功)

安装 hostapd 服务 wget http://mirrors.ustc.edu.cn/ubuntu-old-releases/ubuntu/pool/universe/w/wpa/hostapd_2.1-0ubuntu4_armhf.deb dpkg -i hostapd_2.1-0ubuntu4_armhf.deb 顺利安装

安装 dhcpd 服务 aptitude install isc-dhcp-server

mt7601 默认不支持 ap 模式。需要编译安装第三方驱动来支持 参考 1 参考 2 参考 3

编译 小米wifi 驱动时,遇到缺少头文件的问题

下载 sd 卡中 ubuntu 系统的源码包,并找到 cp: cannot stat ‘/lib/modules/3.4.39-h3/build/Module.symvers’: No such file or directory 然后重新编译驱动

参考 :

安装 newsbeuter 终端下的 RSS 订阅客户端

官方文档参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 编译安装stfl依赖
wget http://www.clifford.at/stfl/stfl-0.24.tar.gz
tar zxvf stfl-0.24.tar.gz
cd stfl-0.24
make && make install
# 安装依赖库
aptitude install libxml2-dev
aptitude install libcurl-dev libcurl3-dev
aptitude install libjson-c-dev
aptitude install libsqlite3-dev
# 编译安装
wget http://newsbeuter.org/downloads/newsbeuter-2.9.tar.gz
tar zxvf newsbeuter-2.9.tar.gz
cd newsbeuter-2.9
make && make install

终端下的 文件管理器 替代 Midnight Commander

  1. 通过 pip 包管理器安装
1
pip search ranger
  1. 编译安装
1
2
3
4
wget http://nongnu.org/ranger/ranger-stable.tar.gz
tar zxvf ranger-stable.tar.gz
cd ranger-1.7.2
python setup.py install

服务环境安装

安装 VeryNginx

用于 Web 代理服务使用

  1. 首先安装 pip
1
2
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
  1. 创建并编辑 pip 源配置文件 ~/.pip/pip.conf
1
2
3
4
5
6
7
[global]
timeout = 6000
index-url = http://pypi.douban.com/simple/
trusted-host = pypi.douban.com
[install]
use-mirrors = true
mirrors = http://pypi.douban.com/
  1. 安装 VeryNginx
1
2
3
4
5
6
aptitude install libssl libssl-dev libpcre3 libpcre3-dev
wget https://github.com/alexazhou/VeryNginx/archive/v0.3.3.tar.gz
tar zxvf v0.3.3.tar.gz
cd VeryNginx-0.3.3/
python install.py install
ln -s /opt/verynginx/openresty/nginx/sbin/nginx /usr/local/sbin/nginx

更改 nginx 基本配置

vim /opt/verynginx/openresty/nginx/conf/nginx.conf user nginx; 改为 user root;

编译安装 Redis

Redis 用于缓存服务使用

下载 Redis 3.2 稳定 版本 http://download.redis.io/releases/redis-3.2.5.tar.gz

1
2
3
4
tar zxvf redis-3.2.5.tar.gz
cd redis-3.2.5
make
make install

安装 PHP 环境

PHP 是网站开发使用的脚本语言。

1
aptitude install -y php-pear php5 php5-cli php5-common php5-curl php5-gd php5-dev php5-json php5-sqlite pkg-php-tools php5-mysql

安装 Java SDK

  1. 首先去 oracle 官网下载 jdk
  2. 将解压的 jdk 目录移动到 /opt/jdk 中
  3. 配置环境变量
1
2
3
4
5
6
JAVA_HOME=/opt/jdk
JRE_HOME=$JAVA_HOME/jre
JAVA_BIN=$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME PATH CLASSPATH

安装 Python Notebook

1
2
3
4
5
6
7
8
9
10
11
12
13
14
aptitude install python-dev
pip install ipython
pip install "ipython[notebook]"
pip install pyreadline
pip install tornado
pip install pyzmq
pip install jinja2
pip install scipy
pip install numpy
pip install jupyter
pip install matplotlib
pip install pandas
pip install sympy
pip install nose

安装 php-kernel for jupyter

具体可参考

编译安装 libzmq 支持库

1
2
3
4
5
6
7
8
wget https://github.com/zeromq/zeromq3-x/releases/download/v3.2.5/zeromq-3.2.5.tar.gz
tar zxvf zeromq-3.2.5.tar.gz
cd zeromq-3.2.5
./configure
make -j 4
make check
make install
ldconfig

pecl 安装 php-zmq

1
pecl install zmq-beta

安装 NodeJS 开发环境

1
2
3
wget https://nodejs.org/dist/v6.9.2/node-v6.9.2-linux-armv7l.tar.xz
xz -d node-v6.9.2-linux-armv7l.tar.xz
tar xvf node-v6.9.2-linux-armv7l.tar.xz

将解压好的目录,移动到 /opt 下,然后配置环境变量即可

安装 GoLang 开发环境

1
2
wget http://golangtc.com/static/go/1.7.4/go1.7.4.linux-armv6l.tar.gz
tar zxvf go1.7.4.linux-armv6l.tar.gz

将解压好的目录,移动到 /opt 下,然后配置环境变量即可

安装 MySQL 数据库服务

1
aptitude install mysql-server mysql-client

后记

友善之臂的开发板很小!这个是我最大的体会,你可以把它嵌入到你需要的设备中,功耗控制的也不错,实际测试,使用时,大约在 1.5 W 左右。

我只测试了 Linux 系统的内核,开发学习还是够用的。

说说缺点和遗憾吧

  1. 连接显示设备很不方便。我是通过使用网线把 NanoPi 直接连接到我的路由器上,然后查找它的 IP 才能玩起来。
  2. 对wifi网卡支持的不是太好。折腾的过程中经常出现一些异常情况。本想通过 小米 Wifi 对外提供固定的 AP 热点,然后让其它的设备连接上它,再来折腾。这个反正我是没成功过!上面的资料中,提到的需要源码重新编译内核,我试了两次,没有成功。
  3. 开发资料和社区的资料并不是太多,对于想深入研究这种开发的人,可能还是得绕点弯路才能折腾成功。