树莓派入门

raspberryPi

前言

我一直想要入手树莓派,却一直没有买,因为没有时间折腾。但是阿里云香港服务器真的太贵了啊,只拿来开 SS Server 太浪费了。服务器马上又到期了,我不想再续费了。所以想买个树莓派当服务器,我的个人博客、爬虫之类的 python 脚本等就部署在树莓派上。树莓派到手之后,一次点亮,记录一下过程。

树莓派

官网 https://www.raspberrypi.org

Raspberry Pi (中文名为“树莓派”,简写为 RPi,或者 RasPi / RPI),是一个 Arm 的开发板,为学生计算机编程教育而设计,只有银行卡大小的卡片式电脑,其系统基于 Linux。当前最新版的是树莓派 RASPBERRY PI 3 MODEL B

Raspberry Pi

树莓派能做什么?

就像其他任何一台运行 Linux 系统的台式计算机或者便携式计算机那样,利用Raspberry Pi 可以做很多事情。当然,也难免有一点点不同。普通的计算机主板都是依靠硬盘来存储数据,但是 Raspberry Pi 使用 SD 卡作为“硬盘”,你也可以外接 USB 硬盘。

device

利用 Raspberry Pi 可以编辑 Office 文档、浏览网页、玩游戏,即使玩需要强大的图形加速器支持的游戏也没有问题。Raspberry Pi 的低价意味着其用途更加广泛,将其打造成卓越的多媒体中心也是一个不错的选择。利用 Raspberry Pi 可以播放视频,甚至可以通过电视机的 USB 接口供电等。

下载镜像

去官网的下载地址 https://www.raspberrypi.org/downloads/,下载所需的系统镜像。

我选择了官方的系统 Raspbian OS:

  • 2017-09-07-raspbian-stretch-lite.img (纯终端)
  • 2017-09-07-raspbian-stretch.img (图形界面)

烧录镜像到 SD 卡

查看磁盘

1
2
3
4
5
6
$ df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1 233Gi 222Gi 10Gi 96% 3309169 4291658110 0% /
devfs 192Ki 192Ki 0Bi 100% 664 0 100% /dev
map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home

插上已经插好SD卡的读卡器,然后再次查看磁盘。

1
2
3
4
5
6
7
$ df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1 233Gi 222Gi 10Gi 96% 3309169 4291658110 0% /
devfs 192Ki 192Ki 0Bi 100% 664 0 100% /dev
map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home
/dev/disk2s1 16Gi 1.6Mi 16Gi 1% 0 0 100% /Volumes/sdcard

多出来的最后一个就是 SD 卡的,记住磁盘叫/dev/disk2s1

卸载磁盘

1
2
$ sudo diskutil umount /dev/disk2s1
Volume 21 on disk2s1 unmounted

写入镜像

使用 dd 命令写入镜像至 SD 卡

1
2
3
4
$ sudo dd bs=4m if=/path/to/your/raspbian-jessie.img of=/dev/rdisk2
4125+0 records in  
4125+0 records out
4325376000 bytes transferred in 401.205151 secs (10780958 bytes/sec)
  • dd 命令可以覆写任何分区,如果在指令中指定了错误的设备,有可能会删除原有的操作系统,直接删除了设备上所有的数据,请谨慎填写 of 地址!
  • bs 代表一次写入多大的块,是 blocksize 的缩写,4m一般都没问题,如果不行,试试改成1m。
  • if 参数为下载的镜像的路径,是 input file 的缩写。
  • of 参数为设备地址,是 output file 的缩写。

注意:of 输出文件是设备的原始名称,没有最后的s1,且前面需要加个r,例如/dev/disk2s1对应的输出文件是/dev/rdisk2

启动系统

将 SD 卡插入树莓派卡槽,接通电源,树莓派即可正常启动。

安装

安装VIM

vim默认无法使用,需要重新安装。

1
2
3
4
5
6
7
8
# 更新软件源列表
$ sudo apt-get update
# 更新系统
$ sudo apt-get upgrade
# 删除vim
$ sudo apt-get remove vim-common
# 安装vim
$ sudo apt-get install vim

安装中文字体

RASPBIAN 系统默认不支持中文,需要自己安装。

1
$ sudo apt-get install ttf-wqy-microhei ttf-wqy-zenhei xfonts-wqy

配置ROOT用户

树莓派系统使用的 linux 是 debian 系统,所以树莓派启用 root 和 debian 是相同的。debian 里 root 账户默认没有密码,但账户锁定。

当需要 root 权限时,由默认账户经由 sudo 执行,Raspberry pi 系统中的 root 用户默认没有启用,也不知道密码,需要先进行修改。

默认主机名是 raspberrypi,默认用户是 pi,密码是 raspberry

1
2
3
$ sudo passwd root
Enter new UNIX password:
Retype new UNIX password:

启用 root 用户:

1
2
$ sudo passwd --unlock root
passwd: password expiry information changed.

解锁 root 用户:

1
2
$ su root
$ vim /etc/ssh/sshd_config

PermitRootLogin 的配置修改为 yes

1
2
#PermitRootLogin without-password
PermitRootLogin yes

最后 reboot 重启,就可以 SSH 使用 root 用户登录了。

解决显示问题

我的显示器有 VGA 和 HDMI 两个接口,而我有两条线,一条是 VGA 转 HDMI 给华硕笔记本用,一条是 HDMI 转雷电接口给 Macbook Pro 用。所以我就用 VGA 转 HDMI 来连接树莓派,但是连接显示器后,黑屏了。

解决办法:修改 SD 卡 boot 分区的 config.txt 文件

1
$ vim /boot/config.txt

修改以下参数,其它可以注释:

1
2
3
4
5
6
disable_overscan=1
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=83
hdmi_drive=2
config_hdmi_boost=4

注意:

  • hdmi_safe=1 必须注释掉。否则当 hdmi_safe 设置为1时,hdmi_grouphdmi_mode默认都为1,且不可修改。
  • hdmi_group 要设为2。
    • hdmi_group为1时,对应的是电视规格 CEA 分辨率。
    • hdmi_group为2时,对应的是计算机显示器使用的 DMT 分辨率。
  • hdmi_mode 为想要调整的分辨率,具体根据显示器分辨率自行调整,对应的值如下。

CEA分辨率

以下是 CEA 规定的电视规格分辨率,对应的 hdmi_group 为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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
hdmi_mode=1 VGA
hdmi_mode=2 480p 60Hz
hdmi_mode=3 480p 60Hz H
hdmi_mode=4 720p 60Hz
hdmi_mode=5 1080i 60Hz
hdmi_mode=6 480i 60Hz
hdmi_mode=7 480i 60Hz H
hdmi_mode=8 240p 60Hz
hdmi_mode=9 240p 60Hz H
hdmi_mode=10 480i 60Hz 4x
hdmi_mode=11 480i 60Hz 4x H
hdmi_mode=12 240p 60Hz 4x
hdmi_mode=13 240p 60Hz 4x H
hdmi_mode=14 480p 60Hz 2x
hdmi_mode=15 480p 60Hz 2x H
hdmi_mode=16 1080p 60Hz
hdmi_mode=17 576p 50Hz
hdmi_mode=18 576p 50Hz H
hdmi_mode=19 720p 50Hz
hdmi_mode=20 1080i 50Hz
hdmi_mode=21 576i 50Hz
hdmi_mode=22 576i 50Hz H
hdmi_mode=23 288p 50Hz
hdmi_mode=24 288p 50Hz H
hdmi_mode=25 576i 50Hz 4x
hdmi_mode=26 576i 50Hz 4x H
hdmi_mode=27 288p 50Hz 4x
hdmi_mode=28 288p 50Hz 4x H
hdmi_mode=29 576p 50Hz 2x
hdmi_mode=30 576p 50Hz 2x H
hdmi_mode=31 1080p 50Hz
hdmi_mode=32 1080p 24Hz
hdmi_mode=33 1080p 25Hz
hdmi_mode=34 1080p 30Hz
hdmi_mode=35 480p 60Hz 4x
hdmi_mode=36 480p 60Hz 4xH
hdmi_mode=37 576p 50Hz 4x
hdmi_mode=38 576p 50Hz 4x H
hdmi_mode=39 1080i 50Hz reduced blanking
hdmi_mode=40 1080i 100Hz
hdmi_mode=41 720p 100Hz
hdmi_mode=42 576p 100Hz
hdmi_mode=43 576p 100Hz H
hdmi_mode=44 576i 100Hz
hdmi_mode=45 576i 100Hz H
hdmi_mode=46 1080i 120Hz
hdmi_mode=47 720p 120Hz
hdmi_mode=48 480p 120Hz
hdmi_mode=49 480p 120Hz H
hdmi_mode=50 480i 120Hz
hdmi_mode=51 480i 120Hz H
hdmi_mode=52 576p 200Hz
hdmi_mode=53 576p 200Hz H
hdmi_mode=54 576i 200Hz
hdmi_mode=55 576i 200Hz H
hdmi_mode=56 480p 240Hz
hdmi_mode=57 480p 240Hz H
hdmi_mode=58 480i 240Hz
hdmi_mode=59 480i 240Hz H
H means 16:9 variant (of a normally 4:3 mode).
2x means pixel doubled (i.e. higher clock rate, with each pixel repeated twice)
4x means pixel quadrupled (i.e. higher clock rate, with each pixel repeated four times)

DMT分辨率

以下是计算机显示器使用的分辨率,对应的 hdmi_group 为2。

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
hdmi_mode=1 640x350 85Hz
hdmi_mode=2 640x400 85Hz
hdmi_mode=3 720x400 85Hz
hdmi_mode=4 640x480 60Hz
hdmi_mode=5 640x480 72Hz
hdmi_mode=6 640x480 75Hz
hdmi_mode=7 640x480 85Hz
hdmi_mode=8 800x600 56Hz
hdmi_mode=9 800x600 60Hz
hdmi_mode=10 800x600 72Hz
hdmi_mode=11 800x600 75Hz
hdmi_mode=12 800x600 85Hz
hdmi_mode=13 800x600 120Hz
hdmi_mode=14 848x480 60Hz
hdmi_mode=15 1024x768 43Hz DO NOT USE
hdmi_mode=16 1024x768 60Hz
hdmi_mode=17 1024x768 70Hz
hdmi_mode=18 1024x768 75Hz
hdmi_mode=19 1024x768 85Hz
hdmi_mode=20 1024x768 120Hz
hdmi_mode=21 1152x864 75Hz
hdmi_mode=22 1280x768 reduced blanking
hdmi_mode=23 1280x768 60Hz
hdmi_mode=24 1280x768 75Hz
hdmi_mode=25 1280x768 85Hz
hdmi_mode=26 1280x768 120Hz reduced blanking
hdmi_mode=27 1280x800 reduced blanking
hdmi_mode=28 1280x800 60Hz
hdmi_mode=29 1280x800 75Hz
hdmi_mode=30 1280x800 85Hz
hdmi_mode=31 1280x800 120Hz reduced blanking
hdmi_mode=32 1280x960 60Hz
hdmi_mode=33 1280x960 85Hz
hdmi_mode=34 1280x960 120Hz reduced blanking
hdmi_mode=35 1280x1024 60Hz
hdmi_mode=36 1280x1024 75Hz
hdmi_mode=37 1280x1024 85Hz
hdmi_mode=38 1280x1024 120Hz reduced blanking
hdmi_mode=39 1360x768 60Hz
hdmi_mode=40 1360x768 120Hz reduced blanking
hdmi_mode=41 1400x1050 reduced blanking
hdmi_mode=42 1400x1050 60Hz
hdmi_mode=43 1400x1050 75Hz
hdmi_mode=44 1400x1050 85Hz
hdmi_mode=45 1400x1050 120Hz reduced blanking
hdmi_mode=46 1440x900 reduced blanking
hdmi_mode=47 1440x900 60Hz
hdmi_mode=48 1440x900 75Hz
hdmi_mode=49 1440x900 85Hz
hdmi_mode=50 1440x900 120Hz reduced blanking
hdmi_mode=51 1600x1200 60Hz
hdmi_mode=52 1600x1200 65Hz
hdmi_mode=53 1600x1200 70Hz
hdmi_mode=54 1600x1200 75Hz
hdmi_mode=55 1600x1200 85Hz
hdmi_mode=56 1600x1200 120Hz reduced blanking
hdmi_mode=57 1680x1050 reduced blanking
hdmi_mode=58 1680x1050 60Hz
hdmi_mode=59 1680x1050 75Hz
hdmi_mode=60 1680x1050 85Hz
hdmi_mode=61 1680x1050 120Hz reduced blanking
hdmi_mode=62 1792x1344 60Hz
hdmi_mode=63 1792x1344 75Hz
hdmi_mode=64 1792x1344 120Hz reduced blanking
hdmi_mode=65 1856x1392 60Hz
hdmi_mode=66 1856x1392 75Hz
hdmi_mode=67 1856x1392 120Hz reduced blanking
hdmi_mode=68 1920x1200 reduced blanking
hdmi_mode=69 1920x1200 60Hz
hdmi_mode=70 1920x1200 75Hz
hdmi_mode=71 1920x1200 85Hz
hdmi_mode=72 1920x1200 120Hz reduced blanking
hdmi_mode=73 1920x1440 60Hz
hdmi_mode=74 1920x1440 75Hz
hdmi_mode=75 1920x1440 120Hz reduced blanking
hdmi_mode=76 2560x1600 reduced blanking
hdmi_mode=77 2560x1600 60Hz
hdmi_mode=78 2560x1600 75Hz
hdmi_mode=79 2560x1600 85Hz
hdmi_mode=80 2560x1600 120Hz reduced blanking
hdmi_mode=81 1366x768 60Hz
hdmi_mode=82 1080p 60Hz
hdmi_mode=83 1600x900 reduced blanking
hdmi_mode=84 2048x1152 reduced blanking
hdmi_mode=85 720p 60Hz
hdmi_mode=86 1366x768 reduced blanking

我的 23.5 寸的显示器,选择 hdmi_group=2 hdmi_mode=83 刚好合适,显示完美。

补充

使用 Oneinstack 搭建我的服务器环境,发现 Redis 安装失败了,似乎不支持 ROS。

发现性能很差,原本在阿里云1核1G的云主机需要花10分钟的编译任务,在树莓派上花了50分钟才跑完。

如果只是放一些静态页面例如博客,可以考虑入手。如果想放一些类似 JavaEE 的大项目,内存不够用,CPU运算也慢,就算了吧。还有,当服务器的话,最好选择 CentOS 系统,并且不要装图形界面,省系统空间,也省性能开销。而实时也证明,想拿树莓派搭建家庭影院还是太弱了,至少我看视频总会感觉有点卡。

CentOS 镜像CentOS-Userland-7-armv7hl-Minimal-1708-RaspberryPi3.img.xz

后话

总结一下,树莓派,体积小,性能一般,可以当开发测试服务器,不适用于生产环境以及大型项目的部署。

最后使用 linux_arm 版本的 frp,使用端口映射,成功让我的树莓派服务器上线了。暂时就先捣鼓到这里,没时间再搞了,以后有空再继续学做机器人啥的。

  • 本文作者: Bingo
  • 本文链接: https://blog.bingo.ren/52.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!