香蕉派(BananaPi)是类似于树莓派一样的卡片式微型计算机,可用于硬件控制、软件部署、多媒体播放等等用途.
到手 bananapi pro 也有一段时间了,最近正好有空,记录一下我走过的坑...
- 安装准备
- 开始安装
- 连接网络
- 花生壳
- 迅雷离线
- 共享
- 开发环境
- 运行状态
安装准备
进入官网下载页面,有 13 个系统供我们选择,如下图所示:
目前我试过 2 个系统:Android、Raspbian
有开发需求的建议安装 Raspbian
-
Android
{% blockquote %}
版本:4.4,是一个 Android pad 版本,分辨率经过测试支持 1080P(默认)
支持 wifi 连接(稳定性欠佳)
此系统最大好处就是可以像使用手机一样安装 App,比如我安装了全聚合 App(非广告),通过 HDMI 连接到显示器,像其他盒子一样可以看网络电视、视屏等.
{% endblockquote %} -
Raspbian
{% blockquote %}
基于 Debian 修改而来的 Linux 系统
{% endblockquote %}
开始安装
安装系统
官方提供了详细的安装操作系统的说明,点我查看
连接网络
准备
{% blockquote %}
- 有显示器
打开控制台,输入 ifconfig 查看网络状况
查看 eth0 与 wlan0 信息 - 无显示器
计算机一台,通过远程的方式连接到香蕉派
如:ssh bananapi@192.168.1.8
{% endblockquote %}
网线
通过网线方式连接的话,控制台 ifconfig,eth0 信息中是否有 ip 地址(没有的话检查网线连接、路由器地址过滤或地址绑定是否限制)
Wifi
如网线类似,查看 wlan0 信息(无 waln0 ? 别急...这是一个坑,下面将具体介绍)
配置网络
大坑记录
香蕉派默认没有开启 wifi 模块,需要手动开启...
开启方式(官方文档):
{% blockquote %}
- 加载 wifi 驱动
sudo modprobe ap6210 - 查看所有驱动加载情况
lsmod
sudo modprobe ap6210 只是一次性的,重启后 wifi 并不会加载,所以我们要让他开机就加载 wifi:
- 编辑模块配置文件
sudo nano /etc/modules - 在底部添加一行
ap6210 - 保存并退出
{% endblockquote %}
修改网络配置文件
通过编辑配置文件的方式,选择 Dhcp 或 Static ip
网络配置文件地址:/etc/network/interfaces
- 控制台执行:sudo nano /etc/network/interfaces
- 修改配置(静态 ip 方式,方便远程连接)
这里我没有使用 wifi,注释了 wifi 配置,采用 eth0# eth0-有线 auto lo iface lo inet loopback iface eth0 inet static address 192.168.0.13 netmask 255.255.255.0 gateway 192.168.0.1 # wlan0-无线 #auto wlan0 #allow-hotplug wlan0 #iface wlan0 inet static #pre-up wpa_supplicant -B w -D wext -i wlan0 -c/etc/ wpa.conf #post-down killall -q wpa_supplicant #address 192.168.0.12 #netmask 255.255.255.0 #gateway 192.168.0.1 iface default inet dhcp
花生壳
花生壳是一个针对嵌入式设备而开发的控制软件,可以花生壳后台配置访问内网的设备,包括端口映射配置.
安装
- 下载安装包
- 文件拷贝
通过 u 盘,或者 ftp 的方式将文件放置到香蕉派,解压缩
进入 phddns2 文件夹 cd phddns2
执行 ./oraynewph start - 查看状态
oraynewph status
查看控制台信息,即可看到 SN 码,以及运行状态.
迅雷离线
为香蕉派增加离线下载功能
安装迅雷离线固件
- 下载
下载地址:http://pan.baidu.com/s/1kTCBZbL 提取码:qiq9 - 上传
拷贝安装文件到香蕉派中,如~/home/bananapi/xunlei - 解压缩
unzip xxxx.zip - 权限
chmod 0777 * -R - 运行
./portal
获取到你的设备码 - 重启
./portal -s
./portal - 迅雷远程
http://yuancheng.xunlei.com/
输入之前的机器码
挂载硬盘
{% blockquote %}
迅雷是检测挂载的磁盘来作为下载的目录。所以要保证几个事情,一是迅雷要具有写入权限; 二是必须要有挂载的磁盘,而且这个磁盘必须不是挂载到根目录的
{% endblockquote %}
共享
Samba
{% blockquote %}
Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
{% endblockquote %}
- 安装 samba 包
sudo apt-get install samba samba-common-bin
sudo apt-get install netatalk (可选,用于支持 AFP)
sudo apt-get install avahi-daemon(可选,用于支持网内的计算机自动发现)
- 配置
/etc/samba/smb.conf
[public]
comment = Public Storage
path = /home/pi
read only = no#任何人都具有了访问修改的权限
#因为是公共文件夹,所以给了所有用户全部权限,可以自定义
create mask = 0777#新创建文件的默认属性
directory mask = 0777#新创建文件夹的默认属性
guest ok = yes#默认的访问用户名为guest
browseable = yes
- 用户
cat /etc/passwd | mksmbpasswd.sh >/etc/samba/smbpasswd
smbpasswd -a 用户名 添加用户
smbpasswd -e 用户名 激活用户
DLNA
{% blockquote %}
DLNA 并不是创造技术,而是形成一种解决的方案,一种大家可以遵守的规范。所以,其选择的各种技术和协议都是当前所应用很广泛的技术和协议。
DLNA 将其整个应用规定成 5 个功能组件。从下到上依次为:网络互连,网络协议,媒体传输,设备的发现控制和管理,媒体格式。
{% endblockquote %}
- 安装
sudo apt-get install minidlna - 配置
/etc/minidlna.conf
#A表示这个目录是存放音乐的,当minidlna读到配置文件时,它会自动加载这个目录下的音乐文件
media_dir=A,/samba/DLNA/Music
media_dir=P,/samba/DLNA/Picture
media_dir=V,/samba/DLNA/Video
#配置minidlna的数库数据的存放目录
db_dir=/samba/DLNA/db
#配置日志目录
log_dir=/samba/DLNA/log
确保目录存在且设置权限为可读写
-
其他
- 重启 minidlna
/etc/init.d/minidlna restart - minidlna 随机启动
sudo update-rc.d minidlna defaults - 停止 minidlna 服务
sudo service minidlna stop - 取消 minidlna 的开机自动启动
sudo update-rc.d -f minidlna remove
- 重启 minidlna
-
minidlna 支持 rm、rmvb
参考:编译 minidlna
FTP
- 安装
apt-get install vsftpd - 配置
/etc/vsftpd.conf- 配置用户可以写权限:write_enable=YES
- 配置 uMask:local_umask=022(默认为 077,该种方式不支持断点续传,修改为 022)
- 禁止匿名用户登录:anonymous_enable=NO
- 限制用户访问配置以外的路径:chroot_local_user=YES(这个配置是限制全部用户的,也可以限制部分用户)
- 配置用户的 Home 目录:local_root=/application/search/test
- 重启
service vsftpd restart
开发环境
运行状态
获取香蕉派的 cpu、内存等使用情况
- 建立脚本
nano get.py
import os
# Return CPU temperature as a character string
def getCPUtemperature():
res = os.popen('vcgencmd measure_temp').readline()
return(res.replace("temp=","").replace("'C\n",""))
# Return RAM information (unit=kb) in a list
# Index 0: total RAM
# Index 1: used RAM
# Index 2: free RAM
def getRAMinfo():
p = os.popen('free')
i = 0
while 1:
i = i + 1
line = p.readline()
if i==2:
return(line.split()[1:4])
# Return % of CPU used by user as a character string
def getCPUuse():
return(str(os.popen("top -n1 | awk '/Cpu\(s\):/ {print $2}'").readline().strip()))
# Return information about disk space as a list (unit included)
# Index 0: total disk space
# Index 1: used disk space
# Index 2: remaining disk space
# Index 3: percentage of disk used
def getDiskSpace():
p = os.popen("df -h /")
i = 0
while 1:
i = i +1
line = p.readline()
if i==2:
return(line.split()[1:5])
# CPU informatiom
CPU_temp = getCPUtemperature()
CPU_usage = getCPUuse()
# RAM information
# Output is in kb, here I convert it in Mb for readability
RAM_stats = getRAMinfo()
RAM_total = round(int(RAM_stats[0]) / 1000,1)
RAM_used = round(int(RAM_stats[1]) / 1000,1)
RAM_free = round(int(RAM_stats[2]) / 1000,1)
# Disk information
DISK_stats = getDiskSpace()
DISK_total = DISK_stats[0]
DISK_used = DISK_stats[1]
DISK_perc = DISK_stats[3]
if __name__ == '__main__':
print('')
print('CPU Temperature = '+CPU_temp)
print('CPU Use = '+CPU_usage)
print('')
print('RAM Total = '+str(RAM_total)+' MB')
print('RAM Used = '+str(RAM_used)+' MB')
print('RAM Free = '+str(RAM_free)+' MB')
print('')
print('DISK Total Space = '+str(DISK_total)+'B')
print('DISK Used Space = '+str(DISK_used)+'B')
print('DISK Used Percentage = '+str(DISK_perc))
- 执行脚本
python get.py
参考:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于