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 |