树莓派
树莓派(Raspberry Pi),是一款基于 Linux 的单板机电脑。它由英国的树莓派基金会所开发,目的是以低价硬件及自由软件促进学校的基本计算机科学教育。
它使用的是基于 ARM 架构的博通芯片,和现在大多数智能路由器选用的硬件大体相当,不过最新款的树莓派3 Model B 则使用了 ARM 64 位的处理器,性能上已经能够超越路由器好多了。
购入
其实当时考虑的是想给我们家的梯子提个速,顺带看看有没有什么其他能玩的小东西,反正也不贵,所以就去马云家选购了一套 Respberry 3 Model B。
回来简单拼了一下,感觉还挺好看的,满满的极客塑料感……
由于树莓派的硬盘实际上就是个 MicroSD 卡,考虑到性能原因,官方推荐使用 Class 10 的卡,所以我又在奶茶东购入了一张 32G 的卡,如果说单纯装一个 Linux 的话,32G 足够了。
前前后后算下来,这一套机器花了300软妹币左右吧,综合考虑下来,性价比还是挺高的。
ROM
官方推荐的是一个名为 Respbian 的 Linux 系统,这还算是个挺完备的系统,有图形化界面,各项功能驱动都挺齐全。不过对于我这种压根就没有想把它当电脑用的人来说,图形化界面有点多余。看了下其他支持 ARM 的 OS,还有 Ubuntu 和 CentOS。我对 Ubuntu 向来就没有什么感觉,可能就是因为 apt-get
比 yum
敲起来麻烦。所以只剩下 CentOS 了。
PS:其实支持树莓派的系统还有一些,甚至 Windows 10 的物联网版也是支持的,不过我真想不出来用 Windows 除了玩游戏还能干啥?
装系统
到 CentOS 的官网,扒到一篇 wiki,还专门介绍如何在树莓派上装 CentOS。不过……貌似只有32位的系统,64位那里写着我们熟悉的 Coming Soon
。
唉,无所谓了,按照它的 Quick Start,我们找到它的 32bit image 下载地址,下载下来。
接下来,如果按照 wiki 上描述的步骤,看起来需要用到 XZ Utils
来搞,通过 wiki 上提供的命令将 CentOS 的镜像写入到卡上,还挺简单:
1 | $ dd if=CentOS-Userland-7-armv7hl-Minimal-RaspberryPi3.img of=/dev/mmcblk0 bs=8192; sync |
如果你没有 Linux 系统,可以到 Windows 上下载一个名为 Win32DiskImager
的软件(看来有时候 Windows 还是能做一些有用的事情的)。先解压下载的压缩包,然后通过图形化界面把 CentOS 的镜像写入到卡上。
尽管官方介绍说,1.2A 的电源就可以,但是为了正常稳定使用,还是建议使用 2.5A 的电源,因为一旦火力全开,挂上各种传感器,整个电力需求还是蛮大的。
把写好的卡插进机器,连接上有线网络(因为一开始 Wi-Fi 还没有安装驱动),链接上电源启动机器,大概 5s 就会启动好了,完后可能就需要去路由器里面看分配的 IP 多少,通过 IP 登录到机器上(Windows 下需要个软件,其他系统直接以 root 用户 SSH 就好了,密码就是 centos
)。
另外有网友提到,内存卡写入系统后被重新分区,导致很大一部分空闲分区浪费,需要输入如下命令将空闲分区重新分配:
1 | $ touch /.rootfs-repartition |
另外需要提一点,因为 CentOS 默认没有安装 Wi-Fi 的相关模块,如果说想要使用 Wi-Fi 功能的话,需要执行以下两行命令:
1 | curl --location https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm80211/brcm/brcmfmac43430-sdio.bin > /usr/lib/firmware/brcm/brcmfmac43430-sdio.bin |
1 | curl --location https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm80211/brcm/brcmfmac43430-sdio.txt > /usr/lib/firmware/brcm/brcmfmac43430-sdio.txt |
完成后重启系统。
看下系统信息
登录上来后,第一件事就想看看硬件信息以确定我买的是不是正品(多年以来和 JS 斗争养成的习惯)。
首先看看 CPU:
1 | $ lscpu |
结果出乎我的意料:
1 | Architecture: armv7l |
大哥,说好的 ARM64 呢?怎么变成 ARMv7l 了?
又看了眼 cpuinfo
1 | processor : 0 |
奇怪,最后的 Hardware
竟然变成了树莓派一代的 SoC,不过下面的 Revision
则是三代 B 的系列号。
去网上搜搜,看到一个网友提到了这样一段话。
可能是因为为了兼容旧版本的软件和操作系统,在树莓派3上依然使用了 ARMv7 的32位指令集,即使芯片支持 ARMv8 指令集,但由于考虑到兼容性,现在还没有推出64位的系统和软件来运行,所以固件依然保留32位。
所以说,很有可能是因为 CentOS 目前并没有推出64位的系统,而目前32位的系统则是简单使用了之前的内核。
综合来看,有 Wi-Fi 有蓝牙,系统里面也有树莓派3的各种痕迹,单纯从 CPU 的信息来判定感觉有些太片面。所以就先凑合着吧,记得最初我的第一台笔记本也是用了多年32位的 Windows。
安装一些软件
没了图形化界面,命令行界面必须要好看啊,zsh 和 oh-my-zsh 是必备的,这个简单,直接 yum
加上官方安装方式,几行命令就搞定。
其次,htop,这个漂亮的任务管理器还是平时比较喜欢使用的工具之一,因为有时候通过这个工具能够一眼看到很多进程系统信息。不过目前貌似没有 ARM 版本的二进制直接提供使用,只能尝试通过源码本地编译来安装。可能是因为没有适配的原因吧,在树莓派上使用时不时会崩溃。
kcptun,这个工具是我买树莓派的最初目的,虽说家里智能路由器也是各种性能不错,但是一旦上 kcptun 后,经常就会 CPU 打满,最终被系统杀掉进程。所以最初的打算就是外挂一个树莓派专门跑 kcptun,能够保证性能。最后的结果是,开了4线程来跑,树莓派的系统负荷依然很低。现在就先不细说了,过段时间可以单独说一下这个工具。
未来的使用计划
买完这家伙后,工作上就开始各种忙了,紧接着就是过年,过完年后又忙着杂七杂八的事情,一直到这段时间才有空过来看看这个被遗忘的家伙。
因为单一跑个 kcptun 实在是有点浪费,本来打算搭建个服务,上几个传感器为我监控家里面的温度湿度空气质量啥的,后来发现小米的米家里面都有,还比自己买便宜,而且有个米家的 app 也省得自己搭建服务了,索性就放弃了这个想法。这段时间又看到可以利用树莓派把米家的设备桥接到 iOS 里面的 HomeKit 上,所以准备抽空把这个捣鼓下。
当然了,如果性能还充足,我准备用 Rails 建个服务,跑一些自动化任务或者简单的家庭网络管理后台,这样配合 DDNS 就能在外面掌控家里的情况了,虽说 Ruby 可能会有一些性能上的问题,但是这点小的任务加上对树莓派硬件的大致了解来看,问题应该不大。