树莓派,英文名: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
6
sudo 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
2
3
4
5
6
7
8
9
10
#删除 python_games 目录服务器
rm -rf python_games
#删除 opt 目录下的示范代码
sudo rm -rf opt
#执行清洁
apt-get autoremove
apt-get clean
#删除所有日志
cd /var/log/
rm find .-type f

进阶

远程登录

精简版可忽略此步骤

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
nano /etc/init.d/tightvncserver

#!/bin/sh
### BEGIN INIT INFO
# Provides: tightvncserver
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop tightvncserver
### END INIT INFO
# More details see:
# http://www.penguintutor.com/linux/tightvnc
### Customize this entry
# Set the USER variable to the name of the user to start tightvncserver under
export USER='pi'
### End customization required
eval cd ~$USER
case "$1" in
start)
# 启动命令行。此处自定义分辨率、控制台号码或其它参数。
su $USER -c '/usr/bin/tightvncserver -depth 16 -geometry 1024x768 :1'
echo "Starting TightVNC server for $USER "
;;
stop)
# 终止命令行。此处控制台号码与启动一致。
su $USER -c '/usr/bin/tightvncserver -kill :1'
echo "Tightvncserver stopped"
;;
*)
echo "Usage: /etc/init.d/tightvncserver {start|stop}"
exit 1
;;
esac
exit 0

Ctrl+O 保存,Ctrl+X 退出,给 tightvncserver 文件进行提权

1
2
chmod 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 reload

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server {
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
13
nano /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

软件

image.png

luci-app-

主题

luci-theme-infinityfreedom

luci-theme-darkmatter

luci-theme-rosy

luci-theme-opentopd

远程唤醒

luci-app-wol 唤醒有问题,手动自定义命令进行唤醒

image.png

1
/usr/bin/wol -i 192.168.2.255 24:5e:be:0c:46:4d