From Fedora Project Wiki

< Architectures‎ | ARM‎ | Raspberry Pi

Revision as of 15:52, 17 November 2018 by Pany (talk | contribs) (update translation to 2018-Nov-09 version)

Idea.png
现在 Fedora 所有的稳定版本都可以支持树莓派 2 代和 3 代。最新款的树莓派 3 代 B+ 型还只有 Fedora 28 之后的版本可以支持。使用中如遇问题,请反馈到 ARM 邮件列表或 IRC 频道。

引言

树莓派是一块信用卡大小、基于 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 之前的版本

哪些桌面环境可用?

3D/2D 都可以开箱即用,大部分 Fedora 搭载的轻量级桌面环境都运行良好。这得益于针对视频核心 IV GPU 的开源加速驱动。

会有更多针对硬件的增强支持吗?

会的。新的增强支持即将到来,只要完备就会在标准 Fedora 更新机制中分发。如果有新的重大特性,我们会通过 Fedora MagazineFedora Planet 公布。

关于 树莓派 A/A+ 型、 1 代 B/B+ 型、零/零W(Zero/ZeroW)以及计算模组(Compute Module)的支持情况如何?

这些都不支持!

Fedora 现在不会,将来也不会支持 ARMv6 处理器。近年来我们多次尝试过支持,最好的结果便是基于 Fedora 23 的 Pignus 。更多信息请访问 Pignus 官网。新的计算模组 3(Compute Module 3)发售后我们会跟进支持,因为它基于和树莓派 3 代相同的芯片。

树莓派支持哪些 USB 设备?

大部分 USB-2 兼容设备在 Fedora 上都是支持的。树莓派硬件对于 USB 总线有一些限制,请参考这里的文档

树莓派上板载的 WiFi 和蓝牙支持吗?

WiFi:

树莓派 3 代和 3 代 B+ 上的板载 WiFi 可以在 Fedora 上正常使用。

目前有几个文件你可能需要修改,不过我们暂时还不能参与再分发这些文件。你可以先用板载有线网络启动或者预先在 SD 卡中设置好。在树莓派中你可以执行如下命令,成功后重启系统即可使用 WiFi 了。

树莓派 3 代
sudo curl https://fedora.roving-it.com/brcmfmac43430-sdio.txt -o /lib/firmware/brcm/brcmfmac43430-sdio.txt
树莓派 3 代 B+
sudo curl https://fedora.roving-it.com/brcmfmac43455-sdio.txt -o /lib/firmware/brcm/brcmfmac43455-sdio.txt
sudo curl https://fedora.roving-it.com/brcmfmac43455-sdio.clm_blob -o /lib/firmware/brcm/brcmfmac43455-sdio.clm_blob
通过命令行使用 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 吗?

GPIO 目前尚不能被很好地支持,因为它需要映射的设备树覆盖上。在 F-29 周期以及 Fedora 30 中会对其进行改进。

支持 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 卡插入树莓派,连接串行控制台,通电开机