树莓派 3B & 刷 OpenWrt 软路由
树莓派,英文名:Raspberry Pi(简写为 RPi,或者 RasPi / RPI)是为学生计算机编程教育而设计,只有信用卡大小的卡片式电脑,其系统基于 Linux。随着 Windows 10 IoT 的发布,我们也将可以用上运行 Windows 的树莓派。
现在的树莓派已经发展到第三代,拥有 4 核 1.2GHz 的处理器及 1GB 的 RAM,配备 4 个 USB 接口,一个 HDMI 接口,板载蓝牙和 WIFI 芯片,使用 MicroSD 卡作为存储媒介,拥有一个 40pin 的 GPIO 接口用于连接外设传感器。目前支持 Raspbian,Ubuntu 等 Linux 系统及 Windows 10 IoT 系统。
入手
买的树莓派到了,银行卡大小的卡片电脑如下图:
准备工作
- 电源:实测用电脑的 USB 接口就能启动,我用的是 iPad 的电源
- 8G 以上的 MicroSD 卡
- 便携显示器(可选)
- Putty(SecureCRT 也可以,用 XShell 无法 SSH 登录,原因未知)
- SD Formatter 4.0(可选)
- 系统镜像(CentOS 7 ARM)
- Win32DiskImager(sourceforge.net)
安装系统
- 格式化 TF 卡
- 运行 Win32DiskImager 将镜像写入 TF 卡
将写好系统镜像的 SD 卡插入树莓派,接好网线、电源,启动,进路由器查看 DHCP 信息,找到对应的 IP;打开 putty,输入 IP 进行 SSH 链接,账户为:pi,初始密码:raspberry;
Putty 登陆提示 - Network error:Connection refused 断电取出 TF 卡,用读卡器在盘符为 boot 的移动盘里建立一个无后缀名字为 SSH 的空白文件即可
为了方便折腾,建议第一时间启用 ROOT 账号,执行以下命令即可:1
2
3
4#设置 root 账号的密码,会让你输入两次新密码
sudo passwd root
#启用 root 账号登录
sudo passwd --unlock root
执行之后,提示:“passwd: password expiry information changed.”,原因是:新版本 ssh 默认关闭 root 登陆,修改一下 ssh 的配置文件即可:1
2
3
4
5
6sudo nano /etc/ssh/sshd_config
#Ctrl + W,搜索 PermitRootLogin without-password
#将其修改为,如果没有直接另起一行输入内容
PermitRootLogin yes
#Ctrl + O,保存;
#Ctrl + X,退出;
执行完之后,用 sudo reboot 命令重启,然后用 root 账户登录,输入 raspi-config,依次选择 Advanced Options -> Expand Filesystem 扩展 SD 卡上可用的空间,使系统资源利用率更高,运行更流畅(其他的按自己喜好设置)。
安装中文
树莓派默认是采用英文字库的,而且系统里没有预装中文字库,所以即使你在 locale 中改成中文,也不会显示中文,只会显示一堆方块。因此需要我们手动来安装中文字体(还有 ttf-wqy-zenhei)。1
2#安装过程中如果碰到(Y/n),都选择 y
apt-get install ttf-wqy-microhei
中文字库安装完成之后,还需要安装一个中文输入法。1
2
3
4
5#先装 fcitx
apt-get install fcitx
#然后装五笔拼音
apt-get install fcitx-table-wbpy
#安装完毕进行配置
输入 raspi-config,依次选择“Internationalisation Options”->“change_locale”; 在弹出的界面中按空格键勾选 “zh_CN.UTF-8 UTF-8”,OK; 再在 Default locale for the system environment:中选择 zh_CN.UTF-8; 配置完成之后,输入 reboot 重启
完成后就可以在 VNC 连接上去后使用中文显示和中文输入法了,切换中文输入法的热键是 Ctrl+Space。1
2
3
4
5#更改软件源,删除原文件所有内容,输入以下内容
nano /etc/apt/sources.list
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ jessie main non-free contrib deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ jessie main non-free contrib
#编辑此文件后,更新软件列表
apt-get update
其他源见:http://wiki.yuwei.cc/software/mirror
改主机名
临时修改1
hostname 主机名
永久修改:1
2
3
4#主机名存储在两个地方,两个地方都要修改
nano /etc/hostname
nano /etc/hosts
#保存后重启
系统精简
1 | #删除 python_games 目录服务器 |
进阶
远程登录
精简版可忽略此步骤1
2
3
4
5
6#安装 VNC 服务
apt-get install tightvncserver
#设置 VNC 服务密码,询问是否设置一个 view-only 密码(自定)
vncpasswd
#启动图形界面的服务,后面跟的是分辨率
vncserver :1 -geometry 1024x768
下载并运行 PC 端的 VNC Viewer,输入 IP:1 及设置好的密码,即可远程登录树莓派的图形界面。
开机启动
1 | nano /etc/init.d/tightvncserver |
Ctrl+O 保存,Ctrl+X 退出,给 tightvncserver 文件进行提权1
2chmod 755 /etc/init.d/tightvncserver
update-rc.d tightvncserver defaults
重启,即可开机启动。
网站服务
推荐组合为: nginx(轻量级的 Web 服务器) + php(Web 脚本语言) + sqlite(最轻量级的数据库)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#查看 nginx 是否存在
which nginx
#查看 php 是否存在
which php
#查看 sqlite 是否存在
which sqlite
#安装 nginx Web 服务器
apt-get install nginx
#启动 nginx
/etc/init.d/nginx start
#nginx 的默认根目录为“/usr/share/nginx/html”
#安装 php 和 sqlite
apt-get install php5-fpm php5-sqlite php-apc
#修改 nginx 的配置文件:
nano /etc/nginx/sites-available/default
#重新加载 nginx 的配置
sudo /etc/init.d/nginx reload1
2
3
4
5
6
7
8
9
10
11
12
13
14
15server {
listen 80;
root /media/www/html;
index index.html index.htm index.php index.nginx-debian.html;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
}
挂载硬盘
挂载 FAT32 格式的硬盘1
2
3
4
5
6
7#创建挂载点
mkdir /mnt/myusbdrive
#编辑 fstab 让移动硬盘开机自动挂载
nano /etc/fstab
#在最后一行添加如下内容
/dev/sda1 /mnt/myusbdrive auto defaults,noexec,umask=0000 0 0
#保存重启,即可生效
sda1 是取决于你的实际情况,a表示第一个硬盘,1表示第一个分区。
umask=0000 0 0
前面四个 0 就是对所有人,可读可写可执行
后面两个 0,第一个代表 dump,0 是不备份;第二个代表 fsck 检查的顺序,0 表示不检查
卸载:sudo umount /mnt/myusbdrive
挂载 NTFS 格式的硬盘(读写方式挂载),默认挂载 NTFS 格式的硬盘只有只读权限,需要借助其它工具实现1
2
3
4
5
6
7
8
9#安装所需软件包
apt-get install fuse-utils ntfs-3g
#加载内核模块
modprobe fuse
#编辑 fstab 让移动硬盘开机自动挂载
nano /etc/fstab
#在最后一行添加如下内容
/dev/sda1 /mnt/myusbdrive ntfs-3g defaults,noexec,umask=0000 0 0
#保存重启,即可生效
测试硬盘挂载是否成功1
cd /mnt/myusbdrive
MiniDLNA
安装卸载1
2
3
4#安装
apt-get install minidlna
#卸载
atp-get remove –purge minidlna
修改配置1
2
3
4
5
6
7
8
9
10
11
12
13nano /etc/minidlna.conf
#可参考修改的项有:
#媒体文件目录:
media_dir=/mnt/myusbdrive/
#数据库目录,MiniDLNA 用的是 SQLite 数据库来索引文件
db_dir=/var/lib/minidlna
#服务器 IP
listening_ip=192.168.1.106
#端口
port=8200
#网络名称,用于其它设备发现当前设备
friendly_name=DLNA
其他命令1
2
3
4
5
6
7
8
9
10
11
12
13
14#让 MiniDLNA 随机启动
update-rc.d minidlna defaults
#启动 MinDLNA 服务
service minidlna start
#当你修改配置文件及媒体资源更新时,需要强制刷新,以便 MiniDLNA 将最新的媒体文件进行索引
service minidlna force-reload
#查看资源个数
http://192.168.1.106:8200/
#取消 MiniDLNA 的开机自动启动
update-rc.d -f minidlna remove
#停止 MiniDLNA 服务
service minidlna stop
#停止 MiniDLNA 所有进程
killall minidlna
OWT
系统
https://downloads.openwrt.org/releases/21.02.0/targets/bcm27xx/bcm2710/
https://downloads.openwrt.org/snapshots/targets/bcm27xx/bcm2710/
https://openwrt.cc/releases/targets/bcm27xx/bcm2710
https://openwrt.cc/snapshots/targets/bcm27xx/bcm2710/
https://github.com/SuLingGG/OpenWrt-Rpi
21.02.2
SNAPSHOT
软件
luci-app-
主题
远程唤醒
luci-app-wol 唤醒有问题,手动自定义命令进行唤醒
1
/usr/bin/wol -i 192.168.2.255 24:5e:be:0c:46:4d