1. 需求
用 PC 当 Server 测试环境,费电!挖出吃灰多年的树莓派 Model B Rev 2 000f,打算用它跑 ipfs!
2. 系统选型
- 
较熟悉的 CentOS、FreeBSD、Ubuntu Server、Windows IoT 的当代主流版本都不支持这款古老的树莓派。 
- 
ArchLinux 支持,然而稣个人认为 ArchLinux( 属于 Linux 中的邪教)不适合当 Server。
- 
尝试刷 OpenWRT,发现即使设置密码,本地控制台也是没密码就能登录。这不太安全,虽然本地就是不安全的,但别的系统可不是这么设计的! 
- 
还是官方的 Raspbian Buster Lite 吧! 
3. 安装系统
主要参考官方文档:
- 
Setup:选个 16GB 的 SD 卡。 
- 
Installing operating system images:用官方 Raspberry Pi Imager 工具把系统镜像刷到 SD 卡。 
- 
接 HDMI 显示,通电。首次启动,系统会自动对 SD 卡的分区进行扩容,使第二个分区扩满未分配空间。 
4. 配置系统
通过 sudo raspi-config 做基本配置:
- 
进“本地化”把默认语言 en_GB.UTF-8 去掉,勾选 en_US.UTF-8。 
- 
键盘布局改为通用 105 键(国际)美国布局(默认的英国布局下按 | 会变 ~)。 
- 
时区改为当地。 
- 
改机器名(如果您有多个树莓派,不改会重名),稣将之改为 rp1b。 
- 
改 pi 用户的密码。 
- 
开启 SSH,插上网线或者 USB 无线网卡,就可以从别处远程登录它了。 
5. 配置国内 apt 源
| 1 | sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak | 
6. 安装 Go 编译器
打算直接在树莓派上编译,所以要先在树莓派上安装编译环境。不过不要通过 sudo apt install golang 安装,因为截至今天(2020-03-28),这命令安装的是 1.11.6 版,这对 go-ipfs 项目来说太低了。
到 golang 官网下载 ARMv6 安装包,目前最新版本是 1.14.1。
压缩包里是有一个 go 文件夹的,所以只要解压到 /usr/local/ 下即可。
| 1 | # aria2 比 wget 强大 | 
7. 编译项目
| 1 | git clone https://github.com/ipfs/go-ipfs | 
有很多依赖库需要下载,开始漫长等待……如果代码都下载完,则 make build 的输出为:
| 1 | go version go1.14.1 linux/arm | 
最后一行会卡很久!em……用高性能机器来交叉编译才是正确的方式!
8. 在 macOS 上编译树莓派程序
树莓派的 CPU 架构是 armv6l,所以用以下命令编译:
| 1 | CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=6 make build | 
在 MBP15 上编译快很多!(前面纯属折腾!)编完复制到树莓派:
| 1 | scp ./cmd/ipfs/ipfs pi@rp1b:/home/pi/ | 
在树莓派上测试:
| 1 | pi@rp1b:~ $ uname -a | 
 如果您使用微信,也可以关注公众号 UMU618,在公众号文章里评论。
如果您使用微信,也可以关注公众号 UMU618,在公众号文章里评论。