引言
树莓派是一块信用卡大小、基于 ARM 的单板计算机(SBC)。目前 Fedora 的发行版本都可以原生支持树莓派 2 代和 3 代 B 型,树莓派 3 代 B+ 型还只有 Fedora 29 可以支持,这些都无需使用第三方内核或脚本修改官方镜像。本文将介绍如何上手,以及关于支持情况会有哪些常见问题(FAQ)等。
支持的硬件
树莓派 2 代和 3 代 B 型。Fedora 29 可以支持树莓派 3 代 B+ 型。
前期准备
- 树莓派 2 代和 3 代 B 型或 3 代 B+ 型
- 高质量的 SD 卡 ( eLinux 有一份兼容性列表)
- HDMI 显示器或电视,一副 USB 键盘和鼠标
- 合适的供电装置。 树莓派 2 代建议至少 2A, 3 代建议至少 2.5A。 详情请访问 [1]
制备 SD 卡还需要:
- 一台运行 Windows 或 macOS 或 Linux 系统的电脑
- SD 读卡器
下载 Fedora ARM 镜像
Fedora 已经原生支持树莓派,关于目前的特性请阅读 FAQ 。
支持 ARMv7 架构的镜像
Fedora 29 镜像可以从这里下载:
支持树莓派 3 代 aarch64 架构的镜像
Fedora 29 镜像可以从这里下载:
制备 SD 卡
你可以很容易地在 Fedora 或其他 Linux 发行版,或者 macOS 、Windows 上将镜像写入 SD 卡中。默认设置会提供 HDMI 显示器上的用户可视界面和对键盘鼠标的支持。如果你想输出到串行控制台,请参考 FAQ 中的这一部分.
Fedora 或其他 Linux 发行版
脚本化
- 使用 arm-image-installer 安装:
dnf install -y arm-image-installer
按照如下操作写入镜像:
$ sudo arm-image-installer 用法: arm-image-installer <选项> --image=IMAGE - xz 压缩镜像文件名 --target=TARGET - 目标板 --media=DEVICE - 介质设备文件 (/dev/[sdX|mmcblkX]) --selinux=ON/OFF - 按需要启用(ON)或关闭(OFF) SELinux --norootpass - 移除 root 密码 -y - 后续询问都选择「是」,不需要再次确认 --version - 显示版本并退出 --resizefs - 重新调整 root 文件系统大小以适配介质设备文件 --addconsole - 添加系统控制台到 extlinux.conf --addkey= - 后接 ssh 公钥的路径 示例: arm-image-installer --image=Fedora-Rawhide.xz --target=Bananapi --media=/dev/mmcblk0 关于支持的板型,请参考 SUPPORTED-BOARDS 文件。
对于树莓派 2 代请使用
--target=rpi2
对于树莓派 3 代(B/B+ 型)请使用
--target=rpi3
手动
xzcat Fedora-IMAGE-NAME.raw.xz | sudo dd status=progress bs=4M of=/dev/XXX # 你的介质的路径(硬件不同可能会有差异,一般是 sdX 或 mmcblkX )
macOS
树莓派基金会提供了一些友好的说明,会指导你如何使用 macOS 写入镜像。 你只需简单地替换步骤中的文件路径和文件名即可。
微软 Windows
树莓派基金会提供了一些友好的说明,会指导你如何使用 Windows 写入镜像。 你只需简单地替换步骤中的文件路径和文件名即可。
调整 root 分区大小
为了压缩下载文件的体积,root 分区已被尽可能地调至最小。你需要手动重新调节。未来理想状态下我们也希望这一步骤可以被自动化(很棒的社区项目想法!)。
在首次启动前调整
最简单的方法就是在首次启动 Linux 系统前使用 gparted 调整分区大小:
gparted /dev/XXX
初始化启动后调整
另一种机制就是在你启动树莓派并完成初始化建立帐户后进行调整。
# 扩增第 3 个分区(本示例中为 mmcblk0 ) growpart /dev/mmcblk0 3 # 扩展卷以使用磁盘剩余空间 resize2fs /dev/mmcblk0p3 # 调整 armhfp 服务器(server)版镜像的 root 分区(由于使用了 xfs 文件系统) xfs_growfs -d / # 针对 AArch64 服务器(server)版镜像的步骤 # 扩增第 3 个分区(本示例中为 mmcblk0 ) growpart /dev/mmcblk0 3 # 调整物理卷(physical volume) pvresize /dev/mmcblk0p3 # 扩增 root 文件系统以使用刚刚添加到卷中的空间 lvextend -l +100%FREE /dev/fedora/root # 调整服务器(server)版镜像的 root 分区(由于使用了 xfs 文件系统) xfs_growfs -d /
首次启动树莓派上的 Fedora
- 将 SD 卡插入树莓派。
- 确保你的键盘、鼠标、网线、显示器已正确连接。
- 连接树莓派电源开机。
- 你会看到 Fedora 开始启动,最后会显示「初始化设置向导」(Initial setup wizard)。
- 按照向导设置语言、时区并且创建用户。
- 你会看到登录提示或开始向导(具体情况会由于你选择的桌面环境或定制版本的不同而有所差异)。
应用更新和安装软件
如果你执行的是标准化的安装步骤,那么在初始化设置完成之后,无需其他特殊操作,你就可以正常安装或升级软件。而且普通桌面环境下的升级机制,如 dnf 、gnome-software 或其他图形界面升级系统程序都可以正常支持。
寻求帮助与报告问题
如果出现异常该去哪里寻求帮助呢?以下是 Fedora 常规支持的论坛:
常见问题( FAQ )
为什么当我启动树莓派后显示器上会出现「彩虹条」?
多种原因可能会导致这种情况,常见以下三种:
- 电源供电不足。请参考上述 前期准备部分。
- 没有安装系统。请检查 SD 卡是否正确安装且系统亦正确写入。
- 树莓派版本错误。由于 Fedora 不支持 ARMv6 芯片,所以在树莓派 1 代或树莓派零(Raspberry Pi Zero)上会出现此类错误。
- Fedora 版本不支持,例如在树莓派 3 代 B+ 型上使用了 Fedora 29 之前的版本
电源供应
最常遇到的一个问题通常是电源供应不够造成的。树莓派 3 代系列需要 2.5W 以上的电源供应器,尤其是在使用 Fedora 29 的时候,因为我们支持了更高的 CPU 频率,而这势必会需要更高的电力支持。在以前貌似还能正常运作的电源供应器,如果到了 Fedora 29 出了问题,就是这个缘故。
哪些桌面环境可用?
3D/2D 都可以开箱即用,大部分 Fedora 搭载的轻量级桌面环境都运行良好。这得益于针对视频核心 IV GPU 的开源加速驱动。
会有更多针对硬件的增强支持吗?
会的。新的增强支持即将到来,只要完备就会在标准 Fedora 更新机制中分发。如果有新的重大特性,我们会通过 Fedora Magazine 或 Fedora Planet 公布。
关于 树莓派 A/A+ 型、 1 代 B/B+ 型、零/零W(Zero/ZeroW)以及计算模组(Compute Module)的支持情况如何?
这些都不支持!
Fedora 现在不会,将来也不会支持 ARMv6 处理器。近年来我们多次尝试过支持,最好的结果便是基于 Fedora 23 的 Pignus 。更多信息请访问 Pignus 官网。对于计算模组 3(Compute Module 3,CM3)的支持,上游已经加入到 4.20 内核之中了,我们也会在 Fedora 30 的时候支持 CM3 及其衍生设备。
树莓派支持哪些 USB 设备?
大部分 USB-2 兼容设备在 Fedora 上都是支持的。树莓派硬件对于 USB 总线有一些限制,请参考这里的文档。
树莓派上板载的 WiFi 和蓝牙支持吗?
Wi-Fi:
树莓派 3 代和 3 代 B+ 上的板载 WiFi 可以在 Fedora 29 上可以开箱即用。之前在 aarch64 架构上使用 Wi-Fi 有一个 bug,已经在 4.19.2-301 中得以修复。最新的内核/linux-firmware 固件同样支持最先的稳定发行版本。
通过命令行使用 Wi-Fi
如果你是通过最小化镜像或服务器(server)镜像安装的,那么你可以通过命令行来配置设备使用 Wi-Fi:
# 显示网络列表 nmcli device wifi list # 连接 nmcli device wifi connect $SSID --ask
蓝牙:
蓝牙正在支持情况良好,也比较稳定了。设备有时会自带一个通用蓝牙地址,不过基本运行良好,无需进行配置。
声音正常吗?
Fedora 中包含了对 HDMI 音频输出的支持,但是模拟端口尚不支持。 USB 接口的音频输出应该也可以良好地支持。
外接摄像头可用吗?
暂不支持。 对流媒体和专用媒体加速器的支持尚需时日。
加速媒体解码可用吗?
不可用。目前还没有上游核心支持,而且其所需的多项内核子系统仍有待支持。
HDMI-CEC 可用吗?
可用。目前已经获得了上游的新的 CEC 支持。可以看到有一个 /dev/cec0 的字符设备,v4l-utils 包中只要是支持使用 rc-cec 键位布局的 IR 遥控的应用都可以访问,命令行下也有一个 cec-ctl 工具可用。
树莓派触摸屏支持吗?
上游正在做针对官方树莓派触摸屏的支持工作,从 4.10 内核已经开始初步支持了,参见 tracked upstream。Fedora 很快会进行审阅补遗。上游尚未发行触摸屏驱动。另外目前暂无计划支持其他触摸屏。
复合端子输出支持吗?
当前 Fedora 稳定发行版暂不支持,不过上游的 4.10 内核已经加入核心支持了。部分补丁尚有缺失,我们会尽快加入到 Fedora 内核之中。
扩展板 HATs 支持吗?
简而言之,还不支持。
个中缘由说来话长。Fedora 自带的驱动可以支持大部分 40 针 HAT 连接器的硬件接口。包含在大量通用 HAT 中的硬件驱动也同样在 Fedora 中启用支持了。支持 HAT 扩展板主要是需要使用设备树覆盖。内核与 u-boot 2016.09 引导器支持手动加载覆盖。目前上游尚未就自动加载这些覆盖的方法达成共识,也就意味着不能通过一个「覆盖管理器」(又名 Cape 管理器或其他名字)来读取 EEPROM ID 并自动加载适当的覆盖。同样也未就构建二进制 blob 覆盖的 dtc(设备树编译器)扩展和覆盖文件的确切格式达成共识。目前有一大批人正在着力解决该问题,以使 Fedora 可以尽快更好地支持 HAT(树莓派),Cape(BeagleBone),DIP(C.H.I.P)和 Mezzanine(96 板)。
首先着重于支持的 HAT 是树莓派官方的传感器 Sense HAT。手动构建加载覆盖以提供板载设备访问的过程会被记录成文档,并作为示例方法,展示如何临时手动实现此类需求及其过程原理。相关文档在完成后会第一时间添加在这里。
使用 config.txt
config.txt 目前只能用于基本的配置。由于开源 vc4 GPU 驱动的使用,大部分视频配置已经在 Linux 中完成了。
目前还不支持使用 config.txt 对HATs 进行配置,不过我们正在努力研究。
支持设备树覆盖吗?
目前只能在 u-boot 和 Linux 内核中对覆盖基础性地支持,但是覆盖管理器还没有进入到上游之中。
支持 GPIO 吗?
现在使用了 libgpiod 并辅以其他的实用工具,可以支持 GPIO 了。但是 RPI.GPIO 目前尚不支持。
支持 SPI 吗?
是的,支持基础 SPI 。
支持 I2C 吗?
是的,支持基础 I2C 。
我该如何使用串行控制台?
由于需要设备运行于低速状态,在树莓派 2 代和 3 代上串行控制台是默认禁用的。如需连接 USB 和 TTL 适配器请参考 Adafruit 上的这篇教程。你需要一条 3.3 伏特的 USB 转 TTL 串行线,例如 Adafruit 上的这个。
如需启用串行控制台请分别参照树莓派 2 代和 3 代相应的步骤,两者是有些许差异的:
树莓派 2 代:
- 在 PC 上插入 micro SD 卡
- 在 VFAT 分区编辑 config.txt 文件并取消注释 enable_uart 这一行:
enable_uart=1
- 在 boot 分区编辑 extlinux/extlinux.conf 并添加 "console=tty0 console=ttyAMA0,115200" 到最后一行,最终应该变成类似这样:
append ro root=UUID="LARGE UUID STRING OF TEXT" console=tty0 console=ttyAMA0,115200
- 安全缷载 micro SD 卡
- 将 micro SD 卡插入树莓派,连接串行控制台,通电开机
树莓派 3 代:
- 在 PC 上插入 micro SD 卡
- 在 VFAT 分区编辑 config.txt 文件并取消注释 enable_uart 这一行:
enable_uart=1
- 在 boot 分区编辑 extlinux/extlinux.conf 并添加 "console=tty0 console=ttyS0,115200" 到最后一行,最终应该变成类似这样:
append ro root=UUID="LARGE UUID STRING OF TEXT" console=tty0 console=ttyS0,115200
- 安全缷载 micro SD 卡
- 将 micro SD 卡插入树莓派,连接串行控制台,通电开机