https://github.com/raspberrypi/rpi-update 的开发仍在继续。 rpi-update 脚本将自动切换到新的存储库。
为您的 Raspberry Pi 获取最新前沿固件和内核的工具。
这仅适用于 Raspberry Pi 操作系统。如果您使用不同的发行版,请咨询维护人员,看看使用 rpi-update 是否安全。
如果发行版附带了自定义内核(例如 BerryBoot),那么它几乎肯定是不安全的。此外,/boot 和 /opt/vc 目录的使用差异可能会使其不安全。
即使在 Raspberry Pi 操作系统上,您也应该只有在有充分理由的情况下才使用它。
这将为您提供最新的前沿内核/固件。总是存在回归的可能性。
当经过充分测试后,错误修复和改进最终将进入新的 Raspberry Pi OS 版本和 apt-get 中。
使用此功能的一个很好的理由是,如果您愿意帮助测试工作,并且愿意冒着破坏的风险并提交错误报告。欢迎这些测试人员。
此外,如果您遇到当前固件中的错误(可能是 github 或论坛上错误的报告者之一)并且已推出修复程序进行测试,那么使用 rpi-update 是获得修复程序的正确方法,直到它进入了新的 Raspberry Pi OS 映像和 apt-get。
始终建议在更新之前进行备份。
要安装该工具,请运行以下命令:
sudo apt-get install rpi-update
要安装该工具,请运行以下命令:
sudo curl -L --output /usr/bin/rpi-update https://raw.githubusercontent.com/Hexxeh/rpi-update/master/rpi-update && sudo chmod +x /usr/bin/rpi-update
然后,要更新固件,只需运行以下命令:
sudo rpi-update
成功更新固件后,您需要重新启动才能加载新固件。
如果您想设置不同的 GPU/ARM 内存分配,请在/boot/config.txt
中定义gpu_mem
。
要升级/降级到特定固件版本,请指定其 Git 哈希(来自 https://github.com/Hexxeh/rpi-firmware 存储库),如下所示:
sudo rpi-update fab7796df0cf29f9563b507a59ce5b17d93e0390
对于您可能想要使用的专家来说,有许多选项。如果您想使用它们,这些都是您必须设置的环境变量。
UPDATE_SELF
默认情况下, rpi-update
每次运行时都会尝试更新自身。您可以通过以下方式禁用此行为:
sudo UPDATE_SELF=0 rpi-update
SKIP_KERNEL
sudo SKIP_KERNEL=1 rpi-update
将更新除kernel.img
文件和内核模块之外的所有内容。请谨慎使用,某些固件更新可能依赖于内核更新。
SKIP_BACKUP
sudo SKIP_BACKUP=1 rpi-update
避免在首次运行时备份 /boot 和 /lib/modules。
SKIP_REPODELETE
sudo SKIP_REPODELETE=1 rpi-update
默认情况下,下载的文件 (/root/.rpi-firmware) 将在更新结束时删除。使用此选项保留文件。
SKIP_VCLIBS
sudo SKIP_VCLIBS=1 rpi-update
将更新除 VideoCore 库之外的所有内容。如果您不希望覆盖本地版本,请使用此选项保留现有的 VideoCore 库。
ROOT_PATH
和BOOT_PATH
sudo ROOT_PATH=/media/root BOOT_PATH=/media/boot rpi-update
允许您执行“离线”更新,即更新当前未从其启动的 SD 卡上的固件。对于将固件/内核安装到非 RPI 自定义映像非常有用。请注意,您必须指定两个选项或都不指定。仅指定一个是行不通的。
FW_SUBDIR
sudo FW_SUBDIR=safe rpi-update
允许将固件安装到 /boot 的子目录中。此功能旨在支持可在config.txt
中使用的os_prefix
设置。默认情况下,FW_SUBDIR 初始化为设备启动时有效的os_prefix
值,以覆盖“正在运行”的固件。要显式安装而不带子目录(安装到 /boot 中),请使用FW_SUBDIR=/
。
BRANCH
默认情况下,从 master 分支克隆固件文件,否则使用指定分支中的文件,例如:
sudo BRANCH=next rpi-update
将使用“下一个”分支。
PRUNE_MODULES
允许您在进行更新时删除未使用的模块目录。将其设置为非零值,它将删除除最新安装的模块之外的所有模块:
sudo PRUNE_MODULES=1 rpi-update
将删除以前安装的模块文件。使用此选项可以释放旧模块更新所使用的磁盘空间。
JUST_CHECK
要获取自上次更新以来 rpi-update 中包含的提交列表,请运行:
sudo JUST_CHECK=1 rpi-update
这不会更新您的固件
GITHUB_API_TOKEN
默认情况下, rpi-update
不会使用自定义 GitHub API 令牌。如果遇到速率限制问题,您可以在命令行上提供 API 令牌:
sudo GITHUB_API_TOKEN=<your API token> rpi-update
RPI_REBOOT
要在成功更新后重新启动,请运行:
sudo RPI_REBOOT=1 rpi-update
您可以使用它来自动更新。
有两个与 SSL 证书相关的可能问题可能会阻止此工具工作。
您的 Raspberry Pi 上的时间可能设置不正确,您可以通过使用 NTP 设置时间来修复此问题。
sudo apt-get install ntpdate
sudo ntpdate -u ntp.ubuntu.com
另一个可能的问题是您可能没有安装ca-certificates
包,因此 GitHub 的 SSL 证书不受信任。如果您使用的是 Debian,则可以通过键入以下内容来解决此问题:
sudo apt-get install ca-certificates
Pi-hole 和类似的基于 DNS 的可能会阻止该工具工作。确保 github.com 域未被阻止。 (例如codeload.github.com)