树莓派,英文名: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 账号吧~
这个也很简单的,只需要执行一下两句命令即可:
# 设置 root 账号的密码,会让你输入两次新密码
sudo passwd root
# 启用 root 账号登录
sudo passwd --unlock root
执行之后,提示:“passwd: password expiry information changed.”,原因是:新版本 ssh 默认关闭 root 登陆,修改一下 ssh 的配置文件即可:
输入 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)。
apt-get install ttf-wqy-microhei
安装过程中如果碰到(Y/n),都选择 y
中文字库安装完成之后,还需要安装一个中文输入法。
- 先装 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。
- 更改软件源
输入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
进阶
远程登录
精简版可忽略此步骤
- 输入
apt-get install tightvncserver
安装 VNC 服务; -
vncpasswd
设置 VNC 服务密码,询问是否设置一个 view-only 密码(自定); -
vncserver :1 -geometry 1024x768
启动图形界面的服务,后面跟的是分辨率; - 打开 PC 端的 VNC Viewer(target="_blank">),输入 IP:1 及设置好的密码,即可远程登录树莓派的图形界面。
开机启动
- 输入
nano /etc/init.d/tightvncserver
,创建 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 文件进行提权
chmod 755 /etc/init.d/tightvncserver
update-rc.d tightvncserver defaults
- 重启,即可开机启动了。
Web 服务器
推荐组合为: nginx(轻量级的 Web 服务器) + php(Web 脚本语言) + sqlite(最轻量级的数据库)
- 检查是否安装
# 查看 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
将以下内容复制到文档最后活着直接覆盖文档:
sserver {
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;
}
}
重新加载 nginx 的配置:sudo /etc/init.d/nginx reload
媒体
挂载硬盘
- 挂载 FAT32 格式的硬盘
# 创建挂载点
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 格式的硬盘只有只读权限,需要借助其它工具实现。
# 安装所需软件包
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
# 保存重启,即可生效
- 测试硬盘挂载是否成功:
cd /mnt/myusbdrive
MiniDLNA
- 安装、卸载 MiniDLNA
# 安装
apt-get install minidlna
# 卸载
atp-get remove –purge minidlna
- 修改配置
# 打开配置文件
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
- 其他命令
# 让 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
其他
改主机名
临时修改:hostname 主机名
永久修改:
主机名存储在两个地方,两个地方都要修改
nano /etc/hostname
nano /etc/hosts
保存后,重启
系统精简
# 删除 python_games 目录服务器
rm -rf python_games
# 删除 opt 目录下的示范代码
sudo rm -rf opt
# 执行清洁
apt-get autoremove
apt-get clean
# 删除所有日志
cd /var/log/
rm find .-type f