Raspberry Pi(中文名为“树莓派”,简写为RPi,(或者RasPi / RPI)是为学生计算机编程教育而设计,只有信用卡大小的卡片式电脑,其系统基于Linux。[1] 随着Windows 10 IoT的发布,我们也将可以用上运行Windows的树莓派。[2] 自问世以来,受众多计算机发烧友和创客的追捧,曾经一“派”难求。别看其外表“娇小”,内“心”却很强大,视频、音频等功能通通皆有,可谓是“麻雀虽小,五脏俱全”。
正好手上也有一块树莓派,这里我就写一下我是怎么折腾的吧。
硬件准备
我这里使用的硬件有:
- *树莓派本体,我这里使用的 Raspberry Pi 2 Model B (Raspberry Pi 2B)。
- *5v电源,我这里使用的是普通的手机充电适配器来供电。
- *TF卡,我这里使用的是 SanDisk GMicroSDHC UHS-I Class10 16G(闪迪 c10 16G)。
- 无线网卡,我这里使用的是 FAST FW150US 2.0。
- 存储器,这里使用 U盘 或者 移动硬盘 都随意,可以根据你自己的情况选择。
读卡器,这个也是随意。
- 本人已经测试过 腾达(Tenda)W311M 150M 和 BL-WN2210US(推荐使用) 也都是免驱使用的USB网卡。
- 带*号的是必须的硬件,没有就无法继续。
安装系统
其实我们完全可以把树莓看作一部功能完整电脑,现在我们就要为这部电脑安装操作系统了。
其实树莓派有各种系统使用支持,比如说ubuntu、osmc、LIBREELEC、PiNet、RISC OS、Weather Station 还有我们熟知的 Windows 哦。
我这里选用的是raspbian,资料多、教程全非常适合新手使用。
下载镜像文件
我们可以直接在raspberry pi官方网站找到raspbian。
在下面的网页中找到 RASPBIAN JESSIE WITH PIXEL,点击Download ZIP下载即可。
https://www.raspberrypi.org/downloads/raspbian/
- 速度可能比较慢,如果条件允许请使用科学上网工具。
- 如果你像我一样只是用ssh来连接,可以下载RASPBIAN JESSIE LITE,不包含桌面等配套软件,节省更多的内存使用和tf卡存储。
刻录镜像文件
- 我们把下载的 “2016-05-27-raspbian-jessie.zip” (文件名可能不一样,请按实际情况区别)解压到一个自己能找到的目录。
然后我们需要一个镜像烧录软件,我这里使用的是 Win32DiskImager,也可使用USB Image Tool。
USB Image Tool 下载:
http://www.alexpage.de/usb-image-tool/download/
Win32DiskImager 下载:
http://sourceforge.net/projects/win32diskimager/
如果你的英文还算过关可以查看英文说明:
https://www.raspberrypi.org/documentation/installation/installing-images/windows.md
连接硬件并开机
- TF卡插入树莓派。
- 无线网卡插入树莓派usb接口。
- 网线插入树莓派rj45接口并连接路由器。
- 数据线usb连接电源适配器,micro usb连接树莓派。
树莓派并没有开关之类的东西,只要电源适配器通电即开机。
配置系统
虽然安装好了操作系统,但是我们没有连接显示器、键盘鼠标之类的外设怎么去操控树莓派呢?
答案当然是使用SSH拉,知道linux的同学应该清楚,linux下面使用命令行的情况是非常多的,而SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
raspbian当然也是内置有SSH的,我们这里就了解一下怎么使用SSH来管理树莓派吧。
查看树莓派IP
要连接SSH必须有一个连接地址,我们这里当然是指的IP地址,可是我们不知道怎么办呢,还记得我们把树莓派连接到路由器了吗?
没错,我们可以使用路由器看分配到的IP是剁手,我们就可以在同一个局域网连接到树莓派了。
关于怎么具体获取,可能每个路由器型号都不一样,我这里就不赘述了,如果实在不知道可以去搜索一下,具体操作非常简单,相信各位都能很快理解
我们这里使用极路由,获取到的ip是:192.168.199.126
- 树莓派的客户端名称一般是“raspberrypi”,一般路由器都会直接显示的。
下载SSH客户端
连接SSH在Windows下面是没有直接支持的,我们需要借助软件支持,我这里强烈推荐使用xshell。
下载安装之后打开xshell,按下快捷键“alt+n”新建一个连接,连接地址填入我们查看到的ip地址。
完成之后会跳出一个连接管理,双击刚才我们新建的连接,会提示我们输入用户名及密码
默认的用户名是:pi
相对应的密码是:raspberry
如果看到下图这样的状态,我就我们连接成功了,可以使用树莓派为我们做任何事情了~
- xshell官方网站:https://www.netsarang.com/
- xhsell为收费软件,但是也提供免费版本使用。
- 如果你不喜欢xshell也可以使用别的软件代替,比如Puty、SecureCRT等。
- 如果提示你无法连接,可以返回上一步去查看正确的树莓派IP,如果没找到请检查树莓派是否正常启动。
配置软件源
由于总所周知的原因,树莓派在国内使用源安装软件速度非常慢,达到无法忍受的程度,我们有没有办法解决呢,当然是有的,国内有许多大学及企业提供Raspbian的镜像站,我们可以非常简单的去使用它们。
#大连东软信息学院(北方用户)
deb http://mirrors.neusoft.edu.cn/raspbian/raspbian/ jessie main contrib non-free rpi
deb-src http://mirrors.neusoft.edu.cn/raspbian/raspbian/ jessie main contrib non-free rpi
#中国科学技术大学
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ jessie main contrib non-free rpi
deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/ jessie main contrib non-free rpi
#清华大学
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ jessie main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ jessie main contrib non-free rpi
#重庆大学(中西部用户)
deb http://mirrors.cqu.edu.cn/raspbian/raspbian/ jessie main contrib non-free rpi
deb-src http://mirrors.cqu.edu.cn/raspbian/raspbian/ jessie main contrib non-free rpi
#前面几个都是教育网的
#搜狐
deb http://mirrors.sohu.com/raspbian/raspbian/ jessie main contrib non-free rpi
deb-src http://mirrors.sohu.com/raspbian/raspbian/ jessie main contrib non-free rpi
#阿里云
deb http://mirrors.aliyun.com/raspbian/raspbian/ jessie main contrib non-free rpi
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ jessie main contrib non-free rpi
首先我们备份一下配置文件,方便出错还原回来
sudo cp /etc/apt/sources.list /etc/apt/sources.list.orig
然后我们编辑配置文件
sudo nano /etc/apt/sources.list
这里你可能会有点不会,像我这样,在旧配置项前加#表示注释,在最前面加上上面的镜像站地址即可,按下“ctrl+o”保存,按下“ctrl+z”退出nano。
除了这个软件源外还需要替换另外一个
sudo nano /etc/apt/sources.list.d/raspi.list
注释掉原来的地址,写入中科大的镜像源:
deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ jessie main ui
保存退出后更新系统及软件
sudo apt-get update && sudo apt-get upgrade
1.我们这里使用的是jessie,如果你是旧版本的raspbian,可能是使用wheezy,需要将上面的镜像站后面的“jessie main contrib non-free rpi” 替换成 “wheezy main contrib non-free rpi”
2.第一次更新可能会比较慢,跟你的tf卡速度和网络速度有关系,请耐心等待
设置无线网卡
我们上面在树莓派上插了一个usb网卡,其实还是不能使用的,我们这里配置一下无线网卡。
首先查看一下usb是否识别到了
lsusb
如果树莓派已经正常识别,在显示类似于如下的信息中可以看到你的USB无线网卡设备 ID 和芯片型号:
Bus 001 Device 005: ID 152d:2329 JMicron Technology Corp. / JMicron USA Technology Corp. JM20329 SATA Bridge
Bus 001 Device 004: ID 0bda:8178 Realtek Semiconductor Corp. RTL8192CU 802.11n WLAN Adapter
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
我这里就已经识别到了“RTL8192CU 802.11n WLAN Adapter”
然后我们配置一下网卡配置文件
sudo nano /etc/network/interfaces
写入以下配置项,注释掉wpa_supplicant相关的配置
auto wlan0 //表示如果有wlan设备,使用wlan0设备名
allow-hotplug wlan0 //表示wlan设备可以热插拨
iface wlan0 inet dhcp //表示如果有WLAN网卡wlan0 (就是WIFI网卡), 则用dhcp获得IP地址
wpa-ssid “你的wifi名称”//表示连接SSID名
wpa-psk “你的wifi密码”//表示连接WIFI网络时,使用wpa-psk认证方式,认证密码
然后我们重置一下网卡配置
sudo /etc/init.d/networking restart
sudo service networking restart
//上面任意一个都可以,不需要俩都执行
然后就可以查看使用路由器查看有没有无线网卡的连接了,如果有连接表示配置成功了,如果没有连接请检查无线网络名称及密码是否正确
解锁root账号(如果是新手不建议解锁)
注意:root用户是系统中唯一的超级管理员,它具有等同于操作系统的权限。root比windows的系统管理员的能力更大,足以把整个系统的大部分文件删掉,导致系统完全毁坏,不能再次使用。所以,用root进行不当的操作是相当危险的,轻微的可以死机,严重的甚至不能开机。所以,除非确实需要,否则不推荐解锁root。
解锁命令:
sudo passwd root
sudo passwd --unlock root
然后在“/etc/ssh/sshd_config”里面修改
PermitRootLogin without-password 为 PermitRootLogin yes
然后重启ssh服务即可。
- 在wheezy下面是不用编辑文件即可解锁
- 特别建议不开启root,我们的pi用户已经拥有sudo权限了,不需要root即可完成操作。
- 如果要跟我我继续做下去可以解锁root,我这里偷懒没有用pi用户了,毕竟也是局域网,而且我后面使用证书登陆了,一般不会有大的问题。
raspi-config配置
raspi-config是由Alex Bradbury编写并维护的树莓派设置工具,特别为Raspbian度身订造。
sudo raspi-config
这时会在屏幕上显示一个设置项,我们可以快捷的设置一下配置
- 选择Expand Filesystem,然后把整个系统的可用空间扩展到储存卡的大小。
- 选择Change User Password设置新密码,按提示步骤完成
- 选择Internationalisation Options—>Change Timezone设置时区,在中国大陆,选择Asia—>Chongqing(或者Hong_Kong)都可以
- 按Tab键,选中,回车,提示Reboot(重启),选,回车,RPi就会重启,SSH会自动断开连接,然后重新连接SSH,记得输入你设置的新密码。
安装软件
虽然配置好了系统常用设置,可以更方便的使用了,但是我们怎么去直接使用呢,这里我就接受一下我都拿树莓派为我做什么事情:
- 首先是下载机,我们可以在不开电脑的情况下离线下载我们需要的文件,比如说电影之类的,白天在公司上班新建一个下载任务,回到家直接就可以观看影片了,是不是很赞讷~
- web服务器,我们可以将测试环境或者个人博客放到这里了,你可以将其看作一个虚拟主机,我们可以新建非常多这样的虚拟主机
- 定时任务器,得益于crontab,我们可以非常简单的设置一个定时任务,让树莓派为我们在指定的时间自动完成指定的任务
然后我就来介绍一下怎么实现这些功能的,你们可以作为参考也实现。
挂载移动硬盘
我们用来下载的话肯定要有一个地方存储文件对吗?但是我们系统默认是没有挂载的,我们在系统里面也找不到,所以首先我们挂载移动硬盘。
我这里使用硬盘作为存储器,你用U盘也是一样的效果,注意启动器名称即可。
首先需要提醒一下,我们使用移动硬盘一定要选择那种有外接供电的,因为树莓派的USB口供电能力有限。
我们上面已经把移动硬盘连接上去了,所以也是用lsusb查看一下设备,如果有的话就可以继续下一步了。
我这里使用的是没有数据的新硬盘,我这里分区成ext4的硬盘格式(注意ext4分区在windows下面是没有原生支持的,如果你要在windows查看ext4格式硬盘的数据需要额外安装软件实现),如果使用旧硬盘并且不使用ext4、ext3等格式的话需要额外下载软件支持。
我们这里首先将硬盘新建分区
- 运行 fdisk -l 命令查看数据盘。注意:在没有分区和格式化数据盘之前,使用 df -h 命令是无法看到硬盘的。
- 运行 fdisk /dev/sda,对数据盘进行分区。根据提示,依次输入 n,p,1,两次回车,wq,分区就开始了。
- 运行 fdisk -l 命令,查看新的分区。新分区 sda1 已经创建好。
- 运行 mkfs.ext4 /dev/sda1,对新分区进行格式化。格式化所需时间取决于数据盘大小。
- 运行 echo /dev/sda1 /data ext3 defaults 0 0 >> /etc/fstab 写入新分区信息。完成后,可以使用 cat /etc/fstab 命令查看。
我们这里将硬盘分区挂载到了/data ,但是默认是没有这个文件夹 的,需要自己新建: mkdir /data 如果你需要挂载到别处可以修改以上命令中的 /data 部分。
运行 mount /dev/sda1 /data 挂载新分区,然后执行 df -h 查看分区。如果出现数据盘信息,说明挂载成功,可以使用新分区了。
文件共享
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
samba在windows中是默认支持的,我们这里就使用samba进行文件共享及管理。
我们直接使用源安装samba及vim:
sudo apt-get install vim samba samba-common-bin -y
然后配置一下需要共享的地方:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.orig
sudo vim /etc/samba/smb.conf
填入下文,设置一个简单的共享:
[Raspberry-NAS]
comment = share
path = /data
browseable = yes
writable = yes
public = yes
valid users = @root
force group = users
create mask = 0777
directory mask = 0777
read only = no
因为使用了用户进行验证,所以我们需要让samba认识一下我们设置的用户:
sudo smbpasswd -a root
然后重启一下samba使其生效:
sudo service samba restart
然后你就可以在网上邻居哪里找到你的树莓派了,点击进去试试把
安装远程下载
实现我们的下载机功能需要借助软件实现,我们这里使用了两个解决方案,一个是迅雷,一个是Aria2。
Aria2传统下载非常的快速稳定,同时支持多线程及断点续传,配合插件下载百度云的文件简直稳得一笔,特别推荐大家使用这种方式,而且不会有限速这一说。
迅雷相信都不用介绍了,大家可能比我还熟悉。
我们首先来安装Aria2:
sudo apt-get install aria2 -y
然后配置一下:
mkdir ~/.aria2
touch ~/.aria2/aria2.session
vim ~/.aria2/aria2.conf
下载配置文件:
# 基本配置
# 下载目录
dir=/data/download
# 下载从这个文件中找到的urls, 需自己建立这个文件
# touch /home/pi/.aria2/aria2.session
input-file=/root/.aria2/aria2.session
# 最大同时下载任务数,默认 5
#max-concurrent-downloads=5
# 断点续传,只适用于 HTTP(S)/FTP
continue=true
# HTTP/FTP 配置
# 关闭连接如果下载速度等于或低于这个值,默认 0
#lowest-speed-limit=0
# 对于每个下载在同一个服务器上的连接数,默认 1
max-connection-per-server=5
# 每个文件最小分片大小,例如文件 20M,设置 size 为 10M, 则用2个连接下载,默认 20M
#min-split-size=10M
# 下载一个文件的连接数,默认 5
#split=5
# BT 特殊配置
# 启用本地节点查找,默认 false
bt-enable-lpd=true
# 指定最大文件数对于每个 bt 下载,默认 100
#bt-max-open-files=100
# 单种子最大连接数,默认 55
#bt-max-peers=55
# 设置最低的加密级别,可选全连接加密 arc4,默认是头加密 plain
#bt-min-crypto-level=plain
# 总是使用 obfuscation handshake,防迅雷必备,默认 false
bt-require-crypto=true
# 如果下载的是种子文件则自动解析并下载,默认 true
#follow-torrent=true
# 为 BT 下载设置 TCP 端口号,确保开放这些端口,默认 6881-6999
listen-port=65298
#Set UDP listening port used by DHT(IPv4, IPv6) and UDP tracker
dht-listen-port=65298
# 整体上传速度限制,0 表示不限制,默认 0
max-overall-upload-limit=10
# 每个下载上传速度限制,默认 0
#max-upload-limit=0
# 种子分享率大于1, 则停止做种,默认 1.0
#seed-ratio=1
# 做种时间大于2小时,则停止做种
seed-time=120
# RPC 配置
# 开启 JSON-RPC/XML-RPC 服务,默认 false
enable-rpc=true
# 允许所有来源,web 界面跨域权限需要,默认 false
rpc-allow-origin-all=true
# 允许外部访问,默认 false
rpc-listen-all=true
# rpc 端口,默认 6800
rpc-listen-port=6800
# 设置最大的 JSON-RPC/XML-RPC 请求大小,默认 2M
#rpc-max-request-size=2M
# rpc 密码,可不设置
#rpc-passwd=raspberry
# rpc 用户名,可不设置
#rpc-user=aria2pi
# 高级配置
# This is useful if you have to use broken DNS and
# want to avoid terribly slow AAAA record lookup.
# 默认 false
disable-ipv6=true
# 指定文件分配方法,预分配能有效降低文件碎片,提高磁盘性能,缺点是预分配时间稍长
# 如果使用新的文件系统,例如 ext4 (with extents support), btrfs, xfs or NTFS(MinGW build only), falloc 是最好的选择
# 如果设置为 none,那么不预先分配文件空间,默认 prealloc
file-allocation=falloc
# 整体下载速度限制,默认 0
#max-overall-download-limit=0
# 每个下载下载速度限制,默认 0
#max-download-limit=0
# 保存错误或者未完成的下载到这个文件
# 和基本配置中的 input-file 一起使用,那么重启后仍可继续下载
save-session=/root/.aria2/aria2.session
# 每5分钟自动保存错误或未完成的下载,如果为 0, 只有 aria2 正常退出才回保存,默认 0
save-session-interval=300
# 若要用于 PT 下载,需另外的配置,这里没写
然后运行一下看看有没有错误,如果没有提示任何错误信息,那就按“Ctrl+C”停止:
aria2c --conf-path=~/.aria2/aria2.conf
我们给 aria2 添加自启动:
sudo vim /etc/init.d/aria2c
输入以下内容:
#! /bin/sh
# /etc/init.d/aria2c
### BEGIN INIT INFO
# Provides: aria2c
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: aria2c RPC init script.
# Description: Starts and stops aria2 RPC services.
### END INIT INFO
#VAR
RUN="/usr/bin/aria2c"
ARIA_PID=$(ps ux | awk '/aria2c --daemon=true --enable-rpc/ && !/awk/ {print $2}')
# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting script aria2c "
if [ -z "$ARIA_PID" ]; then
$RUN --daemon=true --enable-rpc=true -D --conf-path=/root/.aria2/aria2.conf
echo "Started"
else
echo "aria2c already started"
fi
;;
stop)
echo "Stopping script aria2c"
if [ ! -z "$ARIA_PID" ]; then
kill $ARIA_PID
fi
echo "OK"
;;
restart)
echo "Restarting script aria2c"
if [ ! -z "$ARIA_PID" ]; then
kill $ARIA_PID
fi
sleep 3 # TODO:Maybe need to be adjust
$RUN --daemon=true --enable-rpc=true -D --conf-path=/root/.aria2/aria2.conf
echo "OK"
;;
status)
if [ ! -z "$ARIA_PID" ]; then
echo "The aria2c is running with PID = "$ARIA_PID
else
echo "No process found for aria2c RPC"
fi
;;
*)
echo "Usage: /etc/init.d/aria2c {start|stop|restart|status}"
exit 1
;;
esac
exit 0
为其添加可执行权限:
sudo chmod +x /etc/init.d/aria2c
然后更新rc,添加自启动服务:
sudo update-rc.d aria2c defaults
重启aria2c服务:
sudo service aria2c restart
这里就配置完了,但是我们看不到下载详细,添加不了任务怎么办讷?
别着急,我们先安装迅雷下载,再安装web服务器为其添加web gui
首先我们下载软件:xware1.0.31
你也可以直接到迅雷官方论坛下载:http://luyou.xunlei.com/forum-51-1.html
我这里将软件直接放到了硬盘里
mkdir /data/software/xunlei
cd /data/software/xunlei
wget https://cdn.yuabanmei.com/files/Xware1.0.31_armel_v5te_glibc.zip
unzip Xware1.0.31_armel_v5te_glibc.zip
sudo chmod -R 777 /data/software/xunlei
/data/software/xunlei/portal
如果顺利的话会出现“the active code is: xxxxxx”,复制xxxxxx
登陆迅雷远程下载网页:http://yuancheng.xunlei.com
在左侧有一个添加下载器,将code填入即可绑定,然后就可以试试下载功能了~
如果你想将迅雷设置开启自启动
sudo vim /etc/rc.local
在 “exit 0” 填入以下内容:
./data/software/xunlei/portal
安装web服务器
我们这里将上面aria2c的web gui放在本服务器内。
我们这里偷懒一下使用军哥的懒人包,官网:https://lnmp.org/
apt-get install screen
screen -S lnmp
wget -c http://dl.lancdn.com/landian/dev/lnmp/lnmp1.3-full.tar.gz && tar zxf lnmp1.3-full.tar.gz && cd lnmp1.3-full
vim lnmp.conf
将里面的 /home 及 /usr 路径更改为 /data 然后开始安装,按住提示操作,鉴于树莓派的性能,编译时间可能会很长,我这边用Rpi 2B测试一般zai4个小时左右。
./install.sh lnmp
按住好之后我们使用
至此,我们完成了树莓派简单的设置,它可以更好的为我们的服务了~