逐步介绍如何在 Raspberry Pi 或任何嵌入式板上使用 swupdate 进行系统更新

Step by Step walk through on how to use swupdate on Raspberry Pi or any Embedded board for system update

Whosebug 社区。我正在尝试设计一个 OTA 更新系统,并希望使用 swupdate 对 raspberry pi 进行更新。我发现关于如何实现它的信息非常有限 none。如果有人能让我知道它是如何完成的,那就太好了。谢谢

这是在 raspberry pi 上使用 SWUpdate 的 OTA 的一个很好的例子。 https://mkrak.org/2018/01/26/updating-embedded-linux-devices-part2/

我必须进行一些更改才能使用最新的 zeus 版本。以下是 ubuntu 18.04 上的分步命令。 (截至 2020 年 3 月 22 日,这始终适用于 master 分支)

安装所有必需的依赖项。 (下面的安装脚本来自 https://medium.com/@shantanoodesai/run-docker-on-a-raspberry-pi-4-with-yocto-project-551d6b615c0b

sudo apt-get update
sudo apt-get install \
     gawk wget git-core diffstat unzip texinfo gcc-multilib \
     build-essential chrpath socat cpio \
     python python3 python3-pip python3-pexpect \
     xz-utils debianutils iputils-ping \
     python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev

克隆所有元层

mkdir yocto && cd yocto
mkdir layers && cd layers
git clone git://git.yoctoproject.org/poky -b zeus
git clone git://github.com/openembedded/meta-openembedded.git -b zeus
git clone https://github.com/agherzan/meta-raspberrypi.git -b zeus
git clone https://github.com/sbabic/meta-swupdate -b zeus

git clone https://github.com/sbabic/meta-swupdate-boards.git -b master

cd ..
. layers/poky/oe-init-build-env build

添加图层。如果失败,请手动修改 build/conf/bblayers.conf 以包括下面指定的所有层

bitbake-layers add-layer ../layers/meta-openembedded/meta-oe
bitbake-layers add-layer ../layers/meta-openembedded/meta-python
bitbake-layers add-layer ../layers/meta-openembedded/meta-networking
bitbake-layers add-layer ../layers/meta-openembedded/meta-multimedia
bitbake-layers add-layer ../layers/meta-raspberrypi
bitbake-layers add-layer ../layers/meta-swupdate
bitbake-layers add-layer ../layers/meta-swupdate-boards

将以下内容添加到 build/conf/local.conf(Raspberry pi 默认情况下不使用 uboot 引导加载程序。swupdate 需要 ext4.gz 映像。)

RPI_USE_U_BOOT = "1"
IMAGE_FSTYPES = "rpi-sdimg ext4.gz"
PREFERRED_PROVIDER_u-boot-fw-utils = "libubootenv"

现在终于烤好了。 meta-swupdate-boards 包含一些硬件的示例。我能够轻松复制 raspberrypi3 板实现以支持 raspberrypi2。

MACHINE=raspberrypi3 bitbake update-image

这应该在 build/tmp/deploy/image/raspberrypi3/.

下创建 core-image-full-cmdline-raspberrypi3.rpi-sdimg 和 update-image-raspberrypi3.swu 文件

让我们将 core-image-full-cmdline-raspberrypi3.rpi-sdimg 镜像烧录到 sd 卡,然后使用 update-image-raspberrypi3.swu 更新它。

使用 Balena Etcher 等 UI 工具或通过命令行更新您的闪存。请注意目标文件系统 /dev/disk2 可能不同。

sudo dd if=core-image-full-cmdline-raspberrypi3.rpi-sdimg of=/dev/disk2 bs=1m

pi 启动后,转到 pi_ipaddress:8080。拖放 update-image-raspberrypi3.swu 更新固件。