github编辑

18.1 树莓派安装 FreeBSD

树莓派是什么?

我们常见的 Android 安卓手机、最新款的 Apple MacBook、电视机顶盒处理器均基于 ARM 芯片。

树莓派就是一块基于 ARM 芯片的开发板,即一块接口丰富(HDMI、I²C、USB 2.0/3.0、I²S、CSI、GPIO、串口、RTC、PWM 风扇、DSI、PCIe(需要转接)、POE 模块等)的电路板,相当于同期的千元红米手机(高通款)。

手机能做的事情,树莓派都能做;手机做不了的事,树莓派大都也能做。一般用于嵌入式开发,如机器人,路由器和监控等等。

在美剧《黑客军团》(Mr. Robot)中,树莓派还充当了渗透工具。当然,上述并非树莓派的初衷——树莓派是英国树莓派基金会的计算机教育产物。


据称,树莓派最初的目标是为了拯救面临废系的剑桥大学计算机科学与技术系。经分析论证,教学主管认为主要原因是现在的小孩子没有便宜且开放的电脑可玩。

“为了守护我们最爱的院系——我们所能做的,就是开发一块每个人都买得起的电路板!!”

尽管《LoveLive!》以失败告终,但树莓派取得了巨大成功!

有必要先测试 U 盘/存储卡的 4K 读写速度

测试方法见其他章节。

自树莓派 3B+ 以降,无需任何改动,系统即可从 U 盘启动:经测试,FreeBSD 12/13/14 均支持,但是速度非常慢:一方面树莓派受到了总线速度极大的限制,本身接口也并非最高速——树莓派到了树莓派 5,才支持了 SDR104(UHS-I)。之前的老款树莓派最高支持 SDR50(UHS-I)。另一方面,某些 U 盘的质量堪忧。

树莓派的 SD 卡接口限制了存储卡的速率,并不会太高,因此使用标称 100MB+ 的存储卡毫无体验——且他们的速度也是无意义的,必须使用所谓的超频读卡器。除此以外,没有任何设备能支持他们所宣称的速度。

对于树莓派来说,4K 随机读写速率才是最重要的。测试标准必须至少达到存储卡的 A2 级别(读 4000 IOPS、写 2000 IOPS)arrow-up-right 备份arrow-up-right

部分 U 盘的 4K 速写速度可能还不如正常的 A2 存储卡

最离谱的是金士顿 DataTraveler 100 G3 USB 3.0 Flash Drive(即 DT100G3),4K 随机竟然是 0。使用起来也非常卡慢。

金士顿 DataTraveler 100 G3 USB 3.0 Flash Drive(即 DT100G3)速写速度测试
金士顿 DataTraveler 100 G3 USB 3.0 Flash Drive(即 DT100G3)速写速度测试

测试数据没有问题,他 4K 写入就是 0。使用起来也符合这个预期水平。

参考文献

ARM 架构

FreeBSD 对不同体系结构的支持按等级划分,目前 ARM 属于 一级架构arrow-up-right 备份arrow-up-right,但在软件支持上仍略逊于 AMD64,某些软件无法通过 FreeBSD ports 以源码形式进行构建。

准备

我们需要准备的硬件和软件分别如下:

  • 一块树莓派板子;

  • 一段网线;

  • 一枚存储卡;

  • 一根 CH340 USB 转串口线,或一台 1080P 显示器(二选一即可);

  • 一台普通路由器,有没有互联网 不重要

  • 如果使用 Windows 10 或 Windows 11 操作系统

    • XShell(软件)

    • WinSCP(软件)

基本安装思路

注意: 刻录完需要挂载 FAT 分区 替换里面的所有文件,否则会启动花屏,替换的文件路径为:

https://github.com/FreeBSD-Ask/FreeBSD-rpi4-firmwarearrow-up-right

FreeBSD ZFS 与树莓派(基于树莓派 4,但 5 亦通用)

如果固件不是最新的,先使用树莓派官方系统(Raspberry Pi)更新下固件!

注意

FreeBSD 默认提供的 IMG 镜像使用 UFS 文件系统。想使用 ZFS 的用户可在存储卡上刻录好 img 正常启动。再插入 U 盘,加载 ZFS 模块。运行命令 bsdinstall 正常安装(安装位置选择 U 盘)即可。如果想在存储卡上使用 ZFS,反过来用 U 盘进行安装即可。

安装前说明:

mmcsd0 为存储卡,da0 为 U 盘。

以下操作将创建一个使用 ZFS 的树莓派 FreeBSD 系统到 U 盘。

使用正常镜像写入存储卡,启动后再插上空白 U 盘,U 盘保持 FAT32,MBR 分区表即可。

查看系统磁盘分区表信息:

一定要先加载 zfs 模块,否则分区会错误 sysctl: unknown oid 'vfs.zfs.min_auto_ashift' 之类的。

启动 FreeBSD 安装程序以开始安装 FreeBSD:

安装后复制固件,但请注意不要覆盖 EFI 分区中的原有文件。

安装后,再显示系统磁盘分区表信息:

后续我在存储卡上又安装了一遍。

树莓派 5

警告

本文不适用于 D0 款以及 16G 内存款。具体可参考 https://rpicn.bsdcn.orgarrow-up-right。若使用新款固件,你可能需要降级之才能使用本文。

经过测试,树莓派 5 8G 使用 UEFIarrow-up-right 备份arrow-up-right 和 FreeBSD 15.0(测试镜像 FreeBSD-15.0-CURRENT-arm64-aarch64-20240628-14fee5324a9b-270986-memstick.img.xz)可以从存储卡、USB 设备或 m2 扩展板(微雪的 PCIe_TO_M.2_HAT+arrow-up-right 备份arrow-up-right)的 m2 NVMe SSD 启动,后者亦兼容 PCIe 3.0 速度。

但是网卡等没驱动(可使用 USB 网卡,具体型号参考第一章相关)。风扇由固件控制,所以默认会一直转,不会停。HDMI 正常。USB 2/3 均正常。经过测试 KDE5 可以正常输出到 HDMI 显示器上。

树莓派 5 与 HAT+

目前市面上出售的树莓派 5 扩展板,请确认其是否符合 HAT+ 标准。如果不符合,通常它只能通过 PCIe FPC 获取电源。但为了符合相关规范,扩展板电力需求应为 5V 2A,即 10W。

树莓派 5 提供的并非标准 PCIe 接口,而是自设计的 FPC 接口,因此需要使用转接器才能将 PCIe 设备连接到树莓派 5。

根据树莓派 5 的排线规范,该接口最多只能提供 5V 1A,即最多 5W 的电力。故,树莓派的 HAT+ 规范要求还应该从 GPIO 接口获取电源。

树莓派 5 8G 编译安装世界和内核

示例采用:FreeBSD 15.0-CURRENTarrow-up-right 备份arrow-up-right,且均使用默认参数。

显示当前 Git 仓库 freebsd-src 的提交哈希值:

  • 编译世界(用户空间)约用时 6 小时。

  • 编译内核约用时 26 分钟。

故障排除与未竟事宜

  • newfs_msdos /dev/gpt/efiboot0:operation not permitted

该问题主要出现在使用 ZFS 存储卡安装系统到 U 盘时,目前尚无解决方案,只能使用另一块采用 UFS 文件系统的 U 盘启动盘来安装 U 盘系统。

可能用到的命令:gpart destroy -F da2 摧毁这一步错误创建的文件系统,以防止系统不识别。

参考文献

附录:使用串口线

建议外接显示器或使用 CH340 USB 串口线,以防系统卡住时无法判断状态。

如使用 USB 串口线,请务必购买采用 CH340 芯片的型号,否则可能出现卡住、无输出、无法输入、驱动安装失败或与 Windows 10 不兼容等问题;

如果使用显示器,屏幕分辨率应不低于 1080P(1920 x 1080),屏幕尺寸不应小于 8 英寸——否则即使接入显示器,也仅能看到屏幕亮起,但无法清晰查看文字。

如果接入了显示器,请尽量确保树莓派和显示器同时通电。显示器可晚于树莓派通电,但不应太晚。

——附 CH340 USB 转串口官方驱动下载地址 https://www.wch.cn/download/CH341SER_EXE.htmlarrow-up-right

附录:FreeBSD 与树莓派 4B 8G 启动失败问题(变通方案)

如果出现彩虹屏导致无法启动,请下载 FreeBSD 14 镜像写入存储卡后,将 FAT 分区内容替换即可(默认分区为隐藏分区,可使用 DiskGenius 激活并分配盘符)

https://github.com/FreeBSD-Ask/FreeBSD-rpi4-firmwarearrow-up-right

修改 config.txt 为以下内容:

最后更新于